Как использовать python -fabri c, когда настройки являются иерархическими по своей природе. например, когда одна система имеет несколько конечных точек сети, вся наша сеть доступна через разные порты. Вполне вероятно, что в будущем у нас будет больше service_points, которые можно будет динамически обнаруживать, особенно через их dhcp-IP, через некоторые файлы в файловой системе, когда они находятся в сети.
ниже - это массив настроек в моей топологии. Здесь S1 - это одна установка с несколькими точками обслуживания.
setups = {
'S1' : {
'service_point_1' : [ ip1, user, password, port1 ],
'service_point_2' : [ ip2, user, password, port2 ],
},
'S2' : {
'service_point_1' : [ ip1, user, password, port1 ],
'service_point_2' : [ ip2, user, password, port2 ],
},
}
Я пробовал играть с ролевыми определениями, но API стал очень сложным в программировании. Я попытался создать задачу setupname, которая инициализирует roledefs, но API, который обменивается данными между S1 и S2, не работает.
@task
def pingcall(ipx, ipy):
run('ping ipx to ipy')
@task
def setupname(name):
env.__name__ = name
env.roledefs.update(setups[name])
@task
def ping_neighbor(to=None):
ipy = env.setups[to][0]
ipx = socket(gethost(env.setups[env.__name][0])
pingcall(ipx, ipy)
. . .
предоставляет команду как
fab -f thislib.py setupname:S1 ping_neighbor:S2
Любая идея, как я могу используйте python -fabri c более эффективно, чем API остается простым ??