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 回答