Amazon Web Services ブログ

Amazon EC2 Systems Manager を使用して AMI メンテナンスとパッチ適用を合理化 | 自動化

EC2 シニアプロダクトマネージャーの Taylor Anderson が自動化を利用して AMI メンテナンスとパッチ適用を合理化する方法についてご説明します。-Ana


去年 12 月の re:Invent でリリースした Amazon EC2 Systems Manager では、ソフトウェアインベントリの収集や OS パッチの適用、システムイメージの作成そして Windows や Linux のオペレーティングシステム設定などのプロセスを自動化することができます。こうした機能は自動設定や継続的に行う大規模なシステム管理を自動化し、Amazon EC2 やオンプレミスで実行しているインスタンスのソフトウェアコンプライアンスを維持することができます。Systems Manager には自動化の機能が含まれています。パッチの適用やエージェントの更新、Amazon Machine Image (AMI) にアプリケーションを組み込む場合に、この機能を使用することができます。自動化を使用することで、イメージの更新を手動で行うための時間や労力を省くことができます。代わりに、合理化し繰り返し可能で監査可能なプロセスを通じて AMI を構築することができます。先日、AWS は自動化に関する公開ドキュメントを初めてリリースしました。詳しくは AWS-UpdateLinuxAmi をご覧ください。

このドキュメントは Ubuntu、CentOS、RHEL、Amazon Linux AMI のパッチ適用を自動化できるようしたり、その他のサイト固有のパッケージと設定のインストールも自動化します。さらに、自動化ドキュメントを最初に書く必要を排除することで自動化を取り入れやすくしています。 AWS-UpdateLinuxAmi は、ご自分の自動化ワークフローを構築する場合にテンプレートとして使用することもできます。Windows ユーザーを対象にした、今後公開予定の AWS-UpdateWindowsAmi ドキュメントはこれと同等の内容を提供します。AWS-UpdateLinuxAmi は次のワークフローを自動化します。

  1. ソース Linux AMI から一時 EC2 インスタンスを起動
  2. インスタンスのアップデート
    • インスタンスでユーザー提供の更新前のフックを起動
    • 可能な場合にインスタンスの AWS ツールやエージェントを更新
    • ネイティブパッケージマネージャを使用してインスタンスのディストリビューションパッケージを更新
    • インスタンスでユーザー提供の更新後のフックを起動 (オプション)
  3. 一時インスタンスを停止
  4. 停止したインスタンスから新しい AMI を作成
  5. インスタンスを終了

警告: 実行中のインスタンスから AMI を作成すると、インスタンスの認証情報、社外秘情報、その他の機密情報が新しいイメージに記録される可能性があります。この方法で作成した AMI を管理する場合は十分な注意が必要です。

自動化のロールおよびアクセス権限の設定

過去に自動化を使用したことがない場合は、IAM ロールとアクセス権限を設定してください。これには自動化のサービス作成、passrole を指定してユーザーがサービスロールを提供できるように承認したり、インスタンスロールを作成して System Manager でインスタンス管理を有効にすることも含まれています。詳細については「自動化用にアクセスを設定する」を参照してください。

自動化を実行

      1. EC2 コンソールで [Systems Manager Services] > [Automations] を選択します。
      2. [Run automation document] を選択します。
      3. [Document name] で [AWS-UpdateLinuxAmi] を選択します。
      4. ドキュメントの最新バージョンを選択します。
      5. SourceAmiId に Linux AMI の ID を入力して更新します。
      6. InstanceIamRole に、インスタンスを管理するために System Manager を有効にして作成したインスタンスロール名を入力します (AmazonEC2RoleforSSM 管理ポリシーを含んでいるもの)。詳細については「自動化用にアクセスを設定する」を参照してください。
      7. [AutomationAssumeRole] に、自動化用に作成したサービスロールの ARN を入力します。詳細については「自動化用にアクセスを設定する」を参照してください。
      8. [Run Automation] を選択します。
      9. [Automation Steps] タブで進捗状況を監視し、ステップレベル出力を確認します。

実行が完了したら [Description] を選択してワークフローが返した出力を確認します。この例では AWS-UpdateLinuxAmi が新しい AMI ID を返しています。次に [Images] > [AMIs] を選択して新しい AMI を確認します。

自動化の使用に追加料金はかかりませんが、ワークフローで作成したリソースにはわずかな料金が発生します。「インスタンス削除」のステップに行く前に AWS-UpdateLinuxAmi を終了すると、ワークフローが作成した一時インスタンスは終了します。上記ステップの CLI チュートリアルについては「自動化 CLI チュートリアル: Linux AMI のパッチ適用」をご覧ください。

まとめ

AWS-UpdateLinuxAmi を問題なく実行できたら、サービスやインスタンスロールのデフォルト値を作成することをおすすめします。AWS-UpdateLinuxAmi をベースに、ご自分の自動化ドキュメントを作成してワークフローをカスタマイズすることができます。詳細については「 自動化ドキュメントの作成」をご覧ください。ドキュメント作成が完了したら追加ステップを書いてワークフローに足すことができます。ステップ例をご覧ください。

  • 新しい AMI ID で Auto Scaling を更新 (aws:invokeLambdaFunction アクションタイプ)
  • 新しい AMI の暗号化されたコピーを作成 (aws:encrypedCopy アクションタイプ)
  • RunPowerShellScript で Run Command を使用して新しい AMI を検証 (aws:runCommand アクションタイプ)

自動化はアプリケーションの組み込みに使う CI/CD パイプラインにとって大きな強化点となります。また、Jenkins で CLI 構築ステップとして呼び出すこともできます。こうした例の詳細については、自動化の技術文書を必ずご覧ください。

自動化、Amazon EC2 Systems Manager、Amazon CloudFormation、AWS Config、AWS OpsWorks やその他の管理サービスの更新については、新しい管理ツールのブログをフォローしてください。