ようやく AMI 作りが一段落

Public AMI はどれを使ったらいいかさっぱり分からなかったので、自作を選択(CentOS 5)。

手順を自動処理可能な履歴として残そうとスクリプトにしたわけですが、これがなんだかんだと苦労しました。

  1. 空のイメージファイル作成
  2. イメージファイルをマウント
  3. dev, sys, proc をイメージファイルに作成してマウント
  4. fstab 作成
  5. イメージファイルでのインストール用に yum の設定ファイルを作成
  6. Core と Base を yum で groupinstall
  7. eth0 の設定
  8. ネットワーク設定
  9. インスタンス起動時に SSH ログインのための鍵を配備するスクリプトの準備
  10. ひとまず SELinux を無効にする
  11. rpmforge を使える様にしておく
  12. タイムゾーンの設定
  13. (やっていいのか不安ながら)時計合わせ関連の設定
  14. Rails 関連のパッケージをインストール
  15. ec2-ami-tools をインストール
  16. JDK をインストール
  17. 起動時に EBS をアタッチ&マウントするスクリプトの準備
  18. 起動時に Elastic IP を割り当てるスクリプトの準備
  19. 環境変数を設定
  20. ec2-api-tools など、いくつかのスクリプト類を準備
  21. イメージファイルをアンマウント

スクリプトでは上記を行う様にしてみました。

手順の詳細は以下を参考にしています。

参考記事通りに普通にやっていれば、きっと特に困ることなくすんなりいくんだと思いますが、自分の能力や環境やらでは、あれこれと問題にぶち当たりました。

一番大きかった問題が、Core グループのインストール時に pam のインストールで失敗する「ことがある」というものでした。たまに上手くいって、たまに上手くいかないわけです。何回か繰り返し実行していると、成功したり失敗したり。rm, cat, install について、"command not found"と言われるわけですが、今でも理由がさっぱり分かりません。

時計周りで問題になっているのかと思い、ntpd を動かしてみたり、止めてみたり。Parallels 上の CentOS 5 で AMI を作成しているわけですが、時計は Parallels が勝手に面倒を見てくれるはずなので、ntpd は止めるが正解だと判断しました。システムクロックとハードウェアクロックが結構ずれていたので、これらをあわせてみて、改めて AMI を作ると成功したりします。が、また失敗したりもします。

正直、さっぱり分かりません。yum の --installroot を使った場合に PATH が問題になるのかと思いましたが、それだと成功するときがある意味が分かりません。そんなこんなで、運頼りでやっています。

後は、インスタンスを動かした後でちょっとした問題(忘れ物)に気がづいて、何度か作り直すことになって無駄に時間がかかったのも問題でした。イメージ作りも 10GB のものを作ろうとしているために時間がかかりますし、アップロードは更に時間がかかります。

実は、一通りを手元でやるよりも、最小限の構成で AMI を作って、後はインスタンス起動後に適当なスクリプトで設定をあれこれした方が時間の節約が可能だった様な気がしています。ただ、どうもターミナルの反応の鈍さが気になるので、いまいち乗り気になれなかったりします。

と、まあ、まだまだ忘れている(見落としている)ことが多々ありそうですが、一段落としようかと思っています。

プロフィール

このブログ記事について

このページは、koshigoeが2009年5月30日 01:46に書いたブログ記事です。

ひとつ前のブログ記事は「えす・えす・でぃ〜!」です。

次のブログ記事は「EC2 で気がついたら勝手に EBS のボリュームがアンマウントされたたけど…」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。