Más contenido relacionado
Similar a オリジナルAMIの作成(CentOS) (6)
Más de Hiroyasu Suzuki (13)
オリジナルAMIの作成(CentOS)
- 5. イメージマウントとデバイスファイル作成
ループバックデバイス(-o loop)としてイメージをマウント。
※ ファイルをブロック型デバイスのように扱う機能
# mkdir fs-centos
# mount -o loop centos.img fs-centos
イメージにデバイスファイル(fs-centos/dev)を作成します。
でも、ループの意味とか"-x"とか、よくわかりません...
# mkdir fs-centos/dev
# for i in console null zero; do
# /sbin/MAKEDEV -d fs-centos/dev -x $i;
# done
- 7. yumでCoreグループをインストール
Coreグループインストール用のyum設定ファイルを準備。
# cp /etc/yum.conf yum-ami.conf
# cat /etc/yum.repos.d/CentOS-Base.repo >> yum-ami.conf
しかし、設定ファイル中の$releaseverが展開されない...
[base]
name=CentOS-$releasever - Base
...
なので、無理やり置換 & インストール。
# sed -i 's/$releasever/5.4/g' yum-ami.conf
# yum -c yum-ami.conf
# --installroot=/mnt/fs-centos -y groupinstall Core
- 10. 起動時にキー取得の仕込み(その1)
fs-centos/etc/rc.localに記述
-------- ここから --------
#!/bin/sh
touch /var/lock/subsys/local
PUB_KEY_URI=http://169.254.169.254/1.0/meta-data/public-keys/0/openssh-key
PUB_KEY_FROM_HTTP=/tmp/openssh_id.pub
PUB_KEY_FROM_EPHEMERAL=/mnt/openssh_id.pub
ROOT_AUTHORIZED_KEYS=/root/.ssh/authorized_keys
if [ ! -d /root/.ssh ] ; then
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
- 11. 起動時にキー取得の仕込み(その2)
curl --retry 3 --retry-delay 0 --silent --fail -o $PUB_KEY_FROM_HTTP $PUB_KEY_URI
if [ $? -eq 0 -a -e $PUB_KEY_FROM_HTTP ] ; then
if ! grep -q -f $PUB_KEY_FROM_HTTP $ROOT_AUTHORIZED_KEYS
then
cat $PUB_KEY_FROM_HTTP >> $ROOT_AUTHORIZED_KEYS
echo "New key added to authrozied keys file from parameters"|logger -t "ec2"
fi
chmod 600 $ROOT_AUTHORIZED_KEYS
rm -f $PUB_KEY_FROM_HTTP
elif [ -e $PUB_KEY_FROM_EPHEMERAL ] ; then
if ! grep -q -f $PUB_KEY_FROM_EPHEMERAL $ROOT_AUTHORIZED_KEYS
then
cat $PUB_KEY_FROM_EPHEMERAL >> $ROOT_AUTHORIZED_KEYS
echo "New key added to authrozied keys file from ephemeral store"|logger -t "ec2"
fi
chmod 600 $ROOT_AUTHORIZED_KEYS
chmod 600 $PUB_KEY_FROM_EPHEMERAL
fi
- 12. 起動時にキー取得の仕込み(その3)
if [ -e /mnt/openssh_id.pub ] ; then
if ! grep -q -f /mnt/openssh_id.pub /root/.ssh/authorized_keys
then
cat /mnt/openssh_id.pub >> /root/.ssh/authorized_keys
echo "New key added to authrozied keys file from ephemeral store"|logger -t "ec2"
fi
chmod 600 /root/.ssh/authorized_keys
fi
-------- ここまで --------
上記処理をすることで、sshにて、事前に登録したキーを使った
rootでのログインが可能になります。
curlを利用しているので、別途インストール(yum)の必要あり。
Coreグループには含まれていない
- 13. Amazon EC2 AMI Tools のインストール
その前に依存しているrsyncとrubyをインストール
# yum install rsync
# yum install ruby
RPMの取得 & インストール
# curl -OL http://s3.amazonaws.com/ec2-downloads/ec2-
ami-tools.noarch.rpm
# rpm -Uvh ec2-ami-tools.noarch.rpm
- 14. 登録用(S3アップロード用)イメージの作成
まず、fs-centosをアンマウント。
# umount fs-centos
作成したイメージファイル(centos.img)を指定してアップロード用
のファイルセットを作成。
# ec2-bundle-image -i centos.img
# -k pk-XXXXXXXX.pem
# -c cert-XXXXXXX.pem
# -u 000000000000
-k : 鍵ファイル(Access Identifiers ページ!?から取得可能)
-c : 証明書ファイル(Access Identifiers ページ!?から取得可能)
-u : Account Number (ハイフンをとったもの)
- 16. AMIとして登録
いろいろ方法があります。
コマンドライン(EC2 API Tools)
AWS Management Console
Elasticfox (Firefoxのアドオン)
"Images"タブにて、"Machine Images"の領域で右クリッ
クし、「Register a new AMI」を選択することで登録できま
す。
選択時には、下記のようにBucket名からのXMLファイルを指定
することになります。
ami.suz-lab.com/centos.img.manifest.xml