init
terraform [global option[ init [options]
- terraform init 명령은 테라폼 구성 파일이 있는 작업 디렉터리를 초기화하는 데 사용
- 이 작업을 실행하는 디랙터리를 루트 모듈이라 부름
- 자동화 구성을 위한 파이프라인 설계 시 테라폼을 실행하는 시점에 필수적으로 요청되는 명령어
- 최초 실행 시 실행에 필요한 아티팩트나 라이브러리를 다운로드 하고 준비시키는 역할
Options
- -upgrade
- .terraform.lock.hcl은 작업 당시의 버전 정보를 기입 후 해당 파일에 명시된 버전으로 init
- 의도전으로 버전을 변경하거나 코드에 명시한 다른 버전으로 변경하려면 terraform init -upgrade 수행
validate
terraform [global options] validate [options]
- 디렉터리에 있는 테라폼 구성 파일의 유효성을 확인
- 대상이 되는 인프라와 서비스의 상태를 확인하기 위한 원격 작업이나 API 작업은 발생하지 않고, 코드적인 유효성만 검토
validate 실습
resource "local_file" "abc" {
content = "abc!"
# filename = "${path.module}/abc.txt"
}
$ terraform validate
Options
$ terraform validate -no-color
- 대부분의 명령어와 함께 사용 가능
- 로컬이 아닌 외부 실행 환경을 사용하는 경우 색상표기 문자가 출력
$ terraform validate -json
- 실행 결과를 JSON형식으로 출력
- 프로비저닝 파이프라인을 설계하는 경우 결과에 대한 쿼리가 필요 이때 Json 사용
plan & apply
plan
terraform [global options] plan [options]
- terraform paln 명령은 테라폼으로 적용할 인프라의 변경 사항에 관한 실행 계획을 생성하는 동작
- 또한, 출력되는 결과를 확인하여 어떤 변경이 적용될지 사용자가 미리 검토하고 이해 하는 데 도움을 줌.
테라폼 실행 이전의 상태와 비교해 현재 상태가 최신화되었는지 확인
적용하고자 하는 구성을 현재 상태와 비교하고 변경점을 확인
구성이 적용되는 경우 대상이 테라폼 구성에 어떻게 반영되는지 확인
plan 실습
resource "local_file" "abc" {
content = "abc!"
filename = "${path.module}/abc.txt"
}
$ terraform plan
- 테라폼 구성 내용을 바탕으로 어떤 리소스가 생성되는지 상세 내역을 보여줌
- 코드 구성에는 local_file 리소스를 정의할 때 필수 요소인 content와 filename만 선언, 리소스에 정의 가능한 다른 옵션의 내용과 기본값이 자동 입력되어 적용 되는 것을 확인 가능
- 마지막 Plan에 1개가 추가 된다는 것을 보여줌
Options
$ terraform plan -detailed-exitcode
- 옵션이 없던 때와 결과는 같지만 exitcode가 환경 변수로 구성
- exitcode 또는 errorlevel
- 0 : 변경 사항이 없는 성공
- 1 : 오류가 있음
- 2 : 변경 사항이 있는 성공
apply
terraform [global options] apply [options] [PLAN]
- terraform apply는 계획을 기반으로 작업을 실행
apply 실습
$ terraform apply
- terraform plan과 같은 동작을 한 후 적용 여부를 물어봄
$ terraform plan -out=<파일명>
- -out=<파일명> 형식으로 파일 이름이 정해져 플랜 결과가 생성
- 바이너리 형탱기 때문에 내용을 확인할 수 없음
$ terraform apply tplan
- plan 계획이 이미 있으므로 실행 계획을 적용할 것인지 묻는 과정이 없음.