IaaC란?
- Infrastructure as a Code의 약자
- IT 서비스(IaaC)를 위한 시스템을 구성(IaC)할 때 수동으로 구성하는 대신 Shell 기반의 스크립트를 사용하여 컴퓨팅 인프라를 구성하는 기술
- 프로그래밍형 인프라 라고도 불림 - 프로그램 처리하는 방식
- 핵심적인 구성요소로 자리 잡음
- 성공적인 DevOps 도입을 위해 반드시 필요한 기술 중 하나
IaaC 배포 방법
- IaC
- CloudFormation
- Ansible
- Terraform
- AWS OpsWorks
- AWS Lambda
- CloudWatch - 모니터링 해주는 기술
- CI/CD
- Cloud9
- CodeCommit
- CodeBuild
- CodeDeplay
- 위의 것들을 합치는것이 CodePipeline
IaC 의 기대효과
- 비용 절감
- 빠른 실행
- 리스트 관리
Infra as a Code 도구
- 구성 조정 도구(Configuration Orchestration Tool)
- 인프라를 코드로 만들어서 배포하는 것
- 서버 및 기타 인프라의 구축을 자동화하도록 설계
- ex) AWS Cloud Formtaion, Terraform
- 구성 관리 도구(Configuration Management Tool)
- 시스템을 구성하고 관리하는 것
- 이미 프로비저닝된 인프라의 소프트웨어와 시스템을 구성하고 관리하도록 설계
- 프로비저닝
- 준비상태를 말한다.
- 즉 배포를 받고나서 운영하기 전 단계
- ex) Chef, ANSIBLE

AWS CloudFormation - 템플릿 기반 구성 조정 도구
- AWS 리소스를 모델링 하고 설정하여 리소스 관리 시간을 줄인다.
- AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해주는 대표적인 IaC 기반의 조정 도구.
구분 내용 서비스명 AWS CloudFormation 설명 모든 클라우드 인프라 리소스를 모델링 및 프로비저닝 주요 특징 1. 사용자 인프라용 템플릿 생성
2. JSON, YAML 파일로 텍스트 모델링 작성
3. 인프라 변경 사항에 대해 미리보기 기능 제공
4. 코드처럼 버전 관리/코드 검토/템플릿 업데이트 기능 제공
5. 종속성 요구에 기반하여 AWS 리소스 제공
6. 개발, CI/CD 및 관리 도구와 통합
7. 리소스 사용 비용만 지불
AWS CloudFormation 특징
- 인프라 관리 최소화
- Cloudformation을 사용하여 스택 생성하면 리소스를 스택 단위로 손쉽게 구성 및 관리 가능
- 신속한 인프라 복제
- 가용성을 높이기 위해 여러 리전에 복제할 수 있음
- 인프라 변경 사항을 쉽게 제어 및 추적
- 리소스와 설정이 템플릿에 저장되어 버전 관리 기능을 통해 이전과의 차이점 추적 가능
- 문제가 생기면 언제든지 이전 버전으로 되돌리기 가능
AWS Cloudformation 구성
- Template ( 소스코드 )
- 템플릿 : 스택 리소스 프로비저닝 및 구성을 위해 필요한 파일
- JSON 또는 YAML 파일 형식으로 작성
- Cloudformation 스택에서 프로비저닝할 리소스 설명함
- Cloudformation ( 프로그램 )
- Stack 생성하고 Stack에 대한 변경 사항을 확인 및 업데이트
- Stack 생성 및 변경 중 에러 감지를 통한 롤백 지원
- Stack ( 빌드 )
- 스택이란
- 하나의 단위로 관리할 수 있는 AWS 리소스 모음
- 스택 생성, 수정, 삭제를 통해 리소스 모음의 생성, 수정, 삭제 가능
- 모든 리소스는 Cloudformation 템플릿을 통해 정의
- 스택을 삭제하면 관련 리소스 모두 삭제
- 스택이란

AWS Cloudformation 작동방식
- JSON or YAML 파일을 이용해 코드를 작성 가능
- Cloudformation 템플릿을 로컬에 저장하거나 S3 버켓에 저장 가능
- AWS 콘솔, CLI 또는 API Call을 통해 AWS Cloudformation을 실행하여 템플릿 코드 기반으로 스택 생성 가능
- AWS 리소스에 대한 프로비저닝 및 구성 작업을 진행
API에 Access할 수 있는 방법 3가지
- AWS 콘솔
- AWS CLI
- SDK
- 소프트웨어 개발 툴 킷
- ex) 파이썬을 쓸려면 관련 모듈을 다 다운 받아줘야 한다.
Cloudformation Template 구성사항
- Parameters:
- 사용자가 직접 타이핑(동적) 하거나 선택옵션을 통해 선택
- 생성 리소스 수량, 크기 설정
- 변수를 실제 리소스 구성할때 적용한다.
-
Parameters:
KeyName:
Description: VPC and SN and EC2 TEST
Type: AWS::EC2::KeyPair::KeyName
ConstraintDescription: must be the name of an existing EC2 KeyPair.
- Resources:
- 지정된 속성값 ImageID & Instance Type 및 Keypair 파라미터 값에 대한 참조를 포함한다.
-
Resources:
Type: AWS::EC2::Instance
Properties:
ImageId: ami 이미지 파일
InstanceType: t2.micro
KeyName: !Ref KeyName
Tags:
- Key: Name
Value: Instance
- Outputs:
- 템플릿 실행 후 결과 값 표시 - IP 주소 등
-
Outputs:
GAListenerARN:
Description: 설명
# GetAtt : 속성값을 모두 뽑아온다.
Value: !GetAtt GAListener.ListenerArn
'클라우드 > DevOps' 카테고리의 다른 글
DevOps - 데브옵스란? (0) | 2021.10.19 |
---|