Terraform 이란?
- 하시코프에서 오픈소스로 개발 중인 인프라스트럭처 도구
- IaC 도구라고도 하는데, 여기서 IaC란 Infrastructure as Code의 약자로 코드를 통해 인프라를 구축/운영할 수 있도록 만들어주는 도구라고 합니다.
Terraform init/plan/apply
회사에서 테라폼을 사용하고 있는데, 실제 운영 환경에 요청하기 전 init, plan, apply 명령어를 사용하여 개발 환경에 변경 사항을 적용해볼 수 있었습니다. 적용하고자하는 정책을 코드로 먼저 작성한 뒤 terraform init -> plan -> apply 순으로 명령어를 실행하였고, AWS를 테라폼의 provider로 사용하였기 때문에 실제 잘 반영되었는지는 콘솔에서 확인해봤습니다.
1. terraform init
- 테라폼 프로젝트를 초기화 합니다.
- init을 하는 경로에 .terraform 파일이 생성되고 지정한 provider에 대한 파일을 내려받습니다.
2. terraform plan
- 인프라에 적용하려는 변경 사항을 미리 볼수 있수 있는 실행 계획을 생성합니다.
- 적용하고자 하는 정책을 코드로 올바르게 작성했는지 미리 검토해볼 수 있습니다.
3. terraform apply
- terraform plan에서 본 실행 계획을 실제 적용합니다.
- terraform apply -target <resource>
- terraform apply 를 하면 해당 테라폼 프로젝트의 내용이 전부 적용됩니다. 이렇게 되면 콘솔에서 직접 정책을 적용한 누군가의 설정이 테라폼에 의해 엎어쳐질 수가 있습니다. 그래서 저는 제가 작업한 코드만 반영될 수 있도록 -target 옵션을 함께 사용합니다.
- 먼저 terraform state list 로 리소스들의 address 목록을 확인하고, 반영하고자 하는 리소스에 대해 terraform apply -target <resource address>를 실행합니다.