Capistrano を使ってみる 定常作業の自動化

  • 投稿日:
  • by
  • カテゴリ:

昨日テストで書いてたのだが、実際に使ってみると複数処理してるときにうまくいかなかった。
動くまでのメモ。

数百台試しに(ntpq -pのみ)やったけど普通に動くようになった。
もう少しrole をうまく使うことと、定常的にやっている作業の自動化をいろいろ作ろうと思う。

さすがにcrontab -l を見る作業を数百台、手動ログインで確認したら疲れるよね。
そのときにCapistrano が便利です。

自分の記事にPuppet を載せていますが、Puppet ,Ruby を数百台インストールして動作確認
を行うことを考えると結構きつい気がしてきました。

Ruby はできるだけやる内容を明確に書くだけって話でPuppet もRuby で作っていると
言われているが、使っている会社(オープンソース系)で利用されていますが、
情報もあまり無いような。(あるにはあるが使えるかは別)

自分としては、実際に使えて自分の時間を増やすことのできるこのようなツールの
使い方は公開していこうと思います。
(自分の仕事が減ったらさむいが)

いろいろやっててて実際にntpd の再起動 と、 ntpq -p 動くようにしたときのdeploy.rb

set :application, "ntp restart"
set :user, "hideki"
#set :password, "hogehoge"
set :use_sudo, false
set :default_run_options, :max_hosts => 1
default_run_options[:pty] = true
ssh_options[:config]=false
ssh_options[:auth_methods] = "publickey"
#ssh_options[:verbose] = :debugr
ssh_options[:forward_agent] = true

role :server do
[
"192.168.2.1",
"192.168.2.2",
"192.168.2.3",
"192.168.2.4",
]
end

task :ntpd_restart, :roles => [:server] do
sudo "/etc/init.d/ntpd restart"
end

task :ntpq_chk, :roles => [:server] do
run "/usr/sbin/ntpq -p"
end

[ntpd の再起動]
cap -f deploy.rb ntpd_restart
Password: (sudo のパスワードを 入力)

[ntpq -p で動作確認]
cap -f deploy.rb ntpq_chk

一番最初に複数、role, roles で複数書いた場合に、動かないときがあった。
動く時もあったのですが、原因がわからずにいました。
ssh_options[:verbose] = :debug を追加することによってどこで止まっているかわかった。
run , sudo で実行してる際に複数動いてるとうまくいってなかったのですが、
:max_hosts => n を追加したところうまく動くようになった。

パラで動く必要は全然ないので、:max_hosts => 1 で問題ないのですが、数字を増やしたら
また動かなかった。実行環境によるのかもしれません。

set :default_run_options, :max_hosts => 1 で動かないとき、
task :ntpq_chk, :max_hosts => 1, :roles => [:server] do としても使えるのでこっちで実行。