假设我有一份要提供的主机列表:
env.hosts = ['host1', 'host2', 'host3']
env.password = ['password1', 'password2', 'password3']
它对我不起作用..我不想只给主机并为每个主机提供密码。我想为每个主机设置密码,它应该获取密码并部署我的网站而不需要密码。
我该怎么做?
答案 0 :(得分:0)
您最好的选择是:
注意:密码密钥必须为user
@ location
:port
,否则无法使用。
fabfile.py
from fabric.api import env, task, run
@task
def environments():
env.hosts = ['user1@10.99.0.2', 'user2@10.99.0.2', 'user3@10.99.0.2']
env.passwords = {'user1@10.99.0.2:22': 'pass1', 'user2@10.99.0.2:22': 'pass2', 'user3@10.99.0.2:22': 'pass3'}
@task
def echo():
run('whoami')
然后测试:
$ fab environments echo
[user1@10.99.0.2] Executing task 'echo'
[user1@10.99.0.2] run: whoami
[user1@10.99.0.2] out: user1
[user1@10.99.0.2] out:
[user2@10.99.0.2] Executing task 'echo'
[user2@10.99.0.2] run: whoami
[user2@10.99.0.2] out: user2
[user2@10.99.0.2] out:
[user3@10.99.0.2] Executing task 'echo'
[user3@10.99.0.2] run: whoami
[user3@10.99.0.2] out: user3
[user3@10.99.0.2] out:
Done.
Disconnecting from user2@10.99.0.2... done.
Disconnecting from user1@10.99.0.2... done.
Disconnecting from user3@10.99.0.2... done.