- Published on
Ansible과 Terraform 비교
- Authors
- Name
- 신주용
Ansible, Terraform 비교
Ansible과 Terraform은 IT 인프라 구성과 자동화 분야에서 많이 사용되는 오픈소스 도구입니다. 이 두 가지가 어떤 점이 다른지 간단하게 비교해보았습니다1234.
Ansible | Terraform | |
---|---|---|
주요 사용 목적 |
|
|
언어 및 실행 방식 |
|
|
프로비저닝 및 구성 관리 |
|
|
사용 사례 |
|
|
설치 환경 |
|
|
Ansible과 Terraform에 사용되는 파일 비교
Ansible과 Terraform에서 사용하는 파일 내용도 그 특성을 잘 보여줍니다. 우선 Ansible을 사용하려면 Ansible이 관리할 대상(호스트) 목록을 정의하는 inventory
와 그 대상 호스트에서 실행할 작업 절차를 정의하는 playbook
파일을 작성해야 합니다. 해당 파일 예시는 아래와 같습니다.
특히 Ansible playbook은 bash 스크립트 파일을 YAML 문법으로 적은 것 같습니다. 내가 원하는 어떤 일을 하기 위해 무슨 무슨 명령어를 순서대로 실행하는지를 그대로 적은 느낌입니다.
반면 Terraform은 기본적으로는 main.tf
파일 하나에 다 작성해도 되고(일반적으로는 용도별로 파일을 분리) 여기에는 각 리소스의 '원하는 상태'를 정의합니다. Terraform main.tf
파일의 예시는 아래와 같습니다.
Ansible 파일과는 달리 과정보다는 "Azure에서는 가상 네트워크, 서브넷, ..., 가상머신이 필요한데, 가상 머신은 어떤 크기, 어떤 OS 디스크, 어떤 운영체제를 사용해야 해"를 정해두는 방식입니다.
마무리
Ansible과 Terraform 비교 부분의 '주요 사용 목적' 행과 실제 파일 비교에서 보신 것과 같이 Ansible은 구성 관리, 소프트웨어 설치 및 설정 자동화에 더 특화되어 있고, Terraform은 클라우드 또는 VM 가상화 환경에서 인프라 생성 및 관리에 더 특화된 툴입니다.
따라서 이 둘은 어느 한 쪽이 더 좋고 그것만 써야되는 것이 아니라 병행해서 사용하는 경우가 많은 것 같습니다. 예를 들어 Terraform을 사용해 클라우드에 필요한 인프라를 프로비저닝하고 그 다음 Ansible로 프로비저닝 된 네트워크 장비의 설정값을 변경하거나 서버를 구성하고 애플리케이션을 배포하는 식으로 말이죠. (이 시나리오로 간단하게 테스트 중인데, GitHub repo 링크에서 확인하실 수 있습니다.)
Ansible이나 Terraform 같은 자동화 도구는 특히 비슷한 작업을 반복적으로 수행할 때 유용합니다. 비슷한 구성의 리소스를 여러 개 생성해야 할 때 클라우드 웹 포털에서 마우스를 옮겨가며 똑같은 가상 머신을 여러 대 만들 필요 없이 Terraform으로 count=n
옵션을 주면 손쉽게 동일 구성의 n
개의 리소스를 만들 수 있습니다. 그리고 그 여러 대 장비에서 똑같은 스크립트를 실행시켜 필요한 설정과 서비스를 구성해야 할 때도 Ansible을 활용하면 Control node 한 대에서 playbook을 실행하는 명령어 한 번만 입력하면 됩니다. 이와 같은 자동화 도구를 잘 익혀 편하게 일할 수 있길 바랍니다.
참고: 이 글에서 언급되었으나 깊게 설명하지 않은 내용입니다.
- IaC(Infrastructure as Code)
- Automation
Footnotes
Red Hat. "Ansible과 Terraform 비교 설명." www.redhat.com. https://www.redhat.com/ko/topics/automation/ansible-vs-terraform (accessed Aug. 18, 2024). ↩
zero. “Terraform Cloud와 Terraform API를 활용 한 Self Provisioning 구현 하기.” DEVOCEAN. https://devocean.sk.com/blog/techBoardDetail.do?ID=164401 (accessed Aug. 21, 2024). ↩
Ioannis Moustakis. “7 Ansible Use Cases - Management & Automation Examples.” spacelift. https://spacelift.io/blog/ansible-use-cases (accessed Aug. 21, 2024). ↩
Flavius Dinu. “9 Terraform Use Cases for Your Infrastructure as Code.” spacelift. https://spacelift.io/blog/terraform-use-cases (accessed Aug. 21, 2024). ↩