0

これを行うことで、ホストにファブリックを割り当てることができることを知っています:

env.hosts = ['host1', 'host2']

しかし、私はこれを行うことができますか?

myList = ['host1', 'host2']
env.hosts = myList

Boto (Amazon AWS から) を使用して「public_dns_name」のリストを取得し、それらのサーバーでコマンドを実行したいと考えています。サーバー リストは動的になる可能性があるため、ホスト環境変数を静的ではなく割り当てることができる必要があります。誰でも解決策を提案できますか?

myHosts = []
for i in myInstances:
    publicDnsAddress = i.public_dns_name
    myHosts.append(i.public_dns_name)
    print ("public dns address: " + publicDnsAddress)

print ("myHosts = " + str(myHosts))        

env.hosts=myHosts
env.user='myUser'
run("/scripts/remote_script.py")

次のエラーが表示されます。

No hosts found. Please specify (single) host string for connection: 

ホスト名が悪い場合、ホストが見つからないというメッセージではなく、少なくとも接続エラーが発生することが予想されます。確かに、私はこのことを間違っていると呼んでいるかもしれませんが、繰り返しになりますが、それが私が助けを求めている理由です.

4

1 に答える 1

0

コード内でホストを動的に設定する場合、次のwith settingsパターンを使用する必要がありました。

user = 'root'
hosts = ['server1', 'server2']

for host in hosts:
    with settings(user=user, host_string=host):
        run(whatever_my_command_is)
于 2013-01-18T00:24:11.387 に答える