web-dev-qa-db-ja.com

cloud-initを手動で実行する方法は?

CloudFormationテンプレートを作成しており、テンプレートで提供するユーザーデータスクリプトをデバッグしようとしています。 cloud-initを手動で実行し、新しいインスタンスを起動するときと同じアクションを実行させるにはどうすればよいですか?

32
Fluffy

次のように実行できます。

/usr/bin/cloud-init -d init

これにより、初期モジュールでクラウドの初期設定が実行されます。 (-dオプションはデバッグ用です)実行する必要があるすべてのモジュールを実行する場合:

/usr/bin/cloud-init -d modules

これらを2回目に実行するときは、ブート時にすでに実行されているため、あまり実行されないことに注意してください。起動後に強制的に実行するには、コマンドラインから実行できます。

( cd /var/lib/cloud/ && Sudo rm -rf * )

古いバージョンでは、cloud-init initは:

/usr/bin/cloud-init start

この質問は、cloud-initの古いバージョンに適用されますが、役に立つかもしれません: EC2インスタンスが起動するたびにcloud-init起動スクリプトを実行するにはどうすればよいですか?

Cloud init here のドキュメントは例を示しています。ただし、コマンドラインオプションや各モジュールについて説明しているわけではないため、目的の結果を得るには、構成内の異なる値をいじる必要があります。もちろん、コードも見ることができます。

37
Rico

ほとんどのLinuxディストリビューション(CentOSおよびUbuntuを含む)では、systemctlを使用してcloud-initサービスを再起動できます。

systemctl restart cloud-init

次に、ジャーナルの出力を確認して結果を確認します。

journalctl -f -u cloud-init
4
Andrew

Kudusから@Ricoに、また、単一のモジュールを実行する場合-テストのため、またはディストリビューションがデフォルトでモジュールを有効にしないため(こんにちはPrecise!)

/usr/bin/cloud-init -d single -n <module-name>

たとえば、私のディストリビューションが実行されない場合write_filesデフォルトでは(多くの古いディストリビューションのように)、runcmdの先頭でこれを使用します。

runcmd:
 - /usr/bin/cloud-init -d single -n write-files

[私はそれがOPに対する実際の答えではないことを知っていますが、私の問題を解決しようとするとき、この質問はトップの結果の1つでした。

4
Guss
rm -f /var/log/cloud-init.log \
&& rm -Rf /var/lib/cloud/* \
&& cloud-init -d init \
&& cloud-init -d modules --mode final
3
Sergey Safarov