- アプリケーションのローリングアップデートのため、サービスアウトしてほげほげして確認してサービスイン
# コマンドイメージ
lb-cli del web01 # LBからノードを切り離す
tail /path/to/accesslog # サービスアウト確認
update app # アプリケーションアップデート
restart app # アプリケーション再起動
check app --version # アプリケーションのバージョン確認
lb-cli add web01 # LBにノード追加
tail /path/to/accesslog # アクセスログ確認
: # 次のノードに続く
- 構成管理ツールでコード化されてないサーバ構築手順。
# イメージ
wget http://example.com/path/to/package.tar.gz
tar xvzf package
cd package
configure --prefix=/opt/package
make; make install
/opt/package/bin/app --version # 動くかチェック
- 類似作業をやるとき、コードを再利用できる
- SCMにノウハウが溜まっていく。検索できるよ。
- 手順書とっておけばいいけど、コードのほうが再利用性高そうな気がする。
- そもそも手順書とっておかなかったら(略)
シェルスクリプトでもいいじゃん、という想定質問に対して。
たぶんちょっと複雑なことをしようとするとシェルだとハードルがあることがあるのではないか。
DSLにして関数化したり、外部ライブラリの力を借りた方がハードルが下がるのではないか、と思ったので。
例えば、以下のようなケース:
- コケたら先に進んでほしくないとき、シェルだと終了コードを調べてアボートしたりしないといけない。(
set -e
しとけやというのはあるが、それだけで済まないことはありそう) - アクセスログ確認して異常がないか確かめたり、アクセス止まってることを確認したり
- NOT (以下のようであってはいけない)
- 「DSLめんどいしよくわからないから、直接シェルコマンド叩いた方が速い」
- 「DSL中で何やってるかよくわからない」
- Rake が一番筋がいいのではないか
- Rakefile に書く
- 作業単位でディレクトリ切ってもいい
- Ruby の場合、specinfra と infrataster というライブラリがあって、サーバの状態・振る舞いをテストできるので、「ほげほげした後 xxx を確認したい」というときに使えるのではないか
- なんかこういうことク社さんやってそう。もっと別のやり方かもしれないけど
- (追記) capistrano もアリかもという示唆を頂きました。コメント参照。Ruby 詳しくないので、まだあまり比較検討できてない。
- make はちょっと。。
- オレオレDSLもちょっと。。
- たぶん次点候補はシェルスクリプトべた書き
- これでもだいたいやりたいことはできるとは思うけど、たぶん「めんどいし、直接サーバ上で作業した方が速い」になりそう
今でしょ。
何かで試したい。
Twitter でコメントもらいました。
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>niku4i++