네트워크, 로드밸런서, 저장소, 서버 등의 인프라 자원을 수동 설정이 아닌 코드를 이용하여 프로비저닝하고 관리하는 것
대표적인 IaC도구로 Terraform, CloudFormation, Pulumi, Azure ARM Template 등이 있다.
서버 운영체제 상에 필요한 소프트웨어를 설치하고 원하는 설정으로 관리하는 것
Configuration as Code 라고도 불린다.
대표적인 형상관리 도구로 Ansible, Puppet, Chef, Salt Stack 등이 있다.
IaC는 인프라 관리를 코드로 관리하기 위한 것
형상관리는 운영체제 상에서 패키지를 설치하고 필요한 설정들을 코드로 관리하기 위한 것
AWS EC2, VMware, VirtualBox, Docker 등 여러 플랫폼에서 재사용 가능한 머신 이미지를 빌드하는 것
대표적인 이미지 빌더로 패커(Packer), AWS EC2 Image Builder 등이 있다.
- AWS EC2 Image Builder : AMI 형태의 이미지를 만드는 도구
- Packer : 여러 플랫폼을 지원하는 이미지 빌더 도구
사람이 수동으로 처리하는 것을 코드로 작성하여 관리한다.
-> 휴먼 에러 방지 / 재사용성 / 일관성
소프트웨어 개발처럼 Git과 같은 버전 관리 시스템(VCS) 활용이 가능하다.
-> 코드 리뷰 / 변경 내용 추적 / 버전 관리 / 협업
선언형 설정(Declarative Configuration)과 절차형 설정(Imperative Congiuration)이 있다.
- 선언형 : 원하는 상태를 선언적으로 정리 하는 것 (Terraform)
- 절차형 : 순차적으로 명령어를 수행하는 것 (Ansible, Shell script)
절차형 ex)
- 패키지를 업데이트 한다.
- nginx 설치 한다.
- 방화벽을 킨다.
IaC는 네트워크, 서버, 데이터베이스, 저장소 등과 같은 인프라 자원을 코드로 관리하는 것으로 Terraform이 대표적인 IaC 도구다.
형상 관리 도구는 서버 상에 소프트웨어 설치 및 설정을 코드로 관리하는 것으로 Ansible이 대표적이다.
이미지빌더는 AWS EC2, VirtualBox, Docker 등과 같은 특정 환경에서 재사용 가능한 이미지를 코드로 정의하는 것으로 Packer가 대표적이다.
IaC, 형상관리도구, 이미지 빌더 모두 기존 인프라 문제들을 코드로 관리하여 해결하기 위한 시도로 DevOps를 실천하기 위한 Best Practice디.