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 docsset_hosts()
に示されているようにタスクを作成すると、env.hosts が適切に設定されます。ただし、これは実行可能なオプションではなく、デコレーターでもありません。コマンド ラインでホストを渡すと、最終的に fabfile を呼び出すある種のシェル スクリプトが生成されます。私は、1 つのツールが適切に機能することを望んでいます。
Fabric のドキュメントには、「env.hosts は単なる Python リスト オブジェクトです」と書かれています。私の観察から、これは単に真実ではありません。
ここで何が起こっているのか誰でも説明できますか? デプロイ先のホストを設定するにはどうすればよいですか?