ユーザーデータフィールドにシェルスクリプトを貼り付けることにより、標準のUbuntu 13.04 AMIの派生物を実行しているスポットインスタンスを初期化しています。
これは機能します。スクリプトが実行されます。ただし、スクリプトの出力がどこに記録されているのかがわからないため、デバッグが困難です。
/var/log/cloud-init.logを調べたところ、cloud-init自体のデバッグに関連する情報がたくさん含まれているようですが、スクリプトについては何もありません。/var/logでgrepを実行して何も見つかりませんでした。
ロギングをオンにするために何か特別なことはありますか?
だから私はあなたの問題を再現しようとしました。通常、私はCloud Configで作業しているため、次のような簡単なテストユーザーデータスクリプトを作成しました。
#!/bin/sh
echo "Hello World. The time is now $(date -R)!" | tee /root/output.txt
echo "I am out of the output file...somewhere?"
yum search git # just for fun
ls
exit 0
CloudInit Shellスクリプトを使用すると、ユーザーデータは「最初の起動時にrc.localのようなレベルで実行されます。rc.local-likeは「起動シーケンスの非常に遅い」を意味します」インスタンスにログインした後(a Scientific Linux machine)最初に/var/log/boot.logに行ったところ、次のことがわかりました。
こんにちは世界。時間は今水、2013年9月11日10:21:37 +0200です!わたし
ファイルから。どこかにログファイル?ロードされたプラグイン:changelog、kernel-module、priorities、protectbase、security 、: tsflags、versionlock 126リポジトリプライオリティ保護により除外されたパッケージ126リポジトリ保護により除外された9パッケージ^ Mepel/pkgtags
| 581 kB 00:00=============================== N/S一致:git ============= ================== ^ [[1mGit ^ [[0; 10mPython.noarch:Python ^ [[1mGit ^ [[0; 10mライブラリc ^ [[1mgit ^ [[0; 10m.x86_64:^ [[1mgit ^ [[0; 10m
...
...(yum検索出力をさらに表示)
...
bin etc lib lost + found mnt proc sbin srv tmp var
ブート開発ホームlib64メディアoptルートselinux sys usr
(その他の無関係なもの)
ご覧のとおり、私のスクリプトは実行され、正しく記録されました。また、予想通り、/ root/output.txtに次の内容の強制ログ「output.txt」がありました。
こんにちは世界。時間は今水、2013年9月11日10:21:37 +0200です!
だから...私はあなたのスクリプトで何が起こっているのか本当にわかりません。スクリプトを終了していることを確認してください
exit 0 #or some other code
それでも機能しない場合は、スクリプト、boot.log、/ etc/rc.local、cloudinit.logなどの詳細情報を提供する必要があります。ところで:あなたのcloudinitバージョンは何ですか?
ユーザーデータ用のcloud-configファイル(先頭に「#cloud-config」を含む)を作成し、runcmdを使用してスクリプトを呼び出し、次のように出力ログを有効にすることができます。
output: {all: '| tee -a /var/log/cloud-init-output.log'}
クラウド初期化ユーザーデータのデフォルトの場所はすでに/var/log/cloud-init-output.log
、AWS、DigitalOcean、および他のほとんどのクラウドプロバイダーの両方で。出力を表示するために追加のログを設定する必要はありません。