私は以前尋ねました。これ初期化スクリプトの順序について。わかると、これは私が必要とした解決策ではなく、おそらく正しい質問でもなかったでしょう。それは幻の成功でした。
私のシステムは、スタートアップサービスとしてupstart(init)0.6.5を実行しているAWS EC2インスタンスです。
私の目標は、起動時にインスタンスIDを使用して、起動中に起動される他のアプリケーションを構成するAMIを作成することです。これが私が望むものです:
- AMI で新しいインスタンスを起動し、スクリプトを UserData として提供します。
- UserData スクリプトは新しいサーバーのインスタンス ID を確認し、そのインスタンス ID を使用して他のアプリケーションの複数の構成ファイルを変更します。実際にはこれを識別子として使用しており、特別なものはありません。
- cloud-initプロセスでUserDataを実行して設定ファイルを変更すると、私のアプリケーションの1つが起動します。
- 最初のアプリケーションが起動すると、複数のアプリケーション(最初のアプリケーションによって異なります)が起動します。
初期化ファイルの関連開始順序は次のとおりです。
- 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スクリプトが必要です。
これに対するベストプラクティスや良い提案は何ですか?