State Managerから「AWS-GatherSoftwareInventory」というドキュメントを関連付けすることで、インスタンス内の「applications」「awsComponents」「customInventory」「networkConfig」「windowsUpdates」をSSMエージェントが定期的に収集してくれる。
これをAWS-CLIやSDKから引っ張ってくるようにすれば、管理しているインスタンスの情報をssh接続せずに確認できるようになる。
今回の対象
例によってAMIMOTO AMI(HVM)です。
AWS-CLIでNginxのバージョンを調べる
$ aws ssm list-inventory-entries \
--instance-id YOUR_INSTANCE_ID \
--type-name "AWS:Application" \
--filters Key=Name,Values=nginx,Type=BeginWith
{
"InstanceId": "i-XXXXXXXXXXXXXX",
"TypeName": "AWS:Application",
"Entries": [
{
"Publisher": "nginx inc. via OpsRock LLC",
"Name": "nginx",
"URL": "http://nginx.org/",
"Version": "1.11.10",
"ApplicationType": "System Environment/Daemons",
"InstalledTime": "2017-03-22T00:20:56Z",
"Architecture": "x86_64"
}
],
"SchemaVersion": "1.0",
"CaptureTime": "2017-03-23T08:30:55Z"
}
--filters
を付けないとインスタンス内にあるアプリの情報全部出してくるので見るのが大変です。
クエリはKey=Name,Values=アプリ名,Type=BeginWith
にしておくと前方一致で検索してくれるので、php-CCC
みたいなものも取得できます。
AWS-CLI + jqでPHPのバージョンを見る
jqと組み合わせるといい感じに情報が取りやすいです。
$ aws ssm list-inventory-entries \
--instance-id YOUR_INSTANCE_ID \
--type-name "AWS:Application" \
--filters Key=Name,Values=php,Type=BeginWith | jq ".Entries[] | .Name,.Version"
"php"
"7.0.17"
"php-cli"
"7.0.17"
"php-common"
"7.0.17"
"php-devel"
"7.0.17"
"php-fpm"
"7.0.17"
"php-gd"
"7.0.17"
"php-json"
"7.0.17"
"php-mbstring"
"7.0.17"
"php-mcrypt"
"7.0.17"
"php-mysqlnd"
"7.0.17"
"php-opcache"
"7.0.17"
"php-pdo"
"7.0.17"
"php-pear"
"1.10.3"
"php-pecl-memcache"
"3.0.9"
"php-pecl-zip"
"1.13.5"
"php-process"
"7.0.17"
"php-xml"
"7.0.17"
AWS-CLIでNginx / Percona / PHPのバージョンを一気に調べる
--filters
のValuesはカンマ区切りで複数指定できます。
なので調べたいものをまとめて指定してやれば網羅も簡単です。
$ aws ssm list-inventory-entries \
--instance-id YOUR_INSTANCE_ID \
--type-name "AWS:Application" \
--filters Key=Name,Values=php,nginx,percona,Type=BeginWith | jq ".Entries[] | .Name,.Version"
"nginx"
"1.11.10"
"Percona-Server-client-56"
"5.6.35"
"Percona-Server-server-56"
"5.6.35"
"Percona-Server-shared-56"
"5.6.35"
"php"
"7.0.17"
"php-cli"
"7.0.17"
"php-common"
"7.0.17"
"php-devel"
"7.0.17"
"php-fpm"
"7.0.17"
"php-gd"
"7.0.17"
"php-json"
"7.0.17"
"php-mbstring"
"7.0.17"
"php-mcrypt"
"7.0.17"
"php-mysqlnd"
"7.0.17"
"php-opcache"
"7.0.17"
"php-pdo"
"7.0.17"
"php-pear"
"1.10.3"
"php-pecl-memcache"
"3.0.9"
"php-pecl-zip"
"1.13.5"
"php-process"
"7.0.17"
"php-xml"
"7.0.17"