-
IaC) AWS CloudFormationCloud/IaC 2022. 9. 19. 20:41
실습 환경 : AWS Console (2022/09), Visual Studio Code
실습 목적 : IaC 서비스인 AWS CloudFormation에 대해 알아보고 적용해본다.
AWS CloudFormation 이란?
- AWS의 대표적인 IaC 구성조정 도구.
- 스택을 생성할 때마다 템플릿에 설명된 리소스를 수동으로 생성하거나 구성할 필요없이 자동으로 설정한다.
- JSON 또는 YAML으로 작성한다.
AWS CloudFormation 의 장점
- 무료
- 인프라 관리 간소화
- 신속하게 인프라 복제
- 인프라 변경사항을 쉽게 제어 및 추적
AWS CloudFormation 구성요소
탬플릿 [ Template ]
- 스택 리소스 프로비저닝 및 구성을 위해 필요한 텍스트 파일
- JSON 또는 YAML 형식의 파일로 작성
- AWS CloudFormation Designer를 사용하여 GUI 기반으로 작성할 수 있다.
- AWS CloudFormation 템플릿을 AWS 리소스 구축을 위한 blueprint로 사용.
스택 [ Stack ]
- 하나의 단위로 관리할 수 있는 AWS 리소스 모음
- 스택의 생성, 업데이트, 삭제를 통해 리소스 모음의 생성, 업데이트, 삭제 가능
- 스택의 모든 리소스는 AWS Cloud Formation 템플릿을 통해 정의된다.
- 스텍을 삭제하면 모든 리소스는 모두 삭제된다.
AWS CloudFormation 작동 방식
- JSON 또는 YAML 포맷으로 AWS CloudFormation 템플릿 작성 - 구성하려하는 AWS 리소스에대한 정보 기술
- 작성된 템플릿을 S3 버킷에 저장 - 템플릿 파일은 로컬 저장 또는 S3버킷 저장 선택 가능
- 템플릿 위치를 지정하여 AWS CloudFormation 스택 생성
- 템플릿에 지정된 스택을 통해 AWS리소스에 대한 프로비저닝 및 구성작업 진행
CloudFormation 탬플릿 구성 요소
AWS TemplateFormationVersion (선택사항)
- 템플릿버전
- 탬플릿 문자는 문자열 형태 사용
- 값을 지정하지 않은 경우 최신 버전 템플릿 포맷버전으로 지정
Metadata (선택사항)
- 템플릿에 대한 추가정보 제공
- CloudFormation은 Metadata섹션에 포함된 정보를 변환, 수정, 삭제하지 않음
- 민감 정보는 포함하지 않는것이 좋다
Parameter (선택사항)
- 스택을 생성하거나 업데이트할 때, 실행 시간에 템플릿에 전달하는값
- 템플릿의 Resource 및 Outputs 섹션에서 파라미터 참조가능
- 최대 60개 파라미터 지정가능
- 각 파라미터마다 CloudFormation이 스택을 프로비저닝할 실행 시간에 대한 값을 할당해야 함
- 파라미터는 동일한 템플릿에서 선언하고 참조해야함
- 파라미터 참조시에는 !ref<파라미터 이름> 형식을 사용한다
Mapping (선택사항)
- 조건부 파라미터 값을 지정하는데 사용할 수 있는 키와관련된 값의 매핑
- Mappings 섹션은 "키 이름" "Mappings"로 이루어져있다
- 매핑키 이름은 문자열 사용
Resources (필수사항)
- AWS 리소스 및 해당 속성 지정
- Logical ID : Resource 식별자, 논리적 ID (영숫자여야 하고, 고유한 값을 가져야한다)
- Resource type : 선언하려는 리소스 유형을 식별한다
- 리소스 속성(Properties) : 리소스에 지정할 수 있는 추가옵션
Outputs (선택사항)
- 스택 속성을 볼 때마다 반환하는 값 설명
- CloudFormation은 outputs 섹션에 포함된 정보를 삭제하거나 난독화 하지 않는다.
- 최대 60개 출력 가능
AWS CloudFormation 구현 (Sample)
샘플 탬플릿 다운로드
AWS 홈페이지 -> Documentation> AWS CloudFormation > User Guide -> Sample templates에서 Asia Pacific (Seoul) Region> Application frameworks -> LAMP stack basic 의 View 클릭 후 JSON 저장
스택 생성
CloudFormation 메뉴 -> 스택에서 스택 생성(새 리소스 사용 선택) -> 스택 생성, 스택 세부 정보 지정
스택 생성
- 템플릿 준비 : 준비된 템플릿
- 템플릿 지정 : 템플릿 파일 업로드 - 파일선택 (샘플 템플릿 파일)
스택 세부 정보 지정
- 스택 이름 : 스택 이름 설정
- 파라미터 : 각 파라미터 값 입력
스택 옵션 구성 설정 후, 스택 생성 -> 스택이 정상적으로 생성되었는지 스텍의 이벤트 확인
스택 옵션 구성
- 태그 : Name 태그 설정
- 권한 : default
- 스택 실패 옵션 : 모든 스택 리소스 롤백
- 고급옵션 : default
결과 확인
스택 생성 완료 후, EC2 메뉴 인스턴스 -> 생성된 EC2 instance의 퍼블릭 IPv4 주소 확인 -> 브라우저에 주소 입력
스택 생성 요소 설명
스텍 세부정부 지정
파라미터 : templeate 파일에 지정된 파라미터 정보 표시, 해당 template를 이용하여 AWS리소스 생성시
필요한 파라미터 입력 시 사용스택 옵션 구성
스택 실패 옵션 :
- 모든 스택 리소스 롤백 - 이전 정상실행 버전으로 복원
- 성공적으로 프로비저닝된 리소스 보존 - 성공한 리소스는 보존하고 실패한 리소스는
이전 정상실행 버전으로 복원 - 스택 생성 후 이벤트 정보를 확인하면 해당 스택이 템플릿을 이용하여 수행하는 과정 정보가 출력 된다. 과정 중 에러가 발생하면(예. ROLLBACK_IN_PROGRESS - VPC의 CIDR범위를 지정하지 않아 발생)원인을 파악하여 템플릿 내용을 수정하고 다시 수행하는 과정을 반복한다.
- 스택을 삭제하면 스택에 의해 생성된 모든 AWS 리소스는 삭제된다.
'Cloud > IaC' 카테고리의 다른 글
IaC) Ansible (0) 2022.09.20