我想讓我的頭繞着面料。面料「樹」像部署
,我們有不同的機器:
fab -R prod prepare:all
這裏-R督促定義用戶和目標主機,這樣的事情:
+--+ b2b (+config)
+------+ api --+
| +--+ b2c (+config)
|
| +---+ service1 (+config)
| |
| +---+ service2 (+config)
all +---------+ web --+
| +---+ service3 (+config)
| |
| +---+ service4 (+config)
|
|
+------+ db (+config)
從我想要實現這樣的命令行
'prod':
{
'user': 'some_prod_user',
'hosts': ['some_prod_host1', 'some_prod_host2']
}
此映射被視爲配置並附加到每個節點。
現在當我執行這個命令時,我希望節點「全部」調用它的所有子節點,並且他們調用子節點,直到所有節點都執行完任務準備。
fab -R prod prepare:api.b2b
應該只准備B2B節點,僅此而已。
我已經在Python(對象層次結構)等中構建了整個事情。
問題:如何在每個子類運行時構建整個'env'字典,這是'準備'方法。
根據執行模型,當我到達子類並且我不能重新定義它們時,整個'env.host_string'就已經建立了。
所以這讓我覺得 - 織物是我的正確工具?
任何幫助高度讚賞。
歡呼 燙髮
編輯
看起來像它可以嘗試像:
all
prepare.sh
execute.sh
- api
prepare.sh -> calls [b2b|bc2]/prepare.sh
execute.sh -> calls [b2b|bc2]/execute.sh
- b2b
fabfile.py
prepare.sh -> invokes fab
execute.sh -> invokes fab
- b2c
fabfile.py
prepare.sh -> invokes fab
execute.sh -> invokes fab
- web
prepare.sh
execute.sh -> invokes fab
- service1
fabfile.py
prepare.sh -> invokes fab
execute.sh -> invokes fab
- service2
fabfile.py
prepare.sh -> invokes fab
execute.sh -> invokes fab
... you get the idea
現在我能叫prepare.sh在頂層和向下級聯兒童連鎖店。每個孩子都會調用所有的子模塊prepare.sh。我也可以單獨調用每個節點。
你覺得呢?
燙髮