EC2 SSMのStage ManagerでAMIMOTO内にインストールされたWordPressのバージョンを一覧にする

AMIMOTOではwp-setupというコマンドを実行することで、簡単にインスタンス内にWordPressを追加できます。 ただWordPressを増やせば増やすほど、バージョンや状態の管理が煩雑になってきます。 EC2 […]

広告ここから
広告ここまで

目次

    AMIMOTOではwp-setupというコマンドを実行することで、簡単にインスタンス内にWordPressを追加できます。
    ただWordPressを増やせば増やすほど、バージョンや状態の管理が煩雑になってきます。
    EC2 Systems Managerを使うことで、AMIMOTOインスタンス内にインストールされているWordPressのバージョンを一覧表示させる方法を思いついたのでまとめてみました。

    Goal

    以下のサンプルのように、インストールされているディレクトリとバージョンをまとめて見れるようにする。

    {
      "domain": "./i-XXXXXXXXXXXXXXXX/",
      "wp_version": "4.7.3"
    }
    {
      "domain": "./test1.jin-kei.net/",
      "wp_version": "4.7.3"
    }
    {
      "domain": "./test1.amiage.net/",
      "wp_version": "4.7.3"
    }
    

    事前準備

    以下の2つをインストールする必要があります。

    • EC2 Systems Manager Agent
    • jo

    それぞれ以下の記事などを参考にインストールしてください。

    またインスタンスには「AmazonEC2RoleforSSM」のポリシーが適用されたインスタンスロールを設定しておきましょう。

    SSM ドキュメントをCloudFormationで作成する

    以下のテンプレートを使ってCloudFormationスタックを作成します。
    https://gist.github.com/hideokamoto/6e8a33deec02cf4d843896a67f3b4c04

    State Managerで関連付けする

    以下のような設定で、State Managerを使ってインスタンスにドキュメントを関連付けします。

    ここでドキュメントの実行間隔を設定することができますので、WPのバージョンを収集する間隔を指定しておきましょう。
    個人的には週1回程度でいいかなと思います。

    [ステータス]が[成功]になっていればOK

    あとは指定した間隔でState Managerがドキュメントに記載されたコマンドを実行されるのを待ちましょう。
    待てない場合は、Run Commandから実行してしまうのも1つです。

    収集された情報を確認する

    AWSコンソールから取得する

    State ManagerまたはRun Commandでドキュメントを実行した場合、「マネージドインスタンス」から情報を確認できます。

    ドキュメントの実行が成功していればこうなる

    AWS-CLIから確認する

    もちろんAWS-CLIから取得することも可能です。

    $ aws ssm list-inventory-entries --instance-id YOUR_INSTANCE_ID --type-name "Custom:WPVersionsList" | jq .
    {
      "InstanceId": "i-XXXXXXXXXXXXXXXX",
      "TypeName": "Custom:WPVersionsList",
      "Entries": [
        {
          "domain": "./i-XXXXXXXXXXXXXXXX/",
          "wp_version": "4.7.3"
        },
        {
          "domain": "./test1.jin-kei.net/",
          "wp_version": "4.7.3"
        },
        {
          "domain": "./test1.amiage.net/",
          "wp_version": "4.7.3"
        }
      ],
      "SchemaVersion": "1.0",
      "CaptureTime": "2017-03-22T19:04:12Z"
    }
    

    AWS SDK for JavaScriptから取得する

    もちろんAWS SDKからも取得できます。listInventoryのAPIを呼び出す系の処理を利用しましょう。
    https://gist.github.com/hideokamoto/ed30aacb25b8012c08bf091448f7fae5

    実行結果はこのようになります。

    $ node test.js 
    { TypeName: 'Custom:WPVersionsList',
      InstanceId: 'i-XXXXXXXXXXXXXXXX',
      SchemaVersion: '1.0',
      CaptureTime: '2017-03-22T19:04:12Z',
      Entries: 
       [ { domain: './i-XXXXXXXXXXXXXXXX/', wp_version: '4.7.3' },
         { domain: './test1.jin-kei.net/', wp_version: '4.7.3' },
         { domain: './test1.amiage.net/', wp_version: '4.7.3' } ] }
    

    さいごに

    AWS SDKを使ってSSMのインベントリ情報を取得することができます。
    これを上手く使えば、運用中のEC2インスタンスやインスタンス内のアプリケーション情報を一覧管理できるダッシュボードなどを自作できるかなと思います。
    今回は情報の取得のみの紹介でしたが、アップデートやインストールを実行するドキュメントを用意しておけばRun Command経由で外部から更新操作を行うことも可能なはずです。

    AWS-CLIの方でバッチ処理的に管理していくという手もありますし、EC2 Sytems Managerの機能はどんどん使い込んでいきたいところです。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark