質問

2011年11月27日 17時47分
  • リリース作業の自動化について

情シスのオープンナレッジ『Syszo』サービス終了のお知らせ

質問

皆さん、こんにちは。

リリース作業を自動化出来るシェルがあればと思いましてご相談しております。

現在、本番機サーバにログインする際、踏み台にしているサーバ(以下、fumidai1と記載)fumidai1のディレクトリにリリースするファイルが置いてあります。
※ファイルの種類によって配置元(fumidai1サーバ)、配置先(本番機サーバ8台)のディレクトリは変わります。
例:htmlファイルをリリースするときは、/home/www/html
plファイルをリリースするときは、/home/www/pl など。
※ファイルの数は1ファイル〜数十個のファイルになりファイル名も変わります。

そのファイルを、必ず本番サーバ”すべて”にアップする必要があり、本番サーバは8台あります。
内訳はxxx-11a、xxx-11c、xxx-11e、xxx-11g、xxx-11h、xxx-11i、xxx-11j、xxx-11lとなります。
※本番機サーバは今後増える可能性があります。

現在のリリース方法としましては、ファイルを一個一個手動でscpコマンドを使用し、fumidai1から本番サーバ(合計8台のサーバ全て)にファイルをアップロードし、確認作業としまして、本番サーバ(合計8台)のサーバすべてにログインし、ファイルが正常にアップドーロされているか確認しています。
※リリースするファイルが少ない時は、ssh $本番サーバ名 ls -l 配布先パス を使用しているのですが、ファイル数が多い場合は、すべての本番サーバにログインし確認しています。

これらの作業を可能な限り自動化できればと考えております。

今私が考えてる方法としましては、
1.サーバの台数は今後増える可能性があるので、汎用性を考え別途ファイルにサーバ名を保存し読み込むことは出来ないか。
2.リリースするファイルは、配置元、配置先が変更になるので、こちらも汎用性を考えて別途ファイルに保存し読み込むことは出来ないか。
3.ファイルが正常にリリースしたことを確認するために、rsyncなどのコマンドで確認作業を行うことは出来ないか。

私自身お恥ずかしい話ですがシェルの知識は持ちあわせておりませんので、もしも上記の条件で自動化できるシェルがあれば教えて下さい。

以上、よろしくお願い致します。

1件の回答があります

回答

ちょろさんも予測されていることと思いますが・・・皆さん自分自身で作成されているか、シェルを知っている人に作ってもらっていると思いますよ。

ただ、シェルの知識がないということなので、2つ心配事があります。
(心配事1)
要望を満たすシェルを教えてくださる方がいた・・・とします。そのシェルが、そのまま利用可能なシェルなのか否かの判断が可能ですか?
(心配事2)
シェルの実行結果はOKだったが・・・翌日、サービスが動かないという報告が・・・何が原因かわかりますか?対処をどうすれば、再現を防ぐことができるか判断できますか?

この2点を解決できないと・・・自動化したために、トラブル対応に時間が掛かるようになったという話を聞くことがあります。

それと、余計な御世話だと思いますが・・・
UNIXにはいくつか種類があります。種類によって、コマンドやコマンドの引数が違います(同じコマンドがほとんどですが・・・)。
シェルにもいくつか種類があります。知っているだけで、Bシェル、Cシェル、Zシェルなどがあります。シェルによって文法が若干違います。ただ、Bシェルで書けば問題ないと聞きます。
よって、今回のようなUNIXシェルスクリプトについて質問する際は、必要な情報になります。ただ、質問によっては、無くてもいい時もありますので。

ついでなので・・・・
「今私が考えてる方法」の2番は・・・配布ファイルが多いと作成作業に時間が掛かる点とパンチミス(文字入力ミス)が発生し易い点を考えると別の方法がいいですよ。例えば、配布先と同じフォルダ構成を作成しておいて、配布ファイルを配布先と同じフォルダに置くようにして配布を単純コピーで済むようにする・・・みたいに。
3番は、単純にlsコマンドの結果をファイルに出力して、diffコマンドを使えば済むような気がしますが・・・。例えば、配布元サーバにリリース後の環境を作成しておいて、各サーバのlsコマンド結果ファイルと比較する方法など。

すみません。期待する回答ではないのに長々と書いてしまい・・・

あなたもコメントしましょう!