【发布时间】:2017-10-17 17:56:27
【问题描述】:
我目前正在尝试自动化部署过程,涉及 3 台不同的机器:
- userA@hostA, pwdA
- userB@hostB, pwdB
- userC@hostC, pwdC
这是我想要执行的场景,使用 Python 的 Fabric 库(我是新手):
def deploy():
execute(taskA, hosts=[hostA])
execute(taskB, hosts=[hostB])
execute(taskC, hosts=[hostC])
我尝试像这样设置变量 env.passwords :
env.passwords = {'userA@hostA:22':pwdA, 'userB@hostB:22':pwdB, 'userC@hostC:22':pwdC}
但这会使 SSH 连接挂起。
我目前的解决方法是在每次调用execute 之前修改变量env.user 和env.password(我也可以在taskA、taskB 和taskC 的开头这样做)。我真的不觉得这很优雅,完全不符合 Fabric 的精神。
如果有人遇到这种情况,在尝试使用env.passwords dict 时发现他/她自己的 SSH 连接挂起,我就是你的了!当然,如果有人已经设法进行更优雅的多主机密码处理,我会很高兴听到任何提示。
【问题讨论】: