1. sonots

    No comment

    sonots
Changes in title
-cloud-init をいじる
+cloud-init のスクリプトをホストを再起動させたりせずに何度も実行して開発するには
Changes in body
Source | HTML | Preview

cloud init のスクリプトをホストを再起動させたりせずに何度も実行して開発するには次のようにすればよい

やりかた前提知識

/etc/cloud/cloud.cfg におけるにはcloud_init_modules の実行

rm -rf /var/lib/cloud/* && cloud-init init
cloud_init_modules:

...

# The modules that run in the 'config' stage
cloud_config_modules:

... 

# The modules that run in the 'final' stage
cloud_final_modules:

cloud_config_modulesの実行の3つのセクションがある。実行タイミングについてはAmazon Linuxのcloud-initの動きについて調べてみた の記事を参照すると良い。

1. cloud_init_modules セクションの実行

rm -rf /var/lib/cloud/* && cloud-init --debug init

2. cloud_config_modules セクションの実行

rm -rf /var/lib/cloud/* && cloud-init --debug modules --mode config

開発実行のやり方

cloud_final_modulesの実行それぞれ以下のように実行すれば良い

3. cloud_final_modules セクションの実行

rm -rf /var/lib/cloud/* && cloud-init --debug modules --mode final

補足

ちなみに、/var/lib/cloud の下はこんなかんじで、status.json に init が実行ずみであることなどが記録されているため、消さないと再実行できなくなっている。(status.json を消すだけではダメだった)

# tree /var/lib/cloud/
/var/lib/cloud/
├── data
│   ├── instance-id
│   ├── previous-datasource
│   ├── previous-instance-id
│   └── status.json
├── handlers
├── instance -> /var/lib/cloud/instances/i-5d1d98af
├── instances
│   └── i-5d1d98af
│       ├── cloud-config.txt
│       ├── datasource
│       ├── handlers
│       ├── obj.pkl
│       ├── scripts
│       ├── sem
│       │   └── consume_data
│       ├── user-data.txt
│       ├── user-data.txt.i
│       ├── vendor-data.txt
│       └── vendor-data.txt.i
├── scripts
│   ├── per-boot
│   ├── per-instance
│   ├── per-once
│   └── vendor
├── seed
└── sem