将Fabric env.host字符串作为变量传递

时间:2011-10-13 18:00:37

标签: python cloud-hosting fabric

我希望能够以编程方式创建新的云服务器,然后将新的root@1.2.3.4传递给其他Fabric命令以运行其他设置脚本。

我能够创建服务器,获取相关变量,并启动本地('ssh root@1.2.3.4')命令将新IP添加到我的已知主机文件中。但是,无论如何我都尝试将字符串'root@1.2.3.4'传递给Fabric,它仍然向我提供:

  

找不到主机。请指定(单个)主机字符串以进行连接:

我尝试了各种字符串操作,例如:

  

env.host ='%s'%host

     

env.hosts = [host]

     

env.host = str(host)

但是,Fabric总是向我显示“找不到主机”提示。如果我复制并粘贴'print host'的结果,那就可以了。当然,这不是一个巨大的障碍,但真正打破了我试图采取的整个自动推出方法。

有没有人成功使用变量将env.host/hosts声明传递给Fabric?

1 个答案:

答案 0 :(得分:0)

“找不到主机”错误有点欺骗性。如果您放入env.hosts的内容不完整,则会抛出此异常。 env.hosts应该看起来像其中之一:

env.hosts = ['1.2.3.4']
env.hosts = ['1.2.3.4', 'hostname', '4.5.6.7']

它应包含传递给root@1.2.3.4的用户(env.user

尝试这样的事情:

h = '1.2.3.4'
env.hosts = [h]