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 명령을 사용하여 기본 워크스페이스를 생성하고 초기화함.
- Terraform 0.14 부터 init명령을 사용하여 .terraform.lock.hcl 이라는 종속성 lock파일을 생성함.
- 이 잠금 파일을 사용하면 이후의 Terraform 작업에서 초기 실행과 동일한 공급자 및 모듈 버전을 사용할 수 있음
- 다양한 환경 또는 팀원간에 일관된 동작을 제공함.
- 캐시 기능
![](https://velog.velcdn.com/images/99_insung/post/9a5c5090-f55d-4538-b455-487f6a579a42/image.png)
- Installing hashicorp/local -> "hashicorp/local" : 프로바이더의 정보
- 레지스트리는 registry.terraform.io 에 저장됨
- 락 파일이 없기에 .terraform.lock.hcl에 저장된다고 명시함
![](https://velog.velcdn.com/images/99_insung/post/e4fe7c3e-0656-4bc2-b354-a7470fcb2f16/image.png)
![](https://velog.velcdn.com/images/99_insung/post/056a2b30-a3b6-4abd-98bb-9297616688fa/image.png)
![](https://velog.velcdn.com/images/99_insung/post/5c54c828-4bdc-42d2-a5f7-a2e30e7879a2/image.png)
![](https://velog.velcdn.com/images/99_insung/post/f64c0dc9-9ba0-453e-a471-93a6b7fe3693/image.png)
local_file에서 리소스에서 지정한 파일이 존재하지 않아서 만들어주니 해결함.
![](https://velog.velcdn.com/images/99_insung/post/1ccd076b-dc99-44cc-a483-a0ecec999bcc/image.png)
![](https://velog.velcdn.com/images/99_insung/post/fedd339d-f7b3-4d3d-89a8-ba62a2d58ea5/image.png)
terraform.tfstate 가 작업 디렉토리에 생기면서 결과가 만들어짐.
![](https://velog.velcdn.com/images/99_insung/post/746663b8-f6f0-419a-bc9c-e0a5a00178c8/image.png)
terraform workspace new <워크스페이스이름>
: 워크스페이스 새로 생성
terraform workspace select <워크스페이스이름>
: 워크 스페이스 선택
재가
![](https://velog.velcdn.com/images/99_insung/post/d2913a65-de5c-4187-929e-3229f55ab8b2/image.png)
dev라는 새로운 워크스페이스를 만들면
새로 만들면 해당 terraform.tfstate.d/dev 에 init한 결과가 저장된다.