AWS Systems ManagerのRunCommand機能でChef実行メモ

前提確認

  • 対象EC2のOSにSSM Agentが導入済みでssm-userがsudo可能な構成
  • 対象EC2のIAMロールに"AmazonS3ReadOnlyAccess"などS3読取権限が付与されアクセス可能

Chef Cookbook配置用のS3 Bucketを東京リージョンへ作成

(例) cookbook20200923 など

S3 BucketBucket 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確認 f:id:hitoshi-shoji:20201204233703p:plain

AWS Systems Managerのrun command実行 f:id:hitoshi-shoji:20201204233746p:plain

AWS Systems Managerのrun command実行(AWS-ApplyChefRecipes) f:id:hitoshi-shoji:20201204233851p:plain

AWS Systems Managerのrun command実行結果 f:id:hitoshi-shoji:20201204234143p:plain