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を呼び出すある種のシェルスクリプトが生成されます。1つのツールで適切に処理を行うことをお勧めします。
それはファブリックのドキュメントで「env.hostsは単なるPythonリストオブジェクト」であると述べています。私の観察から、これは単に真実ではありません。
誰かがここで何が起こっているのか説明できますか?デプロイするホストを設定するにはどうすればよいですか?