新しいバージョンの Chef への既存の Linux スタックの移行
AWS OpsWorks Stacks コンソール、API、または CLI を使用して、Linux スタックを新しいバージョンの Chef に移行することができます。ただし、新しいバージョンに対応するために、レシピに変更を加えることが必要になる場合があります。スタックを移行するための準備をするときに、次の点を考慮します。
-
AWS OpsWorks スタックのスタックバージョンを、スタックの編集やクローニングで Chef 11 から Chef 12 に変更することはできません。Chef のメジャーバージョンアップグレードは、このセクションの手順を使用して行うことはできません。Chef 11.10 から Chef 12 への移行の詳細については、「レシピの実装: Chef 12」を参照してください。
-
Chef のあるバージョンから別のバージョンへの移行には多くの変更が伴い、その一部は互換性を破る変更です。
Chef 0.9 から Chef 11.4 への移行の詳細については、「新しい Chef バージョンへの移行」を参照してください。Chef 11.4 から Chef 11.10 への移行の詳細については、「レシピの実装: Chef 11.10」を参照してください。Chef 11.10 から Chef 12 への移行の詳細については、「レシピの実装: Chef 12」を参照してください。
-
Chef の実行で使用される Ruby のバージョンは、Chef 0.9 および Chef 11.4 のスタックの場合 (Ruby 1.8.7)、Chef 11.10 のスタックの場合 (Ruby 2.0.0)、および Chef 12 のスタックの場合 (Ruby 2.1.6) とで異なります。
詳細については、「Ruby のバージョン」を参照してください。
-
Chef 11.10 のスタックでは、クックブックのインストールの処理が、Chef 0.9 または Chef 11.4 のスタックの場合とは異なります。
この違いによって、カスタムクックブックを使用するスタックを Chef 11.10 に移行するときに問題が発生する可能性があります。詳細については、「クックブックのインストールと優先順位」を参照してください。
Chef のスタックを新しいバージョンの Chef に移行する際の推奨ガイドラインを以下に示します。
スタックを新しいバージョンの Chef に移行するには
-
本稼働用スタックのクローンを作成します。[Clone Stack] ページで、[Advanced>>] をクリックして [Configuration Management] セクションを表示し、[Chef version] を上位のバージョンに変更します。
注記
Chef 0.9 のスタックで作業を始める場合、直接 Chef 11.10 にアップグレードすることはできません。最初に Chef 11.4 にアップグレードする必要があります。レシピをテストする前に、Chef 11.10 にスタックを移行する場合は、更新が実行されるまで 20 分間待機してから、スタックを 11.4 から 11.10 にアップグレードします。
-
インスタンスを Layer に追加し、テストまたはステージング用システムにあるクローンのスタックのアプリケーションとクックブックをテストします。詳細については、「All about Chef ...」を参照してください。
-
テスト結果が適切である場合、次のいずれかを実行します。
-
これが必要な Chef バージョンである場合、クローンのスタックを本稼働用スタックとして使用するか、本稼働用スタックの Chef バージョンをリセットできます。
-
Chef 0.9 スタックから Chef 11.10 に 2 段階で移行している場合は、Chef 11.4 から Chef 11.10 にスタックを移行する処理を繰り返します。
-
注記
レシピをテストする場合は、SSH を使用してインスタンスに接続した後、インスタンスエージェント CLI の run_command コマンドを使用してさまざまなライフサイクルイベントに関連付けられたレシピを実行します。エージェント CLI は、特に Setup レシピをテストする場合に便利です。Setup が失敗し、インスタンスがオンライン状態になっていない場合でも使用できるからです。Setup スタックコマンドを使用して Setup レシピを再実行することもできますが、このコマンドは Setup が成功し、インスタンスがオンラインになっている場合にのみ利用できます。
実行中のスタックを新しいバージョンの Chef に更新することができます。
実行中のスタックを新しいバージョンの Chef に更新するには
-
スタックを編集し、スタックの設定の [Chef version] を変更します。
-
新しい設定を保存し、AWS OpsWorks Stacks によってインスタンスが更新されるまで待ちます。これには、通常、15~20 分かかります。
重要
AWS OpsWorks Stacks は、Chef バージョンの更新をライフサイクルイベントと同期させません。本稼働用スタックで Chef のバージョンを更新する場合は、次のライフサイクルイベントが発生する前に、更新が完了するように注意する必要があります。イベント (通常、Deploy または Configure イベント) が発生した場合、インスタンスエージェントは、バージョンの更新が完了しているかどうかに関係なく、カスタムクックブックを更新し、イベントに割り当てられたレシピを実行します。バージョンの更新が完了したことを直接確認する方法はありませんが、デプロイのログに Chef のバージョンが記録されています。