2011/07/31

RightScaleを解き明かす~ライトスクリプトを見てみよう~

前回サーバテンプレートを使ってサーバを立ててみました。それではサーバテンプレートを構成している個々のスクリプトを見てみたいと思います。

「デザイン」から「サーバテンプレート」を選択します。



対象サーバサーバテンプレートを選択します。スクリプトタブを選択します。

スクリプトの書き方

  • シェルスクリプトです。

  • perlとか使えます。

  • Inputで入力した値は "$DB_PASSWORD"になります。

  • 実行した値を変数として使いたい場合は "$(grep -lir "missingok" $logrotate_file)"という風にします

  • 直前に実行したコマンドの値は "($?)"になる

  • パッケージ毎の起動は、/etc/init.d/パッケージ restart(Debian系特有)ではなく、serviceを使って起動する

  • スクリプト内で設定された関数や、変数は引き継がれない事を前提にする。他のスクリプトに依存はせず、面倒でもスクリプト単体で、動くようにしておく

  • サーバテンプレートに対応させるサーバイメージを複数ディストリビューションにする場合は、分岐を入れる
    (Debian系だとapt-get、CentOS系だとyumなど)

  • 同じディストリビューションでもバージョンによってパッケージの依存関係が違っていたりするので、もし依存関係が違っていたら、個別にバージョンを確認し、必要なパッケージのインストール等を行う必要がある


日本語化してみたライトスクリプト(随時追加)

 

RightLink

RightScaleが提供するサーバイメージ(v5以上)にはRightLinkというパッケージがはいっています。
RightLinkは ライトスクリプトとChefを動かす為のエージェントです。拡張してPuppetとかも動かす事が出来ます。

MITライセンスで公開されているオープンソースです(レポジトリはこちら

RightLink込みのサーバイメージの作り方はまた今度記事を書きたいと思います。

個々のコマンドのバイナリは /usr/bin/rs_のprefixであります。

RightLinkのコマンド

ほとんどのコマンドには以下のオプションがついています。

  • --verbose, -v  #デバック情報を出力する

  • --help #ヘルプを出す

  • --version #パッケージのログを出す


rs_log_level(サポートページ

  • ログレベルの設定

  • オプション
    --identify, -l #ログ出力レベルを設定する
    例:rs_log_level --log-level debug


rs_run_recipe(サポートページ

  • rs_run_right_script(ライトスクリプト用) rs_run_recipe(Chef用)

  • スクリプトを実行させる

    • rs_run_recipe --identity, -i ID [--json, -j JSON_FILE] [--verbose, -v]

    • rs_run_recipe --name, -n NAME [--json, -j JSON_FILE] [--verbose, -v]



  • オプション
    --identity, -i ID # ライトスクリプトもしくはサーバテンプレートに設定されているChefのレシピのIDを取得する
    --name, -n 名前 #ライトスクリプトもしくはChefレシピ名(IDで上書きされている)
    --json, -j JSON_FILE #レシピを実行する前にJSONファイルを属性として取り込む
    --parameter, -p NAME=type:VALUE #ライトスクリプトのInputを定義、もしくは上書きする(run_right_scriptのみ利用可能)


rs_shutdown(サポートページ)

  • インスタンスに対して再起動、停止、終了のリクエストを送ります

  • オプション
    --reboot, -r #再起動のリクエストを送る
    --stop, -s #停止のリクエストを送る(ルートディバイスがEBS等である際に利用出来ます)
    --terminate, -t #終了リクエストを送る
    --immediately, -i #リクエストを今すぐに実行させる
    --deferred, -d #他のスクリプトが終了するまで待つ


rs_tag(サポートページ

  • タグの一覧、追加、削除を現在のインスタンスや、クエリに対して行う事が出来る

  • オプション
    --list, -l #現在のインスタンスのタグ一覧を表示する
    --add, -a タグ #タグを追加する
    例:rs_tag --add 'options:tags=awesome'
    --remove -r タグ #タグを削除する
    例: rs_tag --remove 'options:tag=awesome'
    --query, -q タグリスト #デプロイメントのインスタンスのタグ情報を取得する


一般的なパッケージ

lsb_release


  • Linuxのバージョンを確認する

  • オプション
    -v, --help #ヘルプを出力
    -v, --version  #システムがサポートしているLSBモジュール を表示する
    -i, --id #ディストリビューターの名前
    出力例:Distributor ID: Ubuntu
    -d, --description #ディストリビューションの説明を表示
    出力例:Description: Ubuntu 10.04.2 LTS
    -r, --release #ディストリビューションのリリース番号を表示
    出力例:Release: 10.04
    -c, --codename #コードネームを表示
    出力例:Codename: lucid
    -a, --all #上記情報を全部出す
    -s,--short #短くして表示


mknod(manページ


  • 指定したタイプのスペシャルファイルを作成します