我目前正试图自动部署过程中,涉及3台不同的机器:的Python面料:在具有不同的密码不同主机上执行的功能,在同一个脚本
- 用户A @玉簪,PWDA
- 用户B @hostB,PWDB
- 用户C @ hostC,pwdC
这是我想执行,使用Python的面料库(到我新的)场景:
def deploy():
execute(taskA, hosts=[hostA])
execute(taskB, hosts=[hostB])
execute(taskC, hosts=[hostC])
我试图设置变量env.passwords
这样的:
env.passwords = {'[email protected]:22':pwdA, '[email protected]:22':pwdB, '[email protected]:22':pwdC}
但它使SSH连接挂。
我目前的解决方法是在每次调用execute
之前修改变量env.user
和env.password
(我也可以在taskA,taskB和taskC的开头执行此操作)。我真的不觉得这是非常优雅的,完全不在Fabric的精神之中。
如果有人遇到过这种情况,在尝试使用env.passwords
字典时发现他/她挂着SSH连接,我就是你的!当然,如果任何人已经设法做出更优雅的多主机密码处理,我会很高兴听到任何提示。
你好,@ jq170727,谢谢你的回答,并且很抱歉我迟到的回复! 当我们通过公钥/私钥对处理安全性时,我确认您的回答正常工作! 但是,在我的情况下,我必须坚持不安全的方式,目前无法控制这一点。然而,我找到了解决我的问题的方法,我将在上面的答案中描述 –