[レポート]DEV403 – Automate Common Maintenance & Deployment Tasks Using AWS Systems Manager #reinvent

2018.11.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

中山(順)です

本記事は、re:Invent 2018のセッションレポートになります。

セッション内容

タイトル

  • DEV403 - Automate Common Maintenance & Deployment Tasks Using AWS Systems Manager

概要

AWS Systems Manager provides predefined automation documents for common operational tasks that can be customized to meet your specific use cases. In this session, learn how to build new or customize existing automation documents leveraging predefined documents, automation plugins, and environment variables. Use Systems Manager’s built-in rate controls to incrementally and safely roll out changes when stopping, starting, or restarting Amazon EC2 instances, updating Linux and Windows Amazon Machine Images, or updating software on multiple Amazon EC2 instances.

登壇者

  • Darryn Hendricks - Sr. Cloud Support Engineer, AWS

Agenda

  • Systems Managerの紹介
  • デモ

このセッションの雰囲気について

このワークショップは、スピーカー2名に対して聴講者5名という、贅沢というか距離が近いというか、そんなセッションでした。 セッションには分類されていたものの、実質ワークショップのような形式でした。

Systems Managerの紹介

まずは、Systems Manager自体の紹介からスタートしました。

AWSのリソースに対して、プロビジョニング/構成/監視/オペレーションを様々な管理ツール(AWSサービス)で行うことができます。 AWS Systems Managerは、オペレーションをサポートするツールになります。

AWS Systems Managerでは、リソースを操作するために以下のような機能がサポートされています。

  • Automation
  • Run Command
  • Session Manager
  • Patch Manager
  • Maintenance Windows
  • Distributor
  • State Manager

このセッションの前半では、Automation, Session Manager, Distributorについて実際の画面で機能を紹介して頂きました。

[補足] Distributorとは

Distributorは、ソフトウェアの配信やバージョン管理を簡単に行える機能です。

Windowsの場合、MSIファイルとそれをインストールするためのPowerShellスクリプトをZipにしてS3にアップし、属性(バージョンやプラットフォームなど)を定義したManifestと共にPackageを定義します。 そして、SSM Agentを介してインスタンスに配信します。

詳細については後日ブログを書きたいと思います。

Introducing AWS Systems Manager Distributor

デモ

デモは以下の流れで実施されました。

以下、記憶を元に再現します。

  • IAM Role(インスタンスプロファイル)の作成
  • EC2インスタンスの作成(3台)
  • リソースグループの作成
  • 定義済みドキュメント (Automation) の実行
    • インスタンスの再起動
    • パッチの適用

IAM Role(インスタンスプロファイル)の作成

信頼するPrincipalとしてEC2を選択します。

また、定義済みポリシー"AmazonEC2RoleforSSM"をアタッチします。

EC2インスタンスの作成(3台)

管理対象となるEC2インスタンスを作成します。 今回はWindows Server 2016を作成します。

今回はインスタンスを3台作成します。 先ほど作成したIAM Roleをアタッチします。

この後のリソースグループ用にタグを付与します。

リソースグループの作成

インスタンスが作成できたらリソースグループを作成します。 以降のAutomationの実行対象を対象する際に利用します。

まずはリソースの種類を検索して指定します。

対象を絞り込むため、先ほどEC2インスタンスに指定したタグを指定します。

絞りこみ結果に先ほど作成したインスタンスのみが含まれていればOKです。

ここまででAutomationを実行する環境が整いました。

定義済みドキュメント (Automation) の実行

では、Automationを実行してみましょう。

インスタンスの再起動

まず、実行内容を定義したドキュメントを検索します。 多くのドキュメントがAWSによって定義済みです。 今回はインスタンスを再起動(正確には、停止と起動の2ステップ)するドキュメントを選択します。

"Execute Automation"をクリックします。

まずは、実行の種類を指定します。 今回は、"Rate Control"を指定します。 これはターゲット全体に対してどのくらいの割合で処理を行っていくか指定できるものです。

次にターゲットを指定します。 先ほど作成したリソースグループを指定します。

最後の実行比率を指定します。 今回は1インスタンスずつ実行するように指定します。 また、どのくらいエラーが発生したらAutomationを中断するかも指定できます。 今回は1回失敗したら中断するように設定します。

これでタスクが実行されます。 問題無く完了すると、以下のようになります。 ステップの開始時刻と終了時刻に注目してください。 各ステップ(インスタンスの再起動)が順次実行されていることが確認できます。

最後におまけですが、Automationではマルチアカウント/マルチリージョン対応もしているようです。 今度試してみたいと思います。

パッチの適用

次にパッチの適用をする予定でしたが、諸事情で時間切れになってしまいました。 なので、ドキュメントの検索画面だけご紹介します。

ちなみに、時間切れになってしまったのは他の参加者がいろいろ質問しまくってて、それでデモを先に進めることができなかったためでした。 これも少人数のセッション故のことかと思います。

今回のデモで利用する予定だった資料はこちらから確認できます。

darko-mesaros/reinvent2018-ssm-automation

まとめ

このような少人数のセッションは初めてでしたが、本国の中の人とがっつり話せるいい機会と捉えることも可能です。 英語に自信があれば、こういうセッションに突撃してみてもいいのではないでしょうか?

Automationについても定義済みのドキュメントが徐々に充実してきていて、あえて自分でドキュメントを定義する必要があるケースは意外と少ないのではないかと思います。まずは定義済みのドキュメントから活用していきましょう。 ちなみに、手前味噌ですが特権に昇格させる承認ワークフローを過去にAutomationで作成してブログにしたことがありますので、よろしければこちらもご覧頂ければと思います。

IAMユーザーに特権を一時的に付与する簡易承認ワークフローをSystems Manager (Automation) で実装してみた

現場からは以上です。