데이터 엔지니어 기술 블로그

[코드로서의 인프라] Ansible, Terraform, Puppet 어떤 것을 선택해야 할까? 본문

Infrastructure

[코드로서의 인프라] Ansible, Terraform, Puppet 어떤 것을 선택해야 할까?

jun_yeong_park 2021. 4. 1. 11:18
반응형

개요

DevOps에서 IaC를 사용하여 프로세스를 구축하고 있다. IaC란 Infrastructure as Code로 인프라를 코드로 정리하여 인프라를 관리하는 것을 말한다. 이렇게 되면 인프라를 재구성 할 때에도 한 번의 실행으로 재구성할 수 있고, 인프라에 관한 절차를 반복적으로 테스트하고 실행할 수 있다. 기존에 인프라를 업데이트 할 때 문서도 업데이트 했다고 하면, 사람이 직접 사용하는 것이고 동기화가 되지 않기 때문에 불일치가 발생할 수 있으며 IaC는 이와 관련된 인적 문제를 해결할 수 있다.

IaC 도구에는 Terraform, Ansible, Puppet 등이 있는데, 이들은 모두 강점과 약점을 가지고 있다.

 

비교

Puppet

2005년에 출시했고 가장 오래된 IaC 도구 중 하나이다. 카탈로그를 통해 상태를 고치는 서버 / 클라이언트 기반이고 메타데이터 구성 방법인 hieradata를 사용한다.

 

Terraform(테라폼)

1. 2014년에 출시했고 클라우드에 상관 없이 여러 클라우드 서비스들을 지원하기 때문에 다중 클라우드, 다중 환경을 관리할 수 있다. Hashicorp 언어를 사용하며 사용자 친화적이다.

2. 오케스트레이션 도구이다. 그렇기 때문에 원하는 상태에 있도록 계속 유지하려고 한다. 어떤 부분이 제대로 작동하지 않을 경우 자동으로 계산해서 리로드하려고 한다. 일정한 상태가 필요한 환경에 적합하다.

3. 선언적 언어이며, 사용자가 설명한 최종 상태에 도달하려고 노력한다.

4. 테라폼 프로비저닝 - 사용자 서버에 대한 액세스 권한 부여, 필수 외부 소프트웨어 설치, Terraform 자격 증명 등 추가 조치 필요

출처: https://phoenixnap.com/blog/ansible-vs-terraform-vs-puppet

Ansible(앤서블)

다양한 클래스와 구성 방법을 활용할 수 있다. Wrapper 모듈로 다른 공급자에 연결하여 구성할 수도 있다. 가볍고 배포 기능이 빠른 것이 장점이다.

구성 관리 도구이다. 그렇기 때문에 시스템을 재설정하지 않고 시스템을 교체하는 대신 문제를 복구하려고 한다. 그렇기 때문에 Terraform이 더 상위호환으로 간주된다.

선언적, 절차적으로 모두 할 수 있다.

AWS과 앤서블은 서로 잘 연동된다. S3, Route53, Lambda등 100개에 가까운 모듈을 연결할 수 있다. 

앤서블 프로비저닝 - 안정적인 프로비저닝 가능

출처: https://phoenixnap.com/blog/ansible-vs-terraform-vs-puppet

 

차이점 Ansible Terraform
관리 및 일정 서버가 구성을 노드에 푸쉬하기 때문에 즉각적인 배포 가능하다. 리소스 스케줄러로 리소스 요청 가능하고 스케줄이 가능하다.
설치 및 사용 설치 및 사용이 간단하고 에이전트가 없고 마스터만 존재한다. 이해하기 쉽다.
유효성 활성 노드에 문제가 생기면 보조 노드를 사용할 수 있다. X
확장성 O O
GUI

 

반응형
Comments