Zadara Cloud

Zadara Cloud 사용법 10강

Terraform·Ansible로 IaC 자동화

이번 강은 인프라를 코드로 정의하는 IaC(Infrastructure as Code)를 다룬다.

Zadara 10강 개념도

5강에서 CLI로 명령을 내렸다면, IaC는 한 걸음 더 나아가 인프라 전체를 코드 파일로 선언한다. 클릭이나 단발 명령 대신, 원하는 상태를 코드로 적어 두고 한 번에 만든다.

이 강의 목표는 다음과 같다.

  • IaC가 왜 필요한지 이해한다.
  • Terraform과 Ansible의 역할 차이를 안다.
  • 코드로 인프라를 반복·재현하는 흐름을 잡는다.

1. 왜 IaC인가

콘솔 클릭으로 만든 인프라는 재현이 어렵다. 누가 언제 무엇을 바꿨는지 남지 않는다.

  • 반복·재현: 같은 코드로 개발·운영 환경을 똑같이 찍어낸다.
  • 버전관리: Git으로 변경 이력을 남기고 리뷰한다.
  • 협업: 코드 리뷰로 인프라 변경을 검토·승인한다.

2. Terraform — 무엇을 만들지 선언

Terraform은 원하는 리소스를 선언(.tf 파일)하면 그 상태로 맞춰 준다.

  • "VM 2대, VPC 1개, LB 1개가 있어야 한다"고 적고 apply한다.
  • 이미 있으면 그대로 두고, 없으면 만들고, 지워야 하면 지운다(선언형).
  • Zadara는 EC2 호환이라 AWS 프로바이더를 활용한다.

3. Ansible — 서버 안을 구성

Ansible은 만들어진 서버 내부를 구성·배포한다.

  • 패키지 설치, 설정 파일 배포, 서비스 시작 등을 playbook에 적는다.
  • Terraform이 "그릇(인프라)"을 만들면, Ansible이 그 안을 "채운다".
도구 역할
Terraform 인프라 자원 생성·관리 (VM·VPC·LB)
Ansible 서버 내부 구성·앱 배포
Git 코드 버전관리·리뷰

4. 흐름

  1. Terraform 코드로 VPC·서브넷·VM·LB를 선언한다.
  2. terraform apply로 Zadara에 한 번에 프로비저닝한다.
  3. Ansible playbook으로 각 VM에 앱과 설정을 배포한다.
  4. 코드를 Git에 올려 이력을 남기고 팀과 공유한다.

예제

예제) 개발·스테이징·운영 세 환경을 똑같은 구조로 유지해야 한다. 손으로 만들면 환경마다 미묘하게 달라진다. 어떻게 통일하나?

해설) 인프라를 Terraform 코드 하나로 정의하고, 변수(환경 이름·규모)만 바꿔 세 번 apply한다. 세 환경이 같은 코드에서 나오므로 구조가 동일하게 유지된다. 서버 내부 설정도 같은 Ansible playbook으로 배포하면 "개발에선 됐는데 운영에선 안 되는" 차이가 사라진다. 변경은 코드로 리뷰·기록되어 추적된다.

정리

  • IaC는 인프라를 코드로 선언해 반복·재현·리뷰를 가능하게 한다.
  • Terraform은 인프라 자원을, Ansible은 서버 내부 구성을 맡는다.
  • Zadara는 AWS 호환이라 기존 Terraform·Ansible 자산을 재사용한다.
  • 코드를 Git으로 버전관리해 변경을 추적한다.

다음 강에서는 이렇게 만든 인프라의 비용과 상태를 관리하는 법을 다룬다.

댓글 0