AWS Systems ManagerのRunCommand機能でChef実行メモ
前提確認
- 対象EC2のOSにSSM Agentが導入済みでssm-userがsudo可能な構成
- 対象EC2のIAMロールに"AmazonS3ReadOnlyAccess"などS3読取権限が付与されアクセス可能
Chef Cookbook配置用のS3 Bucketを東京リージョンへ作成
(例) cookbook20200923 など
S3 BucketのBucket Policyの設定
SystemsManagerでS3のCookbookを指定する際、オブジェクトURLでの指定となるためBucket Policyを指定します。 以下VPCからアクセス可能なBucket Policyの設定例です。 [S3] -> [cookbook20200923] -> [アクセス権限タブ] -> [バケットポリシー]
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetObjectFromVPC", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::cookbook20200923/*", ← 作成したBucket名 "arn:aws:s3:::cookbook20200923" ], "Condition": { "StringLike": { "aws:SourceVpc": "vpc-XXXXXXXXXXXX" ← アクセスするVPC名 } } } ] }
Chef Cookbookの配置
適用したいCookbookをtar+gzコマンドでアーカイブし、1で作成したS3 Bucketへ配置する。
# ls -l cookbooks/ total 0 drwxr-xr-x 6 root root 168 Sep 16 03:36 httpd_centos drwxr-xr-x 6 root root 168 Sep 16 03:36 httpd_install # tar zcvf cookbooks20200923.tar.gz ./cookbooks (略) # ls -l cookbooks20200923.tar.gz -rw-r--r-- 1 root root 14044 Sep 23 05:04 cookbooks20200923.tar.gz ←このファイルを1で作成したS3 BucketへUPLOADしてください。
AWS Systems ManagerでのChef実行例
S3 Bucketに配置したCookbookファイルのオブジェクトURL確認
AWS Systems Managerのrun command実行
AWS Systems Managerのrun command実行(AWS-ApplyChefRecipes)
AWS Systems Managerのrun command実行結果