意識を低く保ったまま、定型作業を自動化する話です。 ※どうも言葉足らずで誤解させてしまっているようなので補足を書きました。ご覧ください http://qiita.com/greenspa/items/fff535d2ae5da36e36feRead less

複数プロジェクトを抱えるチームでのデプロイ自動化 1つのチームで,10以上のプロジェクト,コードベースを抱える場合にどのようにデプロイの自動化を進めたか,工夫したこと,考慮したことなどをまとめておく. デプロイツールには,Python製のfabricを採用しているが,他のツールでも同様のことはできそう.なお,fabricの基本的な使い方などは既にインターネット上に良い記事がたくさんあるので書かない(最後の参考の項を見てください). fabricの選択 シェルスクリプトとCapistranoを考慮した. まず,シェルスクリプトは人によって書き方が違うため,統一が難しくメンテナンスコストも高い.また共通化も難しい. 次に,Capistranoは,裏でやってくれることが多く,学習コストも高い.プロジェクトによってはかなり特殊な環境へのデプロイも抱えているため,Capistranoの前提から外れる
2014/04/20 20:49 ※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】 Provisioning や Deployment にプログラミングスキルが必要になりつつあるようですが、皆様いかがお過ごしでしょうか。 Provisioning には、 Chef や Ansible が、 Deployment には capistrano や Fabric といったように使い分けられている方が多いようですが、私はずぼらなので Fabric を愛用しています。 Ansibleおしい! 環境によって違う変数とか、気持ちよく持たせたいじゃないですか。 Ansibleはいい感じにできます。 Provisioning とか Deployment のために、あらかじめ別の方法で agent 入れたりしたくないじゃないですか。 Ansibleはいい感じにできま
Small example how fabric deploy configuration using template files. To start up with simple configuration deployment, create 2 files fabfile.py and template/test_templatate. Here is the content of fabfile.py with only one task upload_conf: from fabric.api import * from fabric.contrib import * env.hosts = ['localhost'] env.user = 'vagrant' env.password = 'vagrant' def upload_conf(): env.some_test_v
GUNICORN=/usr/bin/gunicorn ROOT=/your/app/path PID=/var/run/gunicorn/your.pid APP=run:app if [ -f $PID ]; then rm $PID; fi cd $ROOT source venv/bin/activate exec $GUNICORN -c $ROOT/gunicorn.conf.py –pid=$PID $APP #coding: utf-8 from fabric.api import run,env,local,settings from fabric.operations import sudo from fabric.context_managers import cd import os import subprocess from fabric.api import e
Python製のCapistrano的なツールであるFabricを少しだけ使ってみた。けっこう機能が多いので自分が使いそうなところをまとめておく。バージョンは1.7.0。 Fabricの基本的な機能下記で任意のコマンドが実行可能$ fab -H localhost -- uptime またはfabfile.pyにタスクを書くfrom fabric.api import run def uptime(): run('uptime') $ fab -H host1,host2 uptime $ fab --list でfabfile.pyに定義されているタスク一覧を表示する。 ホストの定義はenv.hosts または env.roledefsで。env.hosts = [ 'host1', 'host2' ] # or env.roledefs = { 'web': ['host1', 'ho
2013-09-01Chef-soloとAnsibleとFabricを試してみたので感想をメモ。どれもそんなに深くは使い込んではいない。 このメモは自分の脳内の考えを整理するためのもので、人が使うことについてどうこう言うつもりはないです。 Chef-solo書いてみたcookbookはこちら。hnakamur/chef-cookbooks hnakamur/chef-repoクックブックは手順を書くのではなくて結果を書くというのがどうも本質的に違うと私は思ってしまう。料理のレシピだって手順を書くし。書結果がこうあるべきというのはserverspecが出来た今となってはそちらに任せて、クックブックは本来手順を書くべきものだと思う。RubyのDSLだけど結局上から順に評価されるので、実は手続きを書いていることになっている。でもファイル単位でしか再利用できないので、一部だけ使いたいと思ってコピペ
ゴクロの大平と申します。はじめまして。 4月からjoinさせていただいた、特に特記事項の無い平凡なプログラマです。さだまさしが好きです。 SmartNews開発者ブログをご覧になる方々は、サービスの裏側で動作するクローラーや多種多様な機械学習のロジックであったり、フロントエンドのUIの話であったり、サービス固有の話に興味が有る方が多いと存じますが、都合上(原稿の担当順番の都合上)、今回は一般的な話をさせていただきます。 ※先掲の話題については次回以降取り上げられますので、お楽しみに。 一般的な話題とはいえ、大企業とスタートアップでは取り巻く環境や解決すべき課題も異なっていますので、その辺もあわせてお伝え出来ればなと思います。 なお、今回のテーマは、サーバー/ミドルウェアの構成管理ツールとして最近有名になってきた「chef」と「fabric」です。 かなり長文のエントリーになってしまい
by @dekokun on 2013/04/07 19:30 Tagged as: Python, Fabric, デプロイツール. 2013/04/09 追記 意外と反響があるようなので、Tips追加しました。 2013/05/10 追記 並列実行について調べたのでついでに追記 「次のプロダクトはシンプルなデプロイツールだと噂のCinnamonでも使ってみるかー」と言っていたら、「Cinnamonは使ってるユーザ数が少なそうだし同様のことが行えるFabricのほうがいいんじゃないですかね。」というツッコミをいただき、今回はPerlのプロジェクトでもないためFabricを使用することにしました。 初めて触るFabric、やはり初学者にはいろいろとよくわからない部分があったため、はまって解決したことや便利なTipsなどをつらつらと列挙していきます。 なお、以下情報はPython2.7及びF
fabfile.py from deployment.cuisine import * from fabric.api import * from fabric.context_managers import * from fabric.utils import puts from fabric.colors import red, green import simplejson import os GIT_REPO = 'git@github.com:Vossy/redacted-webapp.git' def app_user(command): ''' This helper method runs the given command as the webapp user. ''' sudo(command, user='redacted_webapp') def productio
fabricのみに依存しています。cuisine, fabtoolsは実装の参考にしていますが、 依存はしていません。 使い方¶ fabfile.pyを以下のように書きます。 from fabric.api import env, task from envassert import file, process, package, user, group, port, cron, detect env.use_ssh_config = True @task def check(): env.platform_family = detect.detect() assert file.is_exists("/etc/hosts") assert file.is_file("/etc/hosts") assert file.is_dir("/tmp/") assert file.dir_exis
cmd: $ pip install fabric fabtools cuisine $ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box $ vagrant init centos64 $ vagrant up $ fab vagrant setup_riak_cs $ vagrant ssh log: $ vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box ... $ vagrant init centos64 A `Vagrantfile` has been pl
Fabric は、Python 製のデプロイ・システム管理ツールです。 最近、構築や運用を自動化するための様々なツールが出てきています。 構成管理ツールの Puppet や Chef が有名ですが、使うまでに覚えることが多いのが欠点です。 しかし、Fabric は非常にシンプルなツールで、今からすぐに使うことができます。 Fabric はデプロイ・システム管理ツールで、類似のツールとして Ruby 製の Capistrano があります。 Fabric の最大の特長は、シェルスクリプトを書き慣れた人がいきなり利用できるところです。 シェルスクリプトとしてまとめていたコマンドをそのまま run() メソッドや sudo() メソッドで囲むだけで、使うことができます。 シェルスクリプトを使っていていると、いくつもの問題に遭遇します。 名前空間の管理 変数の扱い 複雑なデータ構造がない(せいぜい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く