[AWS CloudFormation] #0 실습 전 개념 정리

728x90

CloudFormation이란?

  • AWS 리소스들을 자동으로 생성해주는 IaC도구
  • AWS 구성을 재사용하기 쉽게 코드로 작성해두는 것

 

Ansible과의 차이점

  • Ansible은 리소스 구성을 넘어서 서버 운영까지 자동화 : DevOps에 더 가까움
  • CloudFormation은 리소스 구성만 하는 말 그대로의 IaC

 

작동 방법

템플릿 작성 -> 템플릿 업로드 -> 스택 생성 -> 스택 설정 및 리소스 생성

  • 리소스 구성들을 코드화한 템플릿을 작성하여 해당 템플릿으로 스택을 생성하면, 자동으로 리소스들이 생성된다
  • 템플릿은 JSON 또는 YAML 형식으로 작성된다. 여기선 YAML 형식으로 진행하도록 하겠다

 

템플릿 구조

공식 문서 참조

1) AWSTemplateFormatVersion (포맷 버전)

  • 템플릿의 기능을 식별한다
  • 현재 유일한 유효 값은 2010-09-09 이다

2) Description

  • 템플릿에 대한 설명
  • 선택사항이긴 하나 이 템플릿에 대한 전체적인 설명을 해주는게 좋다

3) Parameter

  • 스택 생성 시 넘겨지는 파라미터들
  • 템플릿 내부에서 Ref 함수로 참조한다
  • 선택사항

4) Resources (주 내용)

  • 말 그대로 AWS 내에서 생성될 리소스들을 뜻함
  • YAML에서의 구조
Resources:
  Logical ID:
    Type: Resource type
    Properties:
      Set of properties
  • Logical ID : 해당 템플릿 내의 고유한 id. 이 이름을 가지고 다른 리소스를 참조한다
  • Resource Type : 리소스 유형 (VPC인지 EC2인지 등등..)
  • Properties : 각각의 리소스별로 필요한 속성들을 작성해준다

AWS 리소스별 속성 참조는 여기서

 

얘네 말고도 Mapping, Outputs 등이 있지만 일단 진행하면서 나중에 설명하도록 하겠다

 

모듈식 설계 사용

스택4 앱1 앱2 앱3 앱4 앱5 앱6 EC2 등
스택3 애플리케이션 아키텍처1 애플리케이션 아키텍처2 애플리케이션 아키텍처3 ELB, S3 등
스택2 VPC 옵션1 VPC 옵션2 VPC
스택1 IAM 구성 IAM

쪼개서 선택적으로 배포하는 식으로 사용한다고 한다

Stacksets - 여러 템플릿을 그룹핑해서 다중 리전에 해당 템플릿들을 한번에 배포

 

 

진행한 실습 GitHub

728x90