AWS CloudFormation으로 IaC 시작하기 - 01

AWS CloudFormation으로 IaC 시작하기 - 01

CloudFormation

CloudFormation은 AWS에서 제공하는 IaC툴입니다. 이런 IaC 툴로는 Terraform, Ansible, Puppet 등이 있습니다.

IaC 란?

IaC(Infra as Code, 코드형 인프라) 는 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝하는 것을 말합니다. 기존의 수동적인 인프라 관리 방식은 쉽고 빠르게 아키텍처를 구축할수 있다는 점에서 유리하지만, 여러 단점도 가지고 있습니다.

  • 서비스를 구축하고 관리할 때 인적오류가 발생할 수 있다
  • 리소스간의 의존성을 파악하기 어렵다
  • 인프라의 변경 사항을 추적하기 어렵다

반면에, IaC는 인프라를 코드로 작성하고 관리합니다. 이러한 IaC로 인프라를 구축하면 다음과 같은 메리트가 있습니다.

  • 인프라를 만드는 과정이 자동화되므로, 오류가 훨씬 덜 발생한다.
  • 쉽게 공유할 수 있고, 버전 관리에 용이하다.
  • 리소스의 일관성을 확보할 수 있다.

클라우드포메이션은 AWS에서 제공하는 IaC툴로, AWS 서비스 이외의 서비스는 지원하지 않지만, AWS에서 높은 수준의 서비스를 보증하는 툴입니다. 클라우드포메이션으로 인프라를 구축해보도록 합시다

CloudFormation 개념

클라우드포메이션은 템플릿, 스택을 사용하여 작업합니다.

템플릿

템플릿은 JSON, YAML 형식의 텍스트 파일입니다. 클라우드포메이션은 이 템플릿을 보고 리소스를 구축합니다. 예를 들어 EC2 인스턴스를 프로비저닝한다면 인스턴스 유형, AMI ID, 키페이 이름 등을 지정할 수 있습니다.

AWSTemplateFormatVersion: 2010-09-09
Description: A sample template
Resources:
  MyEC2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      ImageId: ami-0ff8a91507f77f867
      InstanceType: t2.micro
      KeyName: testkey
      BlockDeviceMappings:
        - DeviceName: /dev/sdm
          Ebs:
            VolumeType: io1
            Iops: 200
            DeleteOnTermination: false
            VolumeSize: 20

한 템플릿에서 여러 리소스를 지정할 수도 있습니다. 예를 들어 위 인스턴스에 탄력적 IP를 할당시킬 수도 있습니다.

AWSTemplateFormatVersion: 2010-09-09
Description: A sample template
Resources:
  MyEC2Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      ImageId: ami-0ff8a91507f77f867
      InstanceType: t2.micro
      KeyName: testkey
      BlockDeviceMappings:
        - DeviceName: /dev/sdm
          Ebs:
            VolumeType: io1
            Iops: 200
            DeleteOnTermination: false
            VolumeSize: 20
  MyEIP:
    Type: 'AWS::EC2::EIP'
    Properties:
      InstanceId: !Ref MyEC2Instance

클라우드포메이션은 템플릿을 적용할 때 입력 파라미터를 추가할 수도 있습니다. 예를 들어, 템플릿을 작성할 때가 아닌, 템플릿을 적용할때 인스턴스 유형이나 AMI ID같은 값들을 지정할 수 있습니다.

스택

클라우드포메이션은 스택이라는 하나의 단위로 관련 리소스들을 관리합니다. 예를 들어 ASG, 로드밸런서, RDS 인스턴스를 포함하는 템플릿을 작성합니다. 이러한 리소스를 생성하려면, 생성한 템플릿을 제출해 스택을 생성하면 클라우드포메이션에서 모든 리소스를 자동으로 프로비저닝 해줍니다. 만약 잘못된 템플릿 작성으로 리소스를 생성할 수 없는 경우, 해당 스택을 롤백하고, 모든 추가된 리소스들을 자동으로 삭제할 수 있습니다.

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.