인프라스트럭처를 코드로서 작성, 계획, 생성하는 도구
HashCorp 에서 개발한 오픈소스 IaC(Infrastructure as code) 소프트웨어다.
테라폼에서 제공하는 HCL(Hashcorp Configuration Language) 라는 고수준 설정 언어 혹은 json 을 이용해서 데이터센터 인프라스트럭처를 정의 할 수 있다.
테라폼은 AWS, IBM Cloud, GCP, Azure, Oracle Cloud, OpenStack 등의 인프라스트럭처 제공자를 지원한다.
테라폼은 코드작성 > plan > apply
순으로 동작한다.
아래에서 설명하겠지만 apply 명령어 실행시에 실제 인프라 리소스가 생성된다.
Terraform을 사용하기 위해, 설정한 provider 나 module 등을 download 받는 initialize 동작을 수행한다.
terraform init은 provider 나 module 등의 initialization 정보가 바뀔때만 한번씩 실행해 주면 된다.
내가 code 로 작성한 infrastructure 를 실제로 적용하기 전에 변경사항을 체크해볼 수 있는 명령어다.
+
표시와 함께 생성되는 resource 가 무엇인지 보여주는 화면이 나타난다.
terraform plan
을 통해 나타나는 resource 의 변경 결과는 create, update, destroy 중 하나다.
code 로 작성된 infrastructure 를 실제로 적용시키는 명령어다.
terraform 으로 생성된 insrastructure resource 들을 모두 제거하고 싶을 때 사용하는 명령어다.
테라폼은 디렉토리에 있는 모든 *.tf 파일을 읽고 수행한다.
테라폼 컨벤션으로 보통 아래와 같이 정의됨
-provider.tf : provider / module 의 버전 의존성
-variables.tf : variable 관련
-outputs.tf : output 관련
-main.tf :
-README.md
$ brew tap hashicorp/tap
$ brew install hashicorp/tap/terraform
$ brew tap hashicorp/tap
$ arch -arm64 brew install hashicorp/tap/terraform
기타
https://www.jacobbaek.com/1067
https://ssup2.github.io/record/OpenStack_Terraform_%EC%8B%A4%EC%8A%B5_Kubernetes_%ED%99%98%EA%B2%BD_%EA%B5%AC%EC%B6%95/