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というのを
I wrote about Fabric’s error handling in this post and there task execution errors were handled like this: env.warn_only=True def cmd(cmd): if run(cmd).failed: sudo(cmd) What if the task is a bit more complex and has multilple parts that can go wrong? You might want to abort the execution and do some kind of rollback action. The task could be aborted by just using env.warn_only=False but then then
ところで先日、ぼくの投稿を友人に見てもらう機会があったのですが、 「キモイ、写真がキモイ。ほんとキモイよ?今まで誰も指摘してくれなかったの?」 との絶賛コメントをいただきました。 fabric はシンプルでいて、とても強力なツールです。 しかし、それは使い方によっては危険なツールでもあるということです。 特にぼくのような、キモイ人間のクズが使うときには細心の注意を払う必要があります。 今日もぼくが本番環境に妙なものをデプロイしないか、 奇妙な人たち(上司ほか)が手錠をジャラジャラいわせながら監視しています。 気をつけないと。 ただ、どんなに気をつけていてもエラーというやつは起こるわけで、 だから色々ぶっ壊さないようにエラーハンドリングはちゃんとしてあげないといけません。 設定ファイルを編集した後にどこかでエラーが出たら、 ファイルだけ変えてるせいで2度とデーモンが起動しなくなった、とか、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く