На веб-сайте веб-сайт приведен пример:
from fabric.api import env
env.roledefs = {
'web': {
'hosts': ['www1', 'www2', 'www3'],
'foo': 'bar'
},
'dns': {
'hosts': ['ns1', 'ns2'],
'foo': 'baz'
}
}
Насколько я могу судить по документации, эта настройка должна дать команде env dict "foo" значение "bar" при выполнении на хостах "www1", "www2", "www3". Я не могу получить это поведение, хотя ткань правильно определяет хосты. Пример fabfile:
env.foo = 'WRONG'
@task()
def set_role():
env.roles.append('web')
@task()
def print_foo():
print env.foo
Пример команды:
fab set_role print_foo
Неожиданный вывод:
[www1] Executing task 'print_foo'
WRONG
[www2] Executing task 'print_foo'
WRONG
[www3] Executing task 'print_foo'
WRONG
Done.
Неужели я не понимаю цели этого? Как я могу сделать это так, чтобы один сервер видел другое значение для ключа, а затем другое без особых проблем?
Я использую ткань 1.10.0