従来の課題
- 管理するインスタンスが増えてくると、以下のような困りごとが出てくる
- 接続情報の管理
- OSなどバージョンのアップデート
- オンプレ環境との連携
SSMで何ができるか?
- SWインストール、更新
- → Distributor
- パッチ適用
- →Patch Manager
- その他のカスタム処理
- →Automation
- 上位の自動化処理のタイミング指定
- 定期実行
- →Maintenance WIndows
- カレンダーでの制御
- →Change Calendar
- 定期実行
- 問題発生時のアクション自動化
- →修復アクションをAutomationで記述
- 予期しない問題が発生した場合の対応
- ノードへの一括コマンド発行
- →Run Commands
- ノードへのセキュアな特権アクセス
- →Session Manager, Fleet Manager
- ノードへの一括コマンド発行
- リリースしたアプリケーションのメンテナンス
- アプリケーションにまつわる複数の操作を一つのコンソールから管理
- →アプリケーションマネージャ
- アプリケーションにまつわる複数の操作を一つのコンソールから管理
機能
以下の4つに大別される
- ノードツール
- 変更管理ツール
- アプリケーション管理ツール
- 運用管理ツール
①フリートマネージャー(Fleet Manager)
- マネコンからノードフリートの管理ができるツール
- ファイルシステムの閲覧(ファイルのtail
- プロセスの表示、管理
- ユーザー・グループの表示、管理
①インベントリ(Inventory)
- マネージドノードのメタデータを収集
- メタデータ: アプリケーション,ファイル,NW構成、インスタンス情報など
①パッチマネージャー
- マネージドノードに対して、パッチの自動スキャン、自動パッチ適用を実現
①ディストリビューター
- ソフトウェアのインストール、更新の自動化
- SSM コンソール > ディストリビューター > 一回限りのインストール を実行、に相当
①ステートマネージャー
- 設定状態の維持・管理
- SSM コンソール > ディストリビューター > スケジュールへのインストール、に相当
- CloudFormationの AWS::SSM::Association リソースタイプに相当
①Run Command
- サーバーにログインすることなく、マネージドノードに対してコマンドを一括実行
- コマンドドキュメント(SSM ドキュメントとして定義) として定義された内容を実行する
②自動化(Automation)
- 自動化ワークフローであるRunbookを実行できる
③アプリケーションマネージャ
-
一つのコンソールからアプリケーションを管理できる
- CWアラームやコスト、コンプライアンスなど
-
管理対象とできるアプリケーションの種類
- CFnスタック
- ECSクラスター
- EKSクラスター
- カスタムアプリケーション
- …
③AppConfig
- アプリケーション構成を作成、管理、デプロイできる
- 新機能の展開を少しずつデプロイしたりできる
③パラメーターストア
コンポーネント
Systems Manager ドキュメント
-
実行するアクションを定義したもの
- 一般的なタスクの自動化を行う
-
JSON もしくは YAML 形式で記述される
-
以下のタイプ(ドキュメントタイプ)に分かれる
- Command
- 機能: Run Command
- サーバーで実行するコマンドを Run Command を通じて開始
- Automation(runbook)
- 機能: Automation
- Automation runbookとして自動化ワークフローを定義
- Package
- 機能: Distributor
- Session
- 機能: Session Manager
- Policy
- 機能: Inventory
- Command
-
包含関係について
## 包含関係図
┌─────────────────────────────────────────────────────────────┐
│ AWS Systems Manager │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ SSMドキュメント │ │
│ │ (設計書・レシピ集) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Command │ │ Automation │ │ Policy │ │ │
│ │ │ ドキュメント │ │ ドキュメント │ │ ドキュメント │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │
│ │ │ │RunBook │ │ │ │RunBook │ │ │ │ 設定管理 │ │ │ │
│ │ │ │(手順書) │ │ │ │(手順書) │ │ │ │ 手順書 │ │ │ │
│ │ │ └─────────┘ │ │ └─────────┘ │ │ └─────────┘ │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 実行エンジン │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Run Command │ │ Automation │ │State Manager│ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ Command │ │ Automation │ │ Policy │ │ │
│ │ │ ドキュメント │ │ ドキュメント │ │ ドキュメント │ │ │
│ │ │ を実行 │ │ を実行 │ │ を実行 │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
ドキュメントの書き方
- スキーマバージョンによってドキュメントタイプが決定される
- 参考: https://docs.aws.amazon.com/systems-manager/latest/userguide/documents-schemas-features.html
- Command, Policy タイプ: スキーマバージョン2.2
- Automationタイプ: スキーマバージョン0.3
- Sessionタイプ: スキーマバージョン1.0
Commandドキュメント
書き方は以下ドキュメントを参考に
Automationドキュメント
SSM agent
- rootで稼働する
- ポーリング処理を行い、SSM APIと通信を行う
┌─────────────────┐ ポーリング ┌──────────────────────┐
│ SSM Agent │ ──────────────→ │ Systems Manager │
│ (EC2/Hybrid) │ │ Service │
│ │ ←────────────── │ │
└─────────────────┘ コマンド/応答 └──────────────────────┘
│ │
│ UpdateInstanceInformation │
│ (ハートビート) │
└────────────────────────────────────────┘
アクセス経路について
- インターネット経由
- VPCe経由
権限付与
Systems Managerに接続するための権限は以下
- EC2インスタンスに明示的に以下を設定
- IAMポリシー: AmazonSSMManagedInstanceCore でコア機能をアタッチ
- 必要に応じて S3 などのポリシーをアタッチ(option)
- 「デフォルトのホスト管理設定(DHMC)を有効にし、アカウント内のぜんEC2を自動で管理下にする」