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
それぞれ以下の記事などを参考にインストールしてください。
- AMIMOTO AMIでJSON生成ツール”jo”を使用して、EC2 Systems ManagerのInventory Managerを使ってみる
- AMIMOTOのWordPressバージョンをEC2 SSMでインベントリするドキュメントをCloudFormationで作ってみた
またインスタンスには「AmazonEC2RoleforSSM」のポリシーが適用されたインスタンスロールを設定しておきましょう。
SSM ドキュメントをCloudFormationで作成する
以下のテンプレートを使ってCloudFormationスタックを作成します。
https://gist.github.com/hideokamoto/6e8a33deec02cf4d843896a67f3b4c04
State Managerで関連付けする
以下のような設定で、State Managerを使ってインスタンスにドキュメントを関連付けします。

ここでドキュメントの実行間隔を設定することができますので、WPのバージョンを収集する間隔を指定しておきましょう。
個人的には週1回程度でいいかなと思います。
あとは指定した間隔で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の機能はどんどん使い込んでいきたいところです。

