Я пытаюсь получить голову вокруг ткани.ткань для «дерева», как развертывание
у нас разные машины:
+--+ b2b (+config)
+------+ api --+
| +--+ b2c (+config)
|
| +---+ service1 (+config)
| |
| +---+ service2 (+config)
all +---------+ web --+
| +---+ service3 (+config)
| |
| +---+ service4 (+config)
|
|
+------+ db (+config)
из командной строки я хочу, чтобы добиться чего-то вроде этого:
fab -R prod prepare:all
здесь -R прод определяет пользовательские и целевые хосты, что-то вроде этого:
'prod':
{
'user': 'some_prod_user',
'hosts': ['some_prod_host1', 'some_prod_host2']
}
Эта карта рассматривается как конфигурация и прикреплена к каждому узлу.
сейчас, когда я выполняю эту команду, я хочу, чтобы этот узел «все» вызывал все его дети, и они называют своих детей, пока все не выполнит задачу подготовки.
fab -R prod prepare:api.b2b
должен только подготовить узел b2b, не более того.
Я уже построил все это в python (иерархия объектов) и так далее.
проблема: как я могу построить весь словарь «env», когда каждый подкласс работает, это метод «подготовить».
В соответствии с моделью исполнения вся «env.host_string» уже создана, как только я дойду до подклассов, и я не могу переопределить их.
так что это оставляет мне мышление - это ткань подходящего инструмента для меня?
любая помощь очень ценится.
веселит Marcel
EDIT
, похоже, может попробовать что-то вроде:
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. Я также могу назвать каждый узел отдельно.
Что вы думаете?
Marcel