新しいEC2インスタンスを作成し、作成時にインスタンスにユーザーデータを提供しようとしています。私のuserdataは、他のアプリケーション(myApplication)のプロパティファイル内のパラメータを変更するいくつかのbashコマンドを実行します。目的は、始める前にmyApplicationの設定を変更することです。 myApplication は /etc/init.d から起動するように設定されます。
基本的に説明されているタスクを実行しようとしています。ここ
/etc/init.d/cloud-init-localのchkconfig設定が優先順位50に設定されていることを確認しました。私はこれが私のuserdataスクリプトを実行するメカニズムであると仮定します。
myApplicationもchkconfigを使用して設定されますが、優先順位は90です。計画は、myApplication が開始される前にユーザーデータを実行することです。
しかし、これは私が経験したものではありません。 cloud-init-output.logファイルで、私のuserdataが実際に実行されているがmyApplicationがすでに起動していることを確認できます。
私のユーザーデータスクリプトが/etc/init.d/cloud-init-localによって実行されるという仮定は間違っていますか?起動順序の動作に関する私の予想は間違っていますか?
助けてくれてありがとう。ありがとうございます!
答え1
システムエラーが発生したようです。 (良い考えだと思います。) 特に、インポートされたsysvスクリプトの起動速度を上げるために、sysv initで無視されるLSB依存関係を構成しない限り、並列に実行されます。
この問題に対する解決策は
- 2つのinitスクリプトをsystemd依存関係を持つsystemdスクリプトに変換します。
- 両方の初期化スクリプトに依存関係を追加します。
- あなたよりスマートにしようとしない他の初期化システムを選択してください。