従来の課題

  • 管理するインスタンスが増えてくると、以下のような困りごとが出てくる
    • 接続情報の管理
    • OSなどバージョンのアップデート
    • オンプレ環境との連携

SSMで何ができるか?

  • SWインストール、更新
    • → Distributor
  • パッチ適用
    • →Patch Manager
  • その他のカスタム処理
    • →Automation
  • 上位の自動化処理のタイミング指定
    • 定期実行
      • →Maintenance WIndows
    • カレンダーでの制御
      • →Change Calendar
  • 問題発生時のアクション自動化
    • →修復アクションをAutomationで記述
  • 予期しない問題が発生した場合の対応
    • ノードへの一括コマンド発行
      • →Run Commands
    • ノードへのセキュアな特権アクセス
      • →Session Manager, Fleet Manager
  • リリースしたアプリケーションのメンテナンス
    • アプリケーションにまつわる複数の操作を一つのコンソールから管理
      • →アプリケーションマネージャ

機能

以下の4つに大別される

  1. ノードツール
  2. 変更管理ツール
  3. アプリケーション管理ツール
  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
  • 包含関係について

## 包含関係図

┌─────────────────────────────────────────────────────────────┐
│                    AWS Systems Manager                      │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                SSMドキュメント                        │   │
│  │              (設計書・レシピ集)                       │   │
│  │                                                     │   │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  │   │
│  │  │   Command   │  │ Automation  │  │   Policy    │  │   │
│  │  │ ドキュメント  │  │ ドキュメント  │  │ ドキュメント  │  │   │
│  │  │             │  │             │  │             │  │   │
│  │  │ ┌─────────┐ │  │ ┌─────────┐ │  │ ┌─────────┐ │  │   │
│  │  │ │RunBook  │ │  │ │RunBook  │ │  │ │ 設定管理 │ │  │   │
│  │  │ │(手順書) │ │  │ │(手順書) │ │  │ │ 手順書  │ │  │   │
│  │  │ └─────────┘ │  │ └─────────┘ │  │ └─────────┘ │  │   │
│  │  └─────────────┘  └─────────────┘  └─────────────┘  │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │                実行エンジン                           │   │
│  │                                                     │   │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  │   │
│  │  │ Run Command │  │ Automation  │  │State Manager│  │   │
│  │  │             │  │             │  │             │  │   │
│  │  │ Command     │  │ Automation  │  │ Policy      │  │   │
│  │  │ ドキュメント  │  │ ドキュメント  │  │ ドキュメント  │  │   │
│  │  │ を実行      │  │ を実行      │  │ を実行      │  │   │
│  │  └─────────────┘  └─────────────┘  └─────────────┘  │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

ドキュメントの書き方

Commandドキュメント

書き方は以下ドキュメントを参考に

Automationドキュメント

SSM agent

  • rootで稼働する
  • ポーリング処理を行い、SSM APIと通信を行う
┌─────────────────┐    ポーリング     ┌──────────────────────┐
│   SSM Agent     │ ──────────────→   │  Systems Manager     │
│  (EC2/Hybrid)   │                   │     Service          │
│                 │ ←──────────────    │                      │
└─────────────────┘   コマンド/応答    └──────────────────────┘
        │                                        │
        │ UpdateInstanceInformation              │
        │ (ハートビート)                          │
        └────────────────────────────────────────┘

アクセス経路について

  1. インターネット経由
  2. VPCe経由

権限付与

Systems Managerに接続するための権限は以下

  1. EC2インスタンスに明示的に以下を設定
    1. IAMポリシー: AmazonSSMManagedInstanceCore でコア機能をアタッチ
    2. 必要に応じて S3 などのポリシーをアタッチ(option)
  2. 「デフォルトのホスト管理設定(DHMC)を有効にし、アカウント内のぜんEC2を自動で管理下にする」