Fabric は指定したコマンドを各ホストで実行する実行モデルです。この場合は特にホストの指定がなかったので、全部ローカルで、一回実行することになります。 これは結構つまんないので、本当の例を見ましょう。これは最近、仕事で作ったコマンドです。 nginx サーバーでメンテ画面を出すようなコマンドです。 各ロードバランサーで実行します。 from fabric.api import run, cd, abort, require, sudo, env from fabric.decorators import runs_once, roles from fabric.contrib.console import confirm ... @roles('loadbalancers') def start_maintenance(): """ メンテナンス画面に切り替える """ _produc
1 ファイルに全タスク書くのはつらい、という話です。 -f オプションを省略すると fabfile.py を使うということを書きましたが、fabfile という名前で Python のパッケージを作っておいても OK です。 内容はこのディレクトリの fabfile 見て下さい。 __init__.py でその他のモジュールを import しておきます。そうすると fab モジュール名.タスク みたいな感じで実行できます。 # fabfile/__init__.py from . import hosts from . import repository # fabfile/hosts.py from fabric.api import task @task def localhost(): env.hosts = ["localhost"] env.user = "pyfes" 1 フ
fabfile.py �W� V ��� V from fabric.api import env, run, sudo, local, put def production(): """Defines production environment""" env.user = "deploy" env.hosts = ['example.com',] env.base_dir = "/var/www" env.app_name = "app" env.domain_name = "app.example.com" env.domain_path = "%(base_dir)s/%(domain_name)s" % { 'base_dir':env.base_dir, 'domain_name':env.domain_name } env.current_path = "%(domain_p
fabfile.pyって、task数個までならまあ1ファイルでいいんですが、それ以上増えてくるとスクリプト自体がカオスになって収集がつかなくなります。 更に似たような、けど微妙に違うtaskをいっぱい定義したりすると名前まで酷くなってきます。こんなかんじに。 @roles('lb') def lbserver_deploy(): """ロードバランサーにデプロイする""" ... @roles('app') def appserver_deploy(): """アプリケーションサーバーにデプロイする""" ... @roles('batch') def batchserver_deploy(): """バッチサーバーにデプロイする""" ... こんなファイルメンテする気が起こらないので、なんとか綺麗にしたいと思って調べたところ、fabric1.1から付いたクラスベースのtaskというのを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く