도쿄 지역의 EC2 Linux에서 우아하게 명령을 수행합니다~ Amazon EC2 RunCommand~

5675 단어 AWS
나야.
EC2 RunCommand는 도쿄 지역에서도 사용할 수 있습니다.
당장 해보고 싶어요.
참조: 문서

IAM Role의 준비


SSM문서에서 EC2 RunCommand 실행에 필요한 권한을 정의하고 RunCommand를 실행하는 EC2의 IAM Role Policy로 사용
  • terraform에서 정책을 응용한 예
  • resource "aws_iam_role_policy" "ssm-iam-role" {
      name = "ssm-iam-role-policy"
      role = "${aws_iam_role.hogehoge-iam-role.name}"
      policy = <<EOF
    {
      "Version": "2012-10-17",
      "Statement" : [
        {
        "Effect": "Allow",
        "Action": [
            "ssm:DescribeAssociation",
            "ssm:GetDocument",
            "ssm:ListAssociations",
            "ssm:UpdateAssociationStatus",
            "ssm:UpdateInstanceInformation"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "ec2messages:AcknowledgeMessage",
            "ec2messages:DeleteMessage",
            "ec2messages:FailMessage",
            "ec2messages:GetEndpoint",
            "ec2messages:GetMessages",
            "ec2messages:SendReply"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "cloudwatch:PutMetricData"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "ec2:DescribeInstanceStatus"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "ds:CreateComputer",
            "ds:DescribeDirectories"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:DescribeLogGroups",
            "logs:DescribeLogStreams",
            "logs:PutLogEvents"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:AbortMultipartUpload",
            "s3:ListMultipartUploadParts",
            "s3:ListBucketMultipartUploads"
        ],
        "Resource": "*"
    }
    
      ]
    }
    EOF
    }
    

    SSM 에이전트 설치


    SSM 에이전트를 설치합니다.
    다음 대리는 도쿄 지역에서 사용합니다.
  • playbook
  • - name: download EC2 run command
      get_url: url=https://amazon-ssm-ap-northeast-1.s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm dest=/tmp/amazon-ssm-agent.rpm
    - name: install EC2 run command
      package: name=/tmp/amazon-ssm-agent.rpm state=installed
    - name: start ec2 run command service(amazon-ssm-agent)
      service: name=amazon-ssm-agent enabled=yes state=started
    
  • ansible-playbook
  • orenomac$ ansible-playbook -i ./inventoryhosts mysql-server.yml
    PLAY ***************************************************************************
    
    TASK [setup] *******************************************************************
    ok: [prd-mysql2]
    ok: [prd-mysql4]
    ok: [prd-mysql1]
    ok: [prd-mysql3]
    ok: [prd-mysql5]
    ok: [prd-mysql6]
    
    TASK [include] *****************************************************************
    included: /ansible/roles/amazonlinux_init/tasks/ec2_runcommand.yml for prd-mysql1, prd-mysql2, prd-mysql3, prd-mysql4, prd-mysql5, prd-mysql6
    
    TASK [download EC2 run command] ************************************************
    ok: [prd-mysql2]
    ok: [prd-mysql4]
    ok: [prd-mysql3]
    ok: [prd-mysql5]
    ok: [prd-mysql1]
    ok: [prd-mysql6]
    
    TASK [install EC2 run command] *************************************************
    changed: [prd-mysql4]
    changed: [prd-mysql1]
    changed: [prd-mysql2]
    changed: [prd-mysql5]
    changed: [prd-mysql3]
    changed: [prd-mysql6]
    
    TASK [start ec2 run command service(amazon-ssm-agent)] *************************
    ok: [prd-mysql2]
    ok: [prd-mysql4]
    ok: [prd-mysql1]
    ok: [prd-mysql3]
    ok: [prd-mysql5]
    ok: [prd-mysql6]
    
    PLAY RECAP *********************************************************************
    prd-mysql1                 : ok=5    changed=1    unreachable=0    failed=0
    prd-mysql2                 : ok=5    changed=1    unreachable=0    failed=0
    prd-mysql3                 : ok=5    changed=1    unreachable=0    failed=0
    prd-mysql4                 : ok=5    changed=1    unreachable=0    failed=0
    prd-mysql5                 : ok=5    changed=1    unreachable=0    failed=0
    prd-mysql6                 : ok=5    changed=1    unreachable=0    failed=0
    

    AWS 콘솔에서 EC2 RunCommand 실행


    호스트 실행 및 준비 명령 선택


    내가 가장 좋아하는sl지령을 설치하고 실행한다.

    EC2에서 RunCommand 실행


    선택한 EC2 인스턴스에 대해 EC2 RunCommand의 Commands가 릴리즈되었습니다.

    실행 결과 확인


    뜻밖에도 Failed.
    EC2 RunCommandsl 명령은 fail입니다.

    소재만 있지만 편한 것 같아요.
    적벽을 누리다.
    끝.

    좋은 웹페이지 즐겨찾기