Terraform | Ansible | CloudFormation | |
유형 | 프로비저닝 | 구성 관리 | 프로비저닝 |
오픈소스 여부 | 공개 | 공개 | 비공개 |
적용 대상 클라우드 | 멀티 | 멀티 | AWS 전용 |
정책 설정 | 가능 | 불가능 | 부분적 |
구성 방식 | Immutable | mutable | Immutable |
라이프사이클 관리 | 가능 | 불가능 | 부분적 |
온프레미스 지원 | 부분적 | 부분적 | 불가능 |
✔︎ Immutable : 인프라스트럭처의 상태를 변경할 때, 기존 인프라스트럭처를 수정하거나 업데이트하는 것이 아니라 새로운 인프라스트럭처를 생성하여 이전 상태의 인프라스트럭처를 교체하는 방식을 의미한다.
- Ansible
프로비저닝보다 구성 관리에 더 큰 장점을 가지고 있고, 테라폼으로 자원을 생성(프로비저닝)하고 앤서블로 생성된 자원에 대한 구성 관리하는 방식으로 조합해 사용할 수 있다. - CloudFormation
AWS 환경을 프로비저닝하기 위한 도구로 JSON 또는 YAML로 정의한다.
AWS 전용 IaC 도구로 다른 클라우드 자원을 프로비저닝할 수 없지만 AWS에서 완벽히 동작한다.
CloudFormation을 추상화해 파이썬이나 타입스크립트 같은 개발 언어를 사용해 더 코드적으로 자유롭게 프로비저닝이 가능한 AWS CDK도 있다.