2011年11月12日土曜日

RightScaleのRightScriptsを書いてみた

前回、RightScale(RS)の情報を参考にServerTemplateからサーバを起動するところまでやった。
自分用のServerTemplateさえ持っておけば、いつでも自分用のサーバを用意できる。しかも、RSでServerTemplateを保持するのは無料。ServerTemplateを使いこなして、RSを使っている意味がでてくる。

今回はServerTemplateの一要素であるRightScriptを書いてみた。
RightScriptについては下記を参考にした。
  • いつも参考にさせていただいているRightScale Hack
  • 既にServerTemplateを使っていれば、RS dashboardの[Design]-[RightScript]にいくつかRightScriptsが登録されているはず。これらもとても参考になる。
書いたのは下記のPerlのCPAN shellの初期設定部分(特定ファイルの書き換え)。CPANライブラリをinstallする際、いちいち「yes」と入力するのを省略するための設定を追加した。こちらを参考にした。
結果正常に動作した。


#!/bin/bash -ex

#
# Test for a reboot, if this is a reboot just skip this script.
# リブート時に動作しない設定
#
if test "$RS_REBOOT" = "true" ; then
echo "Skip installation and configuration on reboot."
exit 0
fi


#### Setting ####
#ディストリビューション毎のセッティング

if [ $RS_DISTRO = centos ]; then
## Input Configration Setting on Ubuntu ##
echo "Initializing CPAN setting configuration,now..."
cat<<EOF >/usr/lib/perl5/5.8.8/CPAN/Config.pm

# This is CPAN.pm's systemwide configuration file. This file provides
# defaults for users, and the values can be changed in a per-user
# configuration file. The user-config file is being looked for as
# ~/.cpan/CPAN/MyConfig.pm.

\$CPAN::Config = {
  'build_cache' => q[10],
  'build_dir' => q[/root/.cpan/build],
  'cache_metadata' => q[1],
  'cpan_home' => q[/root/.cpan],
  'dontload_hash' => {  },
  'ftp' => q[/usr/kerberos/bin/ftp],
  'ftp_proxy' => q[],
  'getcwd' => q[cwd],
  'gpg' => q[/usr/bin/gpg],
  'gzip' => q[/bin/gzip],
  'histfile' => q[/root/.cpan/histfile],
  'histsize' => q[100],
  'http_proxy' => q[],
  'inactivity_timeout' => q[0],
  'index_expire' => q[1],
  'inhibit_startup_message' => q[0],
  'keep_source_where' => q[/root/.cpan/sources],
  'links' => q[],
  'make' => q[/usr/bin/make],
  'make_arg' => q[],
  'make_install_arg' => q[],
  'makepl_arg' => q[],
  'ncftp' => q[],
  'ncftpget' => q[],
  'no_proxy' => q[],
  'pager' => q[/usr/bin/less],
  'prerequisites_policy' => q[follow],
  'scan_cache' => q[atstart],
  'shell' => q[/bin/bash],
  'tar' => q[/bin/tar],
  'term_is_latin' => q[1],
  'unzip' => q[/usr/bin/unzip],
  'urllist' => [q[ftp://ftp.riken.jp/lang/CPAN/]],
  'wget' => q[/usr/bin/wget],
};
1;
__END__
EOF

echo "Install CPAN Modules,now..."
cpan $CPAN_MODULES

fi
#リターンコード0で終わらせる
exit 0


はまったのは下記。

  • catのredirectで設定を書き出す際、変数部分「$CPAN」を「\$CPAN」とエスケープする必要があった。これはshellの話で、RS特有の話ではないよう。
これでCPANライブラリが自由にinstallできるようになった。また、各種設定ファイルの変更もできる事が確認できた。
rpmパッケージのinstallについては、上述のServerTemplateのRightScriptsを参考にすればできそうだ。

ServerTemplateの作成は続く。。。
---
2011.11.13追記
Inputsの$CPAN_MODULESでspace区切りでモジュール名を渡せるようにしました。
これで、CPANモジュールのinstallまで全て完了できます。

2011.11.13追記その2
上記のConfig.pmですが、defaultの設定(ftpとしてrikenを選択)に「'prerequisites_policy' => q[follow],」を追加しています。


2012.2.15追記
上記のサンプルですが、fileを書きだす部分はrightscriptのAttachmentsに別fileとしてuploadする方がシンプルそうです。

このエントリーをはてなブックマークに追加