我想使用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:
当我创建如Fabric docs所示的set_hosts()
任务时,env.hosts设置正确。但是,这不是一个可行的选项,装饰器也不是。在命令行上传递主机最终会产生某种调用fabfile的shell脚本,我希望只有一个工具能够正确地完成这项工作。
它在Fabric文档中说“env.hosts只是一个Python列表对象”。从我的观察来看,这根本不是真的。
有人能解释这是怎么回事吗?如何设置要部署到的主机?
使用roledefs
使用-R选择角色:
这里有一个更简单的serverhorrors answer版本:
为此,我为每个环境声明一个实际的函数。例如:
使用上述函数,我将键入以下内容以部署到我的测试环境:
…以及要部署到生产环境中的以下内容:
这样做的好处是
test
和prod
函数可以在任何fab函数之前使用,而不仅仅是部署。它非常有用。相关问题 更多 >
编程相关推荐