Terraform 스터디그룹 1주차 정리 - 2

DevOps Engineer·2023년 9월 2일
0

T101-1week

목록 보기
2/3

terraform Plan, Validate 명령어 활용


위 에러는 main.tf에 대한 terraform init을 진행하지 않은 경우 생기는 에러이며 main.tf에 provider, terraform 정보가 없는 상태에서 plan을 실행하여 발생함
init을 통해 관련 리소스가 만들어지며 이를 tree 명령어로 차이를 확인해봄

terraform init 에러

local 프로바이더에 대한 정보가 들어가 있는 걸 볼 수 있음

terraform validate -no-color


위 에러는 terraform main.tf 문법이 잘 작성 됐는지 여부를 파악하는 명령어인 validate를 통해 에러를 발생시킨 것임

terraform -detailed-exitcode

plan -detailed-exitcode 를 통해 변경사항이 잘 반영됐는지 확인할 수 있음 echo $?를 치면 0, 1, 2 응답값이 나오며 각각

0 변경사항 없는 성공
1 실패 오류가 있음
2 변경사항이 반영된 성공
위 코드를 파이프라인 상에 적용시키면 파이프라인상의 main.tf 리소스의 변경점이 제대로 적용됐는지 알 수 있음

terraform plan -out=plan-name

apply 하기 전에 제대로 생성이 되는지 사전에 확인하는 plan에 대한 값을 파일로 생성하는 명령어 이 값을 그대로 다음에도 적용 시키려면
terraform apply tfplan(plan-name) 을 사용하면 된다.

terraform state

resource "local_file" "abc" {
	content = "abc!"
	filename = "${path.module}/abc.txt"
}

resource "local_file" "dev" {
  content  = "def!"
  filename = "${path.module}/def.txt"
}

위 main.tf를 apply 후

terraform state를 확인해봤다.

terraform apply -replace

replace로 임의의 리소스만 변경 가능함

tfstate 저장위치 지정

backend 리소스 다루기

terraform {
  backend "local" {
    path = "state/terraform.tfstate"
  }
}

로컬에 생성할 때

terraform cloud에 생성할 때

terraform {
  cloud {
    hostname = "app.terraform.io"
    organization = "my-org"
    workspades = {
       name = "my-app-prod"
    }
  }
}

이게 있어야 각자 환경에서 state파일을 읽고 리소스를 제거할 수 있음

profile
madame의 Techblog

0개의 댓글