19
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

cloud-init を None データソースで動作確認する

Last updated at Posted at 2014-11-16

AWS の CentOS 6 に cloud-init をインストールしていろいろ試してみようと思ったのですが、動きを確認するためにいちいちインスタンスを起動していたのではたまらんわーっと思いました。

そこで、None データソースを使ってローカルの環境で簡単に確認できるようにしてみました。

インストール

yum でインストールします。

yum install cloud-init

cloud.cfg

datasource_listNone データソースだけを指定し、datasource でメタデータとユーザーデータを指定します。

ユーザーデータは #include/etc/cloud/user-data を読み込むようにします。

cloud_***_modules には動作を試したいモジュールを記述します。

/etc/cloud/cloud.cfg
datasource_list: [None]
datasource:
  None:
    metadata:
    userdata_raw: |
      #include
      /etc/cloud/user-data

cloud_init_modules:
 - bootcmd
 - set-hostname
 - update-hostname

cloud_config_modules:
 - runcmd

cloud_final_modules:
 - scripts-user

user-data

ユーザーデータをそれっぽく作ります。

/etc/cloud/user-data
#cloud-config

hostname: oreore.example.net
fqdn: oreore.example.net

bootcmd:
 - ["bash", "-c", "echo `date`: bootcmd | tee -a /tmp/bootcmd"]

runcmd:
 - ["bash", "-c", "echo `date`: runcmd | tee -a /tmp/runcmd"]

動作確認用のスクリプト

リブートせずに動作確認するために次のスクリプトを作成します。

cloud-init-test
#!/bin/bash

rm -f /etc/hostname
hostname localhost.localdomain

rm -f /tmp/bootcmd
rm -f /tmp/runcmd

if [ "first" == "$1" ]; then
  rm -fr /var/lib/cloud/*
fi

for x in cloud-init-local cloud-init cloud-config cloud-final; do
  service $x start
done

初回ブート時

スクリプトに first と引数を付けて実行します。これは初回ブート時の動作です。

# ./cloud-init-test first

ホスト名が設定されていることを確認します。

# hostname
oreore.example.net

# cat /etc/hostname 
oreore.example.net

bootcmd が実行されていることを確認します。

# cat /tmp/bootcmd
Sun Nov 16 16:58:36 JST 2014: bootcmd

runcmd が実行されていることを確認します。

# cat /tmp/runcmd
Sun Nov 16 16:58:37 JST 2014: runcmd

2回目以降のブート時

スクリプトに引数を付けずに実行します。これは2回目以降のブート時の動作です。

# ./cloud-init-test

ホスト名が設定されていることを確認します。

# hostname
oreore.example.net

# cat /etc/hostname 
oreore.example.net

bootcmd が実行されていることを確認します。

# cat /tmp/bootcmd
Sun Nov 16 16:59:23 JST 2014: bootcmd

runcmd は実行されませんでした。runcmd は初回のブート時にだけ実行されるもののようです。

# cat /tmp/runcmd
cat: /tmp/runcmd: No such file or directory
19
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?