将Fabric的env.host字符串作为变量传递
我想要通过编程的方式创建一个新的云服务器,然后把这个新服务器的地址 root@1.2.3.4 传给 Fabric 的其他命令,以便运行其他设置脚本。
我可以创建服务器,获取相关的变量,并且用 local('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
“没有找到主机”的错误有点让人误解。这个错误会在你放入 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]