GNU/Linux >> Linux の 問題 >  >> Linux

カスタム AMI でユーザーデータ スクリプトが実行されていませんが、標準の Amazon Linux で動作しています。

User_data は、最初の起動時にのみ実行されます。あなたのイメージはカスタムのものなので、すでに一度開始されているので、user_data は無効になっていると思います。

Windows の場合、Ec2 Services Properties のボックスをチェックすることで実行できます。カスタム イメージ作成の最後に自動化する方法を検討中です。

Linux の場合もメカニズムは同じで、カスタム イメージで user_data を再度有効にする必要があると思います。

#cloud-boothook スクリプトを user_data から変更するため、機能させる 各起動時に実行される cloud-boothook メカニズムへのメカニズム。

編集:

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 に焦点を当てた質問は知っていますが、他の人にも役立つ可能性があります ...)


テストしたところ、/var/lib/cloud にいくつかのブートストラップ データがありました。 そのディレクトリをクリアした後、ユーザー データ スクリプトは正常に機能しました。

rm -rf /var/lib/cloud/*

Ubuntu 16.04 hvm AMI でも同じ問題に直面しました。この問題を AWS サポートに報告しましたが、問題に影響する正確な理由/バグを見つけることができませんでした.

しかし、まだあなたを助けるかもしれないものがあります.

<ブロック引用>

AMI を取得する前に、/var/lib/cloud ディレクトリを (毎回) 削除します。次に、イメージの作成中に再起動しないように設定します。

これらがまだ機能しない場合は、ユーザーデータを手動で強制的に実行することで、さらにテストできます。また、tailf /var/log/cloud-init-output.log cloud-init ステータス。ユーザーデータを実行するには、modules:final のようなもので終わる必要があります。 modules:config に貼り付けるべきではありません。

sudo rm -rf /var/lib/cloud/* sudo cloud-init init sudo cloud-init modules -m final

上記のコマンドが CentOS で機能するかどうかはよくわかりません。 Ubuntu でテストしました。

私の場合、/var/lib/cloud ディレクトリの削除も試みましたが、シナリオではユーザー データの実行に失敗しました。しかし、私はそれに対して別の解決策を考え出しました。上記のコマンドでスクリプトを作成し、システムの起動中にそのスクリプトを実行するようにしました。

それを実現するために、/etc/rc.local に以下の行を追加しました。

sudo bash /home/ubuntu/force-user-data.sh || exit 1

しかし、ここにキャッチがあります。これは、ブートごとにスクリプトを実行するため、#cloud-boothook のように、ブートごとにユーザー データが実行されます。最後に force-user-data.sh 自体を削除するだけで微調整できます。したがって、force-user-data.sh は次のようになります

#!/bin/bash sudo rm -rf /var/lib/cloud/* sudo cloud-init init sudo cloud-init modules -m final sudo rm -f /home/ubuntu/force-user-data.sh exit 0

ユーザーデータを実行できない理由を明らかにしてくれる人がいれば幸いです。


Linux
  1. Linux – Caps Lock LEDがLinuxコンソールで機能しない?

  2. Linux –ヘッドフォンが機能しないLinux Mint 18?

  3. PYTHONPATH が GNU/Linux の sudo で機能しない (root で機能)

  1. Linux の limit.conf が機能しない?

  2. Linux コマンド 'll' が機能しない

  3. Amazon Linux AMI に Postgresql 11 をインストールする方法は?

  1. sudo -i ただし、現在の作業ディレクトリを保持する

  2. Linux - マウント コマンドは 0/0 を返しますが、機能しません

  3. Amazon Linux AMI はどの Linux ディストリビューションに基づいていますか?