fabric
fabric
python製のデプロイツール。複数のサーバに対してアップロードしたり、複数のサーバで一気にコマンドを実行したりできる。
インストール
pipでインストールする
$ easy_install pip $ pip install fabric
接続ユーザ情報の設定
sshでサーバを操作するのでssh情報が必要なのでどっかに書かないとだめ
fabfile.pyに直接設定を書く
from fabric.api import env env.key_filename = ['~/.ssh/id_rsa'] env.user = 'nullpon' env.password = 'nullpon_password'
.ssh/configを読むようにする
from fabric.api import env env.use_ssh_config = True
fabricを実行するマシンから操作対象のマシンへ。鍵認証のときはパスフレーズなしにするなり、agent起動するなりでno pass実行可能にしておくと良い。
タスクのファイル分割
$ fab content.deploy # 静的コンテンツデプロイ $ fab app.deploy # アプリのデプロイ
のようにタスクを呼べるようにする方法
pythonスクリプト用のディレクトリを掘って
fabfile.py fabtask/ content.py app.py __init__.py
ファイルの中身は…
# fabfile.py import fabtask.content as content import fabtask.app as app # fabtask/content.py from fabric.api import task @task def deploy(): pass # fabtask/app.py from fabric.api import task @task def deploy(): pass
QA
サーバプロセスが起動できない
以下のようにしても起動できない
run('node hoge.js >hoge.log &')
sshの切断時に端末からsighupが送られて速攻でプロセス終了してるのが原因なので、ssh接続時に疑似端末を作らないようにする
run('node hoge.js >hoge.log &', pty=False)
nohup付けても何故か効かなかった…
fabric.txt · 最終更新: 2014/09/11 05:21 by nullpon