我知道我可以通过执行以下操作为主机分配主机:
env.hosts = ['host1', 'host2']
但我可以这样做吗?
myList = ['host1', 'host2']
env.hosts = myList
我正在使用Boto(来自Amazon AWS)获取'public_dns_name'的列表,然后想要在这些服务器上运行命令。服务器列表可以是动态的,因此我需要能够分配hosts环境变量而不是静态。有人可以提出解决方案吗?
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:
如果主机名称不好,我预计至少会出现连接错误而不是消息说它找不到主机。当然,我可能会把这件事搞错,但话又说回来,这就是我寻求帮助的原因。
答案 0 :(得分:0)
在代码中动态设置主机时,我需要使用此with settings
模式:
user = 'root'
hosts = ['server1', 'server2']
for host in hosts:
with settings(user=user, host_string=host):
run(whatever_my_command_is)