我想使用Fabric将我的Web应用程序代码部署到开发、演示和生产服务器。我的fabfile:
def deploy_2_dev():
deploy('dev')
def deploy_2_staging():
deploy('staging')
def deploy_2_prod():
deploy('prod')
def deploy(server):
print 'env.hosts:', env.hosts
env.hosts = [server]
print 'env.hosts:', env.hosts
样例输出:
host:folder user$ fab deploy_2_dev
env.hosts: []
env.hosts: ['dev']
No hosts found. Please specify (single) host string for connection:
当我创建一个set_hosts()
任务,如Fabric文档中所示,env.hosts会被正确设置。但这不是一个可行的选项,装饰器也不是。通过命令行传递hosts最终会导致一些调用fabfile的shell脚本,我希望有一个单一的工具来正确执行此操作。Fabric文档中说'env.hosts只是一个Python列表对象'。但根据我的观察,这显然是不真实的。
请问有人能解释一下这里发生了什么吗?我该如何设置要部署到的主机?