인프라를 관리하기 위한 하나의 프로젝트 단위
테라폼은 인프라를 코드로 관리할 때 변경사항을 추적할 수 있다.
변경사항을 추적하기 위해서 이전 상태에 대한 기록을 가지고 있어야 다음에 적용할 코드와 이전상태를 비교해 무엇이 추가하고 무엇이 변경되고 무엇이 삭제되었는지 알 수 있다.
이것을 추적하기 위한 목적으로 상태(State)를 관리하는데 테라폼으로 Apply를 해보면 .terraform.tfState 라는 상태를 관리하는 파일이 생긴다.
이 상태를 관리하는 코드는 워크스페이스 단위로 생성되기 때문에 워크스페이스가 상태를 관리하는 단위라고 생각해도 된다.
모든 Provider는 terraform 블록 안에 있는 설정과 provider를 정의하는 설정을 통해서 사용 가능하다.
terraform 블록 안에 있는 required_providers 설정을 통해 사용하고자 하는 provider의 버전을 명시하게 된다. (명시 하지 않으면 최신버전)
Provider를 사용해서 관리할 수 있는 인프라 리소스
데이터를 쓸 용도, 새로운 리소스를 만들 용도
데이터를 읽는 용도
문자열 내에서 HCL에서 제공하는 변수나 컨텍스트에 접근해서 값을 가져오는 목적
해당 파일이 위치한 디렉토리 경로
provider "local" {
}
resource "local_file" "foo" {
# ${path.module} : 해당 파일이 위치한 디렉토리 경로
# main.tf 파일이 위치한 디렉토리에 "Hello World!" 라는 내용을 가진 foo.txt 파일을 생성한다.
content = "Hello World!"
filename = "${path.module}/foo.txt"
}
terraform init


.terraform 폴더 안에는 main.tf안에 명시된 provider나 module 들의 캐시 or 데이터를 다운받아서 보관한다.

.terraform.lock.hcl 파일은 CI/CD 파이프라인을 구성하기 위한 구성요소이다.
workspace에서 사용하는 provider들의 목록이 있을텐데 해당 provider들의 Hashsum을 체크하고 버전을 Locking 시켜서 각각의 작업자들이 동일한 환경에서 동일한 코드를 apply 시키기 위한 목적으로 사용한다.

terraform plan 명령어를 통해서 어떠한 변경사항을 일으키는지 체크할 수 있다.
맨 마지막줄을 보면 어떤 파일이 추가되고 어떤 파일이 변경되고 어떤 파일이 삭제되는지 확인해볼 수 있다.

terraform apply 명령어를 실행 후 yes를 입력하면 terraform plan으로 확인할 수 있었던 변경사항들이 적용이된다.
위의 사진을 보면 foo.txt 파일이 생성된 것을 확인해볼 수 있다.
추가로 terraform.tfstate 파일이 생성된 것을 확인해볼 수 있는데 이 파일은
현재 관리되고 있는 리소스의 상태를 확인해 볼 수 있는 파일이다.
tfstate 파일을 통해서 main.tf를 변경하고 적용할 때 결과를 명확하게 확인해 볼 수 있다.