前回、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する方がシンプルそうです。