2012年9月24日月曜日

運用自動化ツール Capistrano の導入と使い方

SSHを使った運用自動化ツールであるCapistranoを導入してみる。


ソフトウェアの導入

まずRubyと必要なパッケージを導入しておく。
# yum install gcc make ruby rubygems ruby-devel ruby-ri ruby-rdoc

次にcapistranoを導入する。
# gem install capistrano --no-rdoc --no-ri
# gem install capistrano_colors --no-rdoc --no-ri
# gem install capistrano-ext --no-rdoc --no-ri
# gem list
*** LOCAL GEMS ***
capistrano (2.13.4)
capistrano-ext (1.2.1)
capistrano_colors (0.5.5)
highline (1.6.15)
jruby-pageant (1.1.1)
net-scp (1.0.4)
net-sftp (2.0.5)
net-ssh (2.6.0)
net-ssh-gateway (1.1.0)

これでcapistranoを実行する準備ができた。
# cap -h
Usage: cap [options] action ...
    -d, --debug                      Prompts before each remote command execution.
    -e, --explain TASK               Displays help (if available) for the task.
    -F, --default-config             Always use default config, even with -f.
    -f, --file FILE                  A recipe file to load. May be given more than once.
    -H, --long-help                  Explain these options and environment variables.
    -h, --help                       Display this help message.
    -l [STDERR|STDOUT|file]          Choose logger method. STDERR used by default.
        --logger
    -n, --dry-run                    Prints out commands without running them.
    -p, --password                   Immediately prompt for the password.
    -q, --quiet                      Make the output as quiet as possible.
    -r, --preserve-roles             Preserve task roles
    -S, --set-before NAME=VALUE      Set a variable before the recipes are loaded.
    -s, --set NAME=VALUE             Set a variable after the recipes are loaded.
    -T, --tasks [PATTERN]            List all tasks (matching optional PATTERN) in the loaded recipe files.
    -t, --tool                       Abbreviates the output of -T for tool integration.
    -V, --version                    Display the Capistrano version, and exit.
    -v, --verbose                    Be more verbose. May be given more than once.
    -X, --skip-system-config         Don't load the system config file (capistrano.conf)
    -x, --skip-user-config           Don't load the user config file (.caprc)

sshの認証設定

capistrano を使うためには管理対象ノードに対して、sshで認証なしのアクセスができたほうが便利なので、

capis-host# ssh-keygen -i xxxxx.pub
 → パスワードは空で作成
capis-host# ssh-copy-id -i ~/.ssh/xxxxx.pub username@targethost

としてキーを配布しておく。
やらないと毎回パスワード聞かれるだけなので、そっちが好みなら必要なし。


基本的な使い方

まず適当にレシピを保管するディレクトリを作成する。
# mkdir capis-recipes
# cd capis-recipes

実際にレシピを格納していく方法はいくらでもあるが、自分は以下の構成で使っている。
capis-recipes/ ・・・トップディレクトリ(githubへ登録している)
├── recipe1 ・・・レシピ1
│   ├── Capfile ・・・オプション指定されない場合に最初に読み込まれる
│   └── config 
│       ├── deploy ・・・ capistrano-extで利用できる環境ごとのファイルを置く
│       │   ├── common.rb
│       │   └── set-bonding.rb
│       └── deploy.rb ・・・Capfileから呼び出される。共通設定を記述する。
├── recipe2 ・・・レシピ2
└── recipe3 ・・・レシピ3

使い方は、実行したいレシピのトップディレクトリへ移動して、
# cd ~/capis-recipes/recipe1
# cap enviroment method

という感じで使っている。

以下はサンプルで、各ノードへchef-solo環境をディプロイするレシピになる。
https://github.com/irixjp/capistrano-recipe




0 件のコメント:

コメントを投稿