Cloudformation에서 EC2를 만든 이야기

2606 단어 CloudFormationAWS

소개



Cloudformation에서 EC2 구축 + 사용자 데이터로 M/W 도입을 자동화하려고 했습니다.
결론에서 말하면 사용자 데이터 관련 템플릿 포맷 에러를 해소할 수 없고, 단지 Cloudformation에서 EC2를 만드는 것만의 평범한 결과로 끝났습니다.

그래도 CLoudformation에 대해 다소 공부가 되었기 때문에 정리합니다.
(향후 해결책을 찾으면 업데이트합니다)

하고 싶은 일


  • EC2 인스턴스 만들기
  • 템플릿을 수정하지 않고 최신 버전의 Amazon Linux 2 AMI로 시작합니다.
  • 사용자 데이터로 terraform을 설치 【실패】

  • terraform 도입



    우선은 사용자 데이터 작성을 위해 EC2상에서 보통으로 도입했습니다.
    특별한 이유는 없지만 어쨌든 루트 프로필에 PATH를 추가하는 단계도 포함했습니다.
    $ sudo yum install wget unzip
    $ wget https://releases.hashicorp.com/terraform/0.12.20/terraform_0.12.20_linux_amd64.zip
    $ sudo unzip terraform_0.12.20_linux_amd64.zip -d /usr/local/bin/
    $ sudo sed 's|^PATH=\$PATH:\$HOME/bin|PATH=\$PATH:\$HOME/bin:/usr/local/bin|g' /root/.bash_profile > /tmp/bash_profile_tmp
    $ sudo chown root.root /tmp/bash_profile_tmp
    $ sudo mv /tmp/bash_profile_tmp /root/.bash_profile
    

    ※보충
    ・sed는 통상 「sed's/~/~/g'」와 같이 쓰이는 경우가 많습니다만, 「/」의 부분은 다른 기호로 옮겨놓을 수 있어, 이번과 같이 디렉토리 패스를 기재한다 경우는 「/」이외로 하면 편리합니다.
    · terraform의 다운로드 URL은 공식 페이지을 참조하십시오.

    Cloudformation 템플릿



    궁극적으로 성공한 Version을 올립니다.
    (디자이너로 가와만 작성해, 나머지는 공식 페이지 그 외를 보면서 기재)
    AWSTemplateFormatVersion: 2010-09-09
    Metadata:
      'AWS::CloudFormation::Designer':
        389e90b9-2b30-43fa-a312-411827e53a79:
          size:
            width: 60
            height: 60
          position:
            x: 375
            'y': 125
          z: 0
    
    Parameters:
        Ec2ImageId:
            Type: AWS::SSM::Parameter::Value<String>
            Default: /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp
        Ec2InstanceType:
            Type: String
            Default: t2.micro
    
    Resources:
      EC2I4K5C4:
        Type: 'AWS::EC2::Instance'
        Properties: 
            ImageId: !Ref Ec2ImageId
            InstanceType: !Ref Ec2InstanceType
        Metadata:
          'AWS::CloudFormation::Designer':
            id: 389e90b9-2b30-43fa-a312-411827e53a79
    

    ※보충
    ・AMI의 이미지는 SSM의 파라미터 경유로 지정하면 항상 최신판을 취득할 수 있습니다.
    (SOA의 시험에서도 나온 것 같은 생각이 듭니다)
    ・사실은 이것에 「KeyName(키 페어명)」과 「UserData(사용자 데이터)」를 넣고 싶었습니다만, 포맷 에러를 해소할 수 없고 단념.

    스택 작성시의 주의점



    템플릿을 시도할 때 스택 생성 실패 시 롤백을 비활성화합니다.
    (그렇지 않으면 실패해도 아무런 오류도 발생하지 않으며 디버깅을 할 수 없습니다)

    좋은 웹페이지 즐겨찾기