terraform Init, plan, apply

김성인·2023년 10월 29일
0

[CI/CD] 🪀Terraform

목록 보기
2/9

terraform init state

Backend Initialization

  • 테라폼은 백엔드를 사용하여 인프라의 상태를 저장함.
  • 로컬 백엔드를 사용하여 terraform.tfstate 라는 파일에 상태를 저장함.
  • 원격 백엔드(Amazon S3, Google Cloud Storage, Terraform Cloud)를 구성한 경우 terraform init에서 해당 백엔드에 대한 연결을 설정함.
  • ping을 보내서 백엔드 응답여부 확인

Provider Plugin Download

  • Terraform은 다양한 인프라 서비스(AWS, Azure, Google Cloud)와 상호 작용하기 위해 공급자 플러그인을 사용함.
  • init 명령은 사용 중인 공급자를 결정하기 위해 구성을 읽고 Terraform 레지스트리에서 적절한 플러그인을 다운로드함.
  • 이런 플러그인들은 구성 디렉토리 내의 숨겨진 디렉토리(.terraform)에 기본적으로 저장됨

Module Download

  • 구성에 원격 Terraform 모듈에 대한 참조가 있으면 terraform init 시에 로컬에 있는 .terraform/modules 디렉토리로 다운로드 함.

Workspace Initialization

  • Terraform 은 워크스페이스를 지원함.
  • 동일한 구성 내에서 서로 다른 여러 인프라 상태를 관리 가능함.
  • 명시적으로 워크스페이스를 만들지 않은 경우 init 명령을 사용하여 기본 워크스페이스를 생성하고 초기화함.

Lockfile Creation (Terraform 0.14+)

  • Terraform 0.14 부터 init명령을 사용하여 .terraform.lock.hcl 이라는 종속성 lock파일을 생성함.
  • 이 잠금 파일을 사용하면 이후의 Terraform 작업에서 초기 실행과 동일한 공급자 및 모듈 버전을 사용할 수 있음
  • 다양한 환경 또는 팀원간에 일관된 동작을 제공함.
  • 캐시 기능

terraform init

  1. Installing hashicorp/local -> "hashicorp/local" : 프로바이더의 정보
  2. 레지스트리는 registry.terraform.io 에 저장됨
  3. 락 파일이 없기에 .terraform.lock.hcl에 저장된다고 명시함


terraform plan


local_file에서 리소스에서 지정한 파일이 존재하지 않아서 만들어주니 해결함.


terraform apply


terraform.tfstate 가 작업 디렉토리에 생기면서 결과가 만들어짐.


terraform 워크스페이스

terraform workspace new <워크스페이스이름> : 워크스페이스 새로 생성
terraform workspace select <워크스페이스이름> : 워크 스페이스 선택
재가

dev라는 새로운 워크스페이스를 만들면
새로 만들면 해당 terraform.tfstate.d/dev 에 init한 결과가 저장된다.

0개의 댓글