2013年1月3日木曜日

"cloud-init"でスクリプトが実行されるタイミングを調べてみた

スズキです。

下記に引き続き、"cloud-init"でスクリプト実行してみるシリーズです。
今回の設定ファイルは次の通りです。
# cat /etc/cloud/cloud.cfg
manage_etc_hosts: localhost
user: root
disable_root: false
ssh_genkeytypes: [ rsa, dsa ]

cloud_init_modules:
 - resizefs
 - update_etc_hosts
 - ssh

cloud_final_modules:
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - scripts-user
追加した内容は下記となります。
  • scripts-per-once
    • "/var/lib/cloud/scripts/per-once/"以下のスクリプトを実行

  • scripts-per-boot
    • "/var/lib/cloud/scripts/per-boot/"以下のスクリプトを実行

  • scripts-per-instance
    • "/var/lib/cloud/scripts/per-instance/"以下のスクリプトを実行
ということで、スクリプトが起動されるタイミングを確認するため次のように
スクリプトを配置しました。
# cd /var/lib/cloud/scripts
# tree `pwd`
/var/lib/cloud/scripts
├── per-boot
│   └── per-boot.sh
├── per-instance
│   └── per-instance.sh
└── per-once
     └── per-once.sh

各スクリプトは下記の通りです。

per-boot.sh
#!/bin/sh
echo per-boot    : `date` >> /tmp/per-xxx.txt
per-instance.sh
#!/bin/sh
echo per-instance: `date` >> /tmp/per-xxx.txt
per-once.sh
#!/bin/sh
echo per-once    : `date` >> /tmp/per-xxx.txt

実際にEC2を起動して挙動を確認します。

▼ 初期起動の場合
# cat /tmp/per-xxx.txt 
per-once    : 2013年 1月 3日 木曜日 17:30:16 JST
per-boot    : 2013年 1月 3日 木曜日 17:30:16 JST
per-instance: 2013年 1月 3日 木曜日 17:30:16 JST 
※ すべてのスクリプトが実行されています。

▼ リブートした場合
# cat /tmp/per-xxx.txt 
per-once    : 2013年 1月 3日 木曜日 17:30:16 JST
per-boot    : 2013年 1月 3日 木曜日 17:30:16 JST
per-instance: 2013年 1月 3日 木曜日 17:30:16 JST
per-boot    : 2013年 1月 3日 木曜日 17:32:24 JST
※ "per-boot"のみ実行されています。

▼ AMIにしてから起動した場合
# cat /tmp/per-xxx.txt 
per-once    : 2013年 1月 3日 木曜日 17:30:16 JST
per-boot    : 2013年 1月 3日 木曜日 17:30:16 JST
per-instance: 2013年 1月 3日 木曜日 17:30:16 JST
per-boot    : 2013年 1月 3日 木曜日 17:32:24 JST
per-boot    : 2013年 1月 3日 木曜日 17:44:08 JST 
※ "per-instance"も実行されると思ったら"per-boot"のみでした...

"per-instance"の挙動がまだ微妙ですが、"yum -y update"など最初にEC2を起動した時のみ
実行したい処理は、"per-once"を利用すればいいことがわかります。

"git"関係が調べ切れれば、早いけど"6.3.6"かなー...
--------
http://www.suz-lab.com

0 コメント: