[解決済み] ユーザーデータスクリプトは私のカスタムAMIでは動作しませんが、標準のAmazon linuxでは動作しています。
質問
ここ数日、quot;user-data script is not working"に関するトピックをたくさん検索しましたが、今のところ、私のケースについてまだ何もわかっていないです。
AWSによると ユーザーデータ の説明をご覧ください。
Amazon EC2でインスタンスを起動するとき、インスタンスにユーザーデータを渡すオプションがあり、それを使って一般的な自動構成タスクを実行したり、インスタンス起動後にスクリプトを実行したりすることもできます。
そこで、インスタンス起動時に自分のユーザーデータを渡してみました。
\#!/bin/bash
echo 'test' > /home/ec2-user/user-script-output.txt
しかし、このパスにはファイルがありません。
/home/ec2-user/user-script-output.txt
確認したところ
/var/lib/cloud/instance/user-data.txt
ファイルは存在し、私のユーザーデータスクリプトと同じです。
また、ログを確認すると
/var/log/cloud-init.log
エラーメッセージはありません。
ただ、Amazon linux(2014.09.01)で新規インスタンスを立ち上げるとuser-dataスクリプトは動いていますが、私のAMI(Amazon linuxベース)とAmazon linuxで何が違うのかがよくわかりません。
このスクリプトを実行した場合のみ、異なる部分が見られました。
sudo yum list installed | grep cloud-init
私のAMIです。
cloud-init.noarch 0.7.2-8.33.amzn1 @amzn-main
アマゾンのリナックスです。
cloud-init.noarch 0.7.2-8.33.amzn1 をインストールしました。
このせいではないでしょうか?
もっと情報が必要なら喜んで提供します、自分のAMIで何が起こったのか、どうすれば直るのか教えてください。
ありがとうございます
更新情報
ちょうどこの中から答えが見つかりました。 ポスト ,
user-dataファイルの先頭に#cloud-boothookを追加すると、動作するようになりました。
#cloud-boothook
#!/bin/bash
echo 'test' > /home/ec2-user/user-script-output.txt
でも、まだ理由はよくわからない。
どうすればいい?
User_dataは初回起動時のみ実行されます。あなたの画像はカスタム画像なので、すでに一度起動しており、user_dataは非アクティブになっているのでしょう。
Windowsの場合、以下のチェックボックスをオンにすることで可能です。 Ec2サービスプロパティ . カスタムイメージ作成の最後に自動で行う方法を今調べているところです。
linuxの場合も仕組みは同じで、カスタム画像上でuser_dataを再アクティブ化する必要があるのでしょうね。
は
#cloud-boothook
のスクリプトを変更することで、動作するようになります。
user_data
の仕組みから
クラウドブースブック
は、起動のたびに実行されるものです。
EDIT :
以下は、powershellを使用してWindowsのスタートを再アクティブ化するコードです。
$configFile = "C:\\Program Files\\Amazon\\Ec2ConfigService\\Settings\\Config.xml"
[xml] $xdoc = get-content $configFile
$xdoc.SelectNodes("//Plugin") |?{ $_.Name -eq "Ec2HandleUserData"} |%{ $_.State = "Enabled" }
$xdoc.SelectNodes("//Plugin") |?{ $_.Name -eq "Ec2SetComputerName"} |%{ $_.State = "Enabled" }
$xdoc.OuterXml | Out-File -Encoding UTF8 $configFile
$configFile = "C:\\Program Files\\Amazon\\Ec2ConfigService\\Settings\\BundleConfig.xml"
[xml] $xdoc = get-content $configFile
$xdoc.SelectNodes("//Property") |?{ $_.Name -eq "AutoSysprep"} |%{ $_.Value = "Yes" }
$xdoc.OuterXml | Out-File -Encoding UTF8 $configFile
(私は質問の焦点linuxを知っているが、それは他の人を助けることができる...)
関連
-
[解決済み】Postgresql -bash: psql: コマンドが見つかりませんでした。
-
[解決済み] sysrootとは何ですか、そしてどのように作成しますか?
-
[解決済み] usr/bin/env bash」と「#!/usr/bin/bash」の違いは何ですか?
-
[解決済み] Gccコンパイル "オブジェクトファイルのサフィックスを計算できない: コンパイルできない"
-
[解決済み] 共有ライブラリの読み込み中にエラーが発生しました: libncurses.so.5:
-
[解決済み] sudo mv home/* *」というコマンドは何をするのですか?[クローズド]
-
[解決済み] scpでファイルをコピーする:接続がタイムアウトした[closed]。
-
[解決済み] ftp: 名前またはサービスが不明
-
[解決済み] CLIから、ファイルの最終行を表示する
-
[解決済み] 次のコマンドの -print0 の意味を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】sed を使用して部分文字列を抽出する方法
-
[解決済み] sysrootとは何ですか、そしてどのように作成しますか?
-
[解決済み] usr/bin/env bash」と「#!/usr/bin/bash」の違いは何ですか?
-
[解決済み] 共有メモリページとフォーク
-
[解決済み] 共有ライブラリの読み込み中にエラーが発生しました: libncurses.so.5:
-
[解決済み] エラーです。"gzip: stdout: Linuxカーネルアップグレード中に「No space left on device」(デバイスに空き容量がない)が発生する(空き容量がある間)[closed]。
-
[解決済み] lsコマンドの出力をフィルタリングして、2月に作成されたファイルのみを表示させるにはどうすればよいですか?
-
[解決済み] GDB からソースがないとのクレーム
-
[解決済み] LinuxでXcodeを動かせるか?
-
[解決済み] php] <defunct>のプロセスを削除することはできますか?