例 1: 親子のランブックの作成
以下の例は、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのタグ付きグループに段階的にパッチを適用する 2 つのランブックを作成する方法を示しています。これらのランブックは、親ランブックを使用して子ランブックのレート制御のオートメーションを開始する、親子の関係で使用されます。レート制御のオートメーションの詳細については、「自動オペレーションを大規模に実行する」を参照してください。この例で使用されているオートメーションアクションの詳細については、「Systems Manager Automation アクションのリファレンス」を参照してください。
子ランブックの作成
このランブック例では、次のシナリオに対処します。Emily は AnyCompany Consultants, LLC のシステムエンジニアです。プライマリデータベースとセカンダリデータベースをホスティングしている Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのグループに対して、パッチ適用を設定する必要があります。アプリケーションはこれらのデータベースに 24 時間アクセスするため、データベースインスタンスのいずれかは常に利用可能でなければなりません。
彼女は、段階的にインスタンスにパッチを適用することが最善のアプローチであると判断しました。まずはデータベースインスタンスのプライマリグループにパッチが適用され、続いてデータベースインスタンスのセカンダリグループにパッチが適用される予定です。また、以前に停止したインスタンスを実行したままにすることで追加コストが発生しないように、Emily はパッチ適用されたインスタンスをパッチ適用前の元の状態に戻したいと考えています。
Emily は、インスタンスに関連付けられたタグによって、データベースインスタンスのプライマリグループとセカンダリグループを識別します。子ランブックのレート制御のオートメーションを開始する親ランブックを作成することにしました。これにより、データベースインスタンスのプライマリグループとセカンダリグループに関連付けられたタグをターゲットにし、子のオートメーションの同時実行を管理できます。パッチ適用に使用できる Systems Manager (SSM) ドキュメントを確認した後、AWS-RunPatchBaseline
ドキュメントを選択します。この SSM ドキュメントを使用することで、同僚は、パッチ適用操作の完了後に、関連するパッチコンプライアンス情報を確認できます。
ランブックコンテンツの作成を開始するために、Emily は利用可能なオートメーションアクションを確認し、子ランブックのコンテンツの作成を次のように開始します。
-
まず、ランブックのスキーマの値と説明を提供し、子ランブックの入力パラメータを定義します。
AutomationAssumeRole
パラメータを使用すると、Emily とその同僚は、ランブックで彼らに代わってアクションを実行することをオートメーションに許可する既存の IAM ロールを使用できます。Emily はInstanceId
パラメータを使用して、パッチを適用するインスタンスを決定します。オプションで、Operation
、RebootOption
、およびSnapshotId
パラメータを使用して、AWS-RunPatchBaseline
のドキュメントパラメータに値を提供できます。これらのドキュメントパラメータに無効な値が提供されるのを防ぐために、必要に応じてallowedValues
を定義します。 -
最上位の要素が定義された状態で、Emily はランブックの
mainSteps
を構成するアクションの作成に進みます。最初のステップでは、aws:executeAwsApi
アクションを使用して、InstanceId
出力パラメータで指定したターゲットインスタンスの現在の状態を出力します。このアクションの出力は、後のアクションで使用します。 -
Emily は、手動で開始してパッチを適用する必要があるすべてのインスタンスの元の状態を追跡するのではなく、前のアクションの出力を使用して、ターゲットインスタンスの状態に基づいてオートメーションを分岐します。こうすることで、
aws:branch
アクションで定義される条件に応じてオートメーションで異なるステップを実行し、手動による介入なしにオートメーションの全体的な効率を向上させることができます。インスタンスの状態がすでに
running
の場合、aws:runCommand
アクションを使用するAWS-RunPatchBaseline
ドキュメントで、インスタンスにパッチを適用しオートメーションが進められます。インスタンスの状態が
stopping
の場合、オートメーションはaws:waitForAwsResourceProperty
アクションを使用してstopped
状態になるまでインスタンスにポーリングし、executeAwsApi
アクションを使用してインスタンスを起動し、インスタンスにパッチを適用する前にrunning
の状態になるまでインスタンスにポーリングします。インスタンスの状態が
stopped
の場合、自動化によってインスタンスが起動され、インスタンスがrunning
状態になるまでポーリングしてから、同じアクションを使用してインスタンスにパッチを適用します。 -
パッチ適用操作が完了した後、Emily は、オートメーションがターゲットインスタンスをオートメーション開始前と同じ状態に戻すようにしたいと考えています。これは、最初のアクションでの出力を再び使用して行います。オートメーションは、
aws:branch
アクションを使用してターゲットインスタンスの元の状態に基づいて分岐します。インスタンスが以前running
以外の状態にあった場合、インスタンスは停止します。インスタンスの状態がrunning
であれば、オートメーションが終了します。 -
Emily は完成した子ランブックコンテンツをレビューし、ターゲットインスタンスと同じ AWS アカウント と AWS リージョン でランブックを作成します。これで、親ランブックのコンテンツの作成を続行する準備が整いました。完成した子ランブックのコンテンツは次のとおりです。
この例で使用されているオートメーションアクションの詳細については、「Systems Manager Automation アクションのリファレンス」を参照してください。
親ランブックの作成
この例のランブックのシナリオは、前のセクションで説明したシナリオと同じです。子ランブックを作成した Emily は、次のように親ランブックのコンテンツの作成を開始します。
-
まず、ランブックのスキーマの値と説明を提供し、親ランブックの入力パラメータを定義します。
AutomationAssumeRole
パラメータを使用すると、Emily とその同僚は、ランブックで彼らに代わってアクションを実行することをオートメーションに許可する既存の IAM ロールを使用できます。Emily はPatchGroupPrimaryKey
とPatchGroupPrimaryValue
のパラメータを使用して、パッチを適用するデータベースインスタンスのプライマリグループに関連付けられたタグを指定します。PatchGroupSecondaryKey
とPatchGroupSecondaryValue
のパラメータを使用して、パッチを適用するデータベースインスタンスのセカンダリグループに関連付けられたタグを指定します。 -
最上位の要素が定義された状態で、Emily はランブックの
mainSteps
を構成するアクションの作成に進みます。最初のアクションは、作成した子ランブックを使用してレート制御のオートメーションを開始します。この子ランブックは、
PatchGroupPrimaryKey
とPatchGroupPrimaryValue
の入力パラメータで指定されるタグに関連付けられたインスタンスをターゲットしています。入力パラメータに指定された値を使用して、パッチを適用するデータベースインスタンスのプライマリグループに関連付けられたタグのキーと値を指定します。最初のオートメーションが完了すると、2 番目のアクションが子ランブックを使用して別のレート制御のオートメーションを開始します。この子ランブックは、
PatchGroupSecondaryKey
とPatchGroupSecondaryValue
の入力パラメータで指定されるタグに関連付けられたインスタンスをターゲットしています。入力パラメータに指定された値を使用して、パッチを適用するデータベースインスタンスのセカンダリグループに関連付けられたタグのキーと値を指定します。 -
Emily は完成した親ランブックコンテンツをレビューし、ターゲットインスタンスと同じ AWS アカウント と AWS リージョン でランブックを作成します。これで、ランブックをテストして、オートメーションが希望どおりに動作していることを確認してから、本番環境に実装する準備が整いました。完成した親ランブックのコンテンツは次のとおりです。
この例で使用されているオートメーションアクションの詳細については、「Systems Manager Automation アクションのリファレンス」を参照してください。