share facebook facebook2 twitter menu hatena pocket slack

2013.01.11 FRI

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

鈴木 宏康

WRITTEN BY鈴木 宏康

cloud-initで起動時に任意のスクリプトを実行する(CentOS6)cloud-initでUser Dataを使ってEC2を
最初に起動した時のみ
の記事に引き続き、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を利用すればいいことがわかります。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。