cloud-initを使用してinitスクリプトで使用されるアプリケーション属性を変更する

cloud-initを使用してinitスクリプトで使用されるアプリケーション属性を変更する

私は以前尋ねました。これ初期化スクリプトの順序について。わかると、これは私が必要とした解決策ではなく、おそらく正しい質問でもなかったでしょう。それは幻の成功でした。

私のシステムは、スタートアップサービスとしてupstart(init)0.6.5を実行しているAWS EC2インスタンスです。

私の目標は、起動時にインスタンスIDを使用して、起動中に起動される他のアプリケーションを構成するAMIを作成することです。これが私が望むものです:

  1. AMI で新しいインスタンスを起動し、スクリプトを UserData として提供します。
  2. UserData スクリプトは新しいサーバーのインスタンス ID を確認し、そのインスタンス ID を使用して他のアプリケーションの複数の構成ファイルを変更します。実際にはこれを識別子として使用しており、特別なものはありません。
  3. cloud-initプロセスでUserDataを実行して設定ファイルを変更すると、私のアプリケーションの1つが起動します。
  4. 最初のアプリケーションが起動すると、複数のアプリケーション(最初のアプリケーションによって異なります)が起動します。

初期化ファイルの関連開始順序は次のとおりです。

  • S50cloud-init-local
  • S51cloud-init
  • S52クラウド構成
  • 最初に開始する必要があるS80my-app-最初に開始する必要があるS80my-app
  • 初回適用後のS81アプリケーションの実行
  • S81 最初のアプリケーションの後に別のアプリケーションを実行する
  • S98cloud - 最終バージョン

いくつかのロギングにより、最近私のUserData関数がS98cloud-finalまで実行されていないように見えました(以前はS51cloud-initで実行されたと思いました)。起動順序でcloud-finalを早く移動するのは賢明ではないと思います。

できるcloud-initプロセスを介してすべてのアプリケーションをダウンロードして設定しますが、そうしたくはありません。プリロードされたAMI(すでにinitに設定されているすべてのアプリケーションが含まれています)が必要です。

S99localにアプリケーションを起動することを検討しましたが、独立して起動/終了できる必要があるアプリケーションなので、後で再起動するにはinitスクリプトが必要です。

これに対するベストプラクティスや良い提案は何ですか?

関連情報