[AWS] CloudFormation 스택 생성 및 삭제

반응형

템플릿 업로드, 스택 생성/삭제를 통해 AWS 인프라 자원 자동화 실습 수행!

 

CloudFormaion 소개

템플릿

- 코드를 사용해 AWS 인프라에 개략적인 선언을 하는 방법

- 코드로 정의된 인프라 자원들을 자동으로 생성 및 삭제 가능

- 일반적으로 IaC(Infrastructure as Code)라 부름

 

스택 생성

- 템플릿을 CloudFormation에 업로드하여 스택 생성

- 스택 생성 시 템플릿에 정의된 AWS 인프라 코드 순서대로 자원 생성

 

스택 삭제

- 스택 삭제 시 AWS 인프라 코드 순서대로 자원 삭제

- 스택 삭제 시 자동으로 Instance도 삭제됨

 

스택 생성

AWS 관리 콘솔 → CloudFormation 서비스 → 스택 → 스택 생성

 

템플릿 준비 (준비된 템플릿) → 템플릿 파일 업로드 체크 → 파일 선택 (준비된 템플릿 yaml 파일 업로드)

준비된 템플릿 yaml 파일 내용
출처 : 따라하며 배우는 AWS 네트워크 입문 (저자 김원일, 서종호)
Resource 부분 Name을 수정하여 사용하였음


Parameters:
  KeyName:
    Description: Name of an existing EC2 KeyPair to enable SSH access to the instances. Linked to AWS Parameter
    Type: AWS::EC2::KeyPair::KeyName
    ConstraintDescription: must be the name of an existing EC2 KeyPair.
  LatestAmiId:
    Description: (DO NOT CHANGE)
    Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
    Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'
    AllowedValues:
      - /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2

Resources:
  Instance0:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !Ref LatestAmiId
      InstanceType: t2.micro
      KeyName: !Ref KeyName
      Tags:
        - Key: Name
          Value: WebServer
      SecurityGroups:
        - !Ref securitygroup0
      UserData:
        Fn::Base64:
          !Sub |
            #!/bin/bash
            yum install httpd -y
            systemctl start httpd && systemctl enable httpd
            echo "<h1>Test Web Server</h1>" > /var/www/html/index.html

  securitygroup0:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Enable HTTP access via port 80 and SSH access via port 22
      SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: 80
        ToPort: 80
        CidrIp: 0.0.0.0/0
      - IpProtocol: tcp
        FromPort: 22
        ToPort: 22
        CidrIp: 0.0.0.0/0

 

스택 이름 지정 → KeyName(미리 만들어 둔 키 페어 선택) → 3단계 (스택 옵션 구성) 건너뛰기 → 4단계 (검토) 건너뛰기

 

생성 버튼 누른 후 아래처럼 CREATE_IN_PROGRESS 단계에서 기다리면 됨

실습 때는 InstanceType을 T2.micro로 리소스 자원이 적어 비교적 빠르게 생성된다는 걸 알고 있자

실제로 Type을 다르게 줘서 리소스가 큰 템플릿을 만들게되면 생성하는데 시간이 조금 더 걸림

 

템플릿 yaml 파일 내에서 정의내렸던 Instance와 securitygroup을 포함한 CF-TEST1 이라는 CloudFormation 스택이 생성 완료됨

 

스택으로 생성된 Instance 테스트

AWS 관리 콘솔 → EC2 서비스 → 인스턴스 → 생성된 인스턴스 체크 → 퍼블릭 IPv4 확인

 

Putty를 이용해 52.78.238.46 퍼블릭 IPv4로 ssh(22) 접속 테스트 성공

 

웹 서비스(80) 접근도 정상적으로 성공

 

스택 삭제

AWS 관리 콘솔 → CloudFormation → 스택 → 삭제할 스택 체크 → 삭제

 

스택 삭제 클릭

 

정상적으로 스택이 삭제된 것을 확인

 

스택이 삭제되면 해당 스택으로 생성된 Instance도 종료 상태(=삭제 상태)로 변함

 

반응형

댓글

Designed by JB FACTORY