我有一个fabfile的问题。我有下一个脚本
temp = []
rolesdef = { server1: [user@server.com],
server2: [user@server2.com, user@server3.com]
}
@task
@roles('server1')
def first():
...do something...
temp = something
@task
@roles('server2')
@parallel
def second():
...do something...
run(temp)
我如何使用" temp"在second()中定义的第一个()? 另外,我想在一次执行fabfile期间在server1上执行first(),在server2上执行second()。
我应该使用execute()但是如何设置auth的密码与#34; hosts"?
感谢您的帮助。
答案 0 :(得分:1)
您可以使用env来共享temp,并使用with_setting装饰器来更改密码和用户 -
from fabric.api import env
from fabric.decorators import with_settings, roles, task
rolesdef = { "server1": ["server.com"],
"server2": ["server2.com", "server3.com"]
}
connection = { "server1": {"user": "user1", "password": "123"},
"server2": {"user": "user2", "password": "456"}
}
@task
@roles('server1')
@with_settings(**connection["server1"])
def first():
...do something...
env.temp = something
@task
@roles('server2')
@with_settings(**connection["server2"])
@parallel
def second():
...do something...
run(env.temp)