본문 바로가기
개발/개발공부

Ansible vs Terraform / 앤서블, 테라폼, 차이

by 치킨개발자 2023. 5. 30.
728x90

Infra에 관심을 갖고 공부하다보면 새로운 클러스터에 기존 클러스터의 환경을 그대로 구축하는 등, 인프라 환경 관리에 대해 고민을 갖게 됩니다. 이럴때 가장 많이 접하게되는 Ansible과 Terraform에 대해 찾아봤습니다.

둘다 Infrastructure 자동화에서 유명한 툴들인데요.

사실 성격이 좀 다르기 때문에 뭐가 더 나은지 비교하기는 어려운 것으로 보시면 됩니다.

Ansible


ANSIBLE 로고

- 오픈소스 자동화 툴, 설정관리, 배포, 작업 자동화 등 configuration에 특화

- YAML과 INI(inventory)파일과 상태를 통해 관리

- agentless, 노드에 추가로 agent같은 것을 설치 안해도 사용가능 (AWS codepipeline을 보면 deploy-agent같은 것이 필요)

- 대신 SSH접속과 같은 프로토콜로 노드에 접근하기 때문에 서버에 따라 접속설정 처리가 필요

- 파이썬 기반

Terraform


Terraform 로고

- 테라폼도 오픈소스로 좀더 프로비저닝쪽에 특화되어있는 툴

- HCL(HashiCorp Configuration Language)라는 자체 언어와 JSON으로 관리

- 인프라 리소스에 대해 CRUD를 지원하는 쪽에 특화

- 프로비저닝과 오케스트레이션에 특화되어있어서, 다양한 인프라 관리와 멀티클라우드 환경에 강함

- AWS, Azure, GCP와 같은 클라우드환경에서 자주 사용

반응형

Ansible vs Terraform


Ansible vs Terraform 차이

그래서 뭘 써야하는지 생각해본다면..

그냥 환경에 맞게 골라서 쓰던가, 두개 다 써도 된다네요.

저는 아직 Ansible만 주로 쓰고 Terraform은 몇번 찾아본 상태인데, 대부분의 클라우드 서비스에서는 Terraform을 주로 쓰는 것으로 보입니다.

고려해야할 점들은

1. 사용용도

앞서 정리한 것처럼 내가 구성할 클러스터 인프라에 따라, Configuration이나 자동화에 집중한다면 Ansible을 사용. 프로비저닝이나 오케스트레이션가 중요하다면 consistency, reproducible을 제공하는 Terraform을 쓰시면 됩니다. 물론 각 툴이 해당 기능만 지원한다는 것은 아니지만, 특화된 부분에 따라 사용하는 게 좋을 것 같습니다. 

2. 인프라 복잡도

인프라/클러스터를 구성하는데 multi cloud환경이나 복잡한 환경을 갖고 있다면 Terraform이 적합합니다. Ansible은 좀 더 복잡하지 않고 다양한 환경에 심플하게 설치하는데 편리합니다.

3. 학습피로도

제 경험을 토대로 말씀드리자면, Terraform보단 Ansible이 좀 더 러닝커브가 원만했던 것 같습니다. AWS에 Terraform을 통해 환경을 구성하려면 IAM, 크레덴셜, agent, 정책관리 등 많은 작업이 필요하고 HCL이라는 HashiCorp언어에 대한 학습이 필요했습니다. 그리고 프로비저닝, 오케스트레이션 툴이다보니 관리해야할 포인트들이 더 많았고요. 물론 이거를 하려고 사용하는 툴이긴 하지만요. 대신 Ansible은 제가 자체로 구축한 클러스터 환경에 사용해서 그런진 몰라도 좀 더 명확하게 인프라 configuration을 확인할 수 있었습니다. Kubernetes에서 사용하는 익숙한 Yaml파일도 사용하고, kubespray라는 ansible기반 툴도 편리했습니다. Terraform은 Packer과 같은 툴 이 널리 사용되는 것으로 보입니다. 아직 HCL이 익숙하지 않아 디테일한 내용은 공부가 필요하겠네요.

 

종합하자면

- Configuration 집중은 Ansible, Provisioning/Orchestration 집중은 Terraform

- simple, 자동화는 Ansible, complexity, multicloud는 Terraform

- 쉬운 학습은 Ansible, 어느정도 학습할 필요가 있는 Terraform

이렇게 정리가 되네요.

다시 한번 강조하자면 어떤 툴이 더 나은지보단 상황에 맞게 골라 사용하거나 둘다 사용하는 것이 맞다고 보면 되겠습니다.

반응형

댓글