capistranoの最近のブログ記事

capistrano メモ

Capistrano を使っていて実行させた際、Failedで終了してる場合戻り値が1のため、
そこで止まってしまいます。フェールバックのためらしいんだけど、実際使うと
めんどくさい。その場合は、
sudo "bash -c ./test.sh ; true" とかなんかして、戻り値を0にすれば正常終了ということで
繰り返し処理で続けられることができる。

capistrano メモ

リモート先でコマンドの結果を知りたい時のコマンド。

cap invoke COMMAND="/home/hoge/check.sh" HOSTS=192.168.2.3
cap invoke COMMAND="df -h" HOSTS=192.168.2.3

任意のパラメータを渡す場合

task :mkdir, :roles => [:target_server] do
run "mkdir /var/www/#{user}"
end

cap -f config/deploy.rb -S user=hoge1 mkdir

HOSTS=host ip で特定のサーバを指定できる。
cap -f config/deploy.rb HOSTS=192.168.0.1 task_name

参考
http://www.howgry.com/page/view/id/360
https://tr.asai24.com/redmine/wiki/public/Capistrano_Basics_%E6%8B%99%E8%A8%B3

Capistrano の本格導入

会社のlinux サーバの台数が多いため、Capistrano を導入しました。
テストではやっていたのですが早めに入れたほうがあとで楽できるかなとか思いながら導入。

さすがにCapistrano 用のアカウントを300台近く作るのは疲れました。

Capistrano で今後やること。
・アプリのインストール・アップデート(脆弱性があった場合など)
・ユーザアカウントの作成・削除
・ユーザアカウントのパスワード変更(半年に1回だかするらしい)
・設定ファイルの配置
・初期構築

すでにやってるもの
cron タスクの取得

shell でやる部分と、Capistrano でやる部分を考えながらある程度作りこめば、
いろいろと自動化できそう。

3時間とかかかっていた作業が1時間に減ると思う。
構築内容がわかってないとスクリプトとか作れないのがネック。

sudo でのroot 権限の有効範囲

Capistrano でsudo でコマンドをリダイレクトするときに、操作がうまくできなかったが
とりあえず動くようになったまでのメモ。

オライリー bash クックブックによると
sudo bash -c 'command1 && command2 || command3'

コマンドのリダイレクトの有効範囲を「' '」の間で可能らしい。

sudo bash -c 'echo 'nrpe 5666/tcp' >> /etc/service'
→nrpe を実行とかいう状態で書き込み失敗。
 どうもスペースが入ってると都合が悪いらしい。スペースの無い内容だと書き込みができる。

たとえば
sudo bash -c 'echo 'root:/dev/null >> /etc/aliases'
の場合は問題なく書き込める。

なので、nrpe 5666/tcp を書いたファイルを/tmp とかにおいて読み込む。
sudo bash -c 'cat /tmp/hoge >> /etc/services'
→問題なく書けた。

sudo bash -c 'echo nrpe\t5666/tcp >> /etc/services'
で書けた。「\t」はtab の文字列。こんなんで良いんだね。

echo じゃなくて他の標準出力とかでやればできるのかもしれない。

これを「su -」 でroot になって同じことをすると書き込めるので 「sudo」の仕様なのかもしれない。

Capistrano でssh ユーザの自動作成

初期導入で結構だるい作業の自動化中

最初に、Capistrano 用にアカウントの作成を行う。
いままでコピペしてた作業が省略できた。

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

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

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

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

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

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

Capistrano を使ってみる

最近、管理する台数が多くてデプロイツールが必要になってきていろいろしています。

puppet も検討にいれていたが、クライアント(Web,DB サーバ)にruby,puppet をインストールする
かと思うと気が遠くなる...

Capistrano は管理サーバに設定をすれば良いので管理は楽です。
ただし、管理するクライアントのユーザとパスワードをある程度統一されている必要がある。

とりあえず、ntp の再起動と、その後のntpq -p の確認までの手順。

カテゴリ

ウェブページ

Powered by Movable Type 5.2.10