Terraform (Automation)

최근글


새댓글


Hot Deal


Terraform의 상태(state) 관리를 어떻게 하였는지 경험

컨텐츠 정보

본문

저는 Terraform으로 Bigdata Platform를 운영하는 Infa를 구성하기 위해서 Foundation 을 Terraform으로 구성하는 작업을 진행하였습니다. 운영에서 중요한 Terraform State에 대해서 알아보고 관리를 어떻게 해야 할지 고민하는 글입니다. # Terraform State 정의 Terraform의 상태(state) 파일은 .tfstate 확장자를 가진 JSON 형식의 파일로, Terraform이 관리하는 리소스의 최신 상태를 나타냅니다. 이 파일은 Terraform이 어떤 리소스를 만들었는지, 각 리소스의 현재 속성이 무엇인지 등을 추적합니다. 상태 파일은 Terraform이 무엇을 생성했는지, 리소스가 현재 어떤 상태인지, 그리고 구성 파일과 실제 인프라 사이의 차이를 파악하는 데 필수적입니다. Terraform 프로젝트를 시작할 때, 이 상태 파일은 초기화 과정에서 자동으로 생성됩니다. 기본적으로 상태 파일은 로컬 파일 시스템에 저장되지만, 원격 상태 저장소를 설정하여 팀에서 접근하고 공유할 수 있습니다. 로컬 환경에서 Terraform을 사용하는 기본적인 상태 파일의 정의는 다음과 같은 단계로 진행됩니다: 프로젝트 초기화: terraform init 명령어를 실행하여 Terraform 프로젝트를 초기화하고 필요한 플러그인을 설치합니다. 리소스 정의: .tf 파일에 필요한 리소스를 정의합니다. 실행 계획 확인: terraform plan 명령어를 실행하여 Terraform이 수행할 작업을 미리 확인합니다. 변경 적용: terraform apply 명령어를 실행하여 정의된 리소스를 실제로 생성하거나 수정합니다. 이 과정에서 상태 파일이 생성되거나 업데이트됩니다. 상태 확인: terraform state 명령어를 사용하여 현재 상태 파일의 내용을 검사합니다. 변경 사항 관리: 리소스 정의가 변경될 경우, Terraform은 상태 파일과의 차이를 통해 어떤 변경이 필요한지를 결정하고 적용합니다. ## 어떻게 만들어 지는가? ``` terraform init terraform plan ``` 명령어를 실행하면 State파일은 Json으로 자동으로 만들어 지며 이 값을 가지고 실제 자원과 Terraform 상태값을 비교를 합니다. 저희 팀에서는 Google Cloud 에 환경별로 Bucke을 만들었습니다. 그리고 Resource 별로 Path를 나누었습니다. 프로젝트 별로 필요한 Resouce들은 Workspace들을 나누었습니다. Terraform의 State는 아래의 순서로 만들어 집니다. 로컬 파일 시스템에서 Terraform 상태 파일을 관리하는 방법에 대해 설명하겠습니다. 상태 파일 관리의 기본적인 순서는 다음과 같습니다: 1. 프로젝트 초기화: 프로젝트를 시작하기 위해 Terraform 설정 파일을 작성하고 terraform init 명령어를 실행하여 프로젝트를 초기화합니다. 이 단계에서 Terraform은 필요한 플러그인을 설치하고, 작업 디렉토리를 준비합니다. 2. 리소스 정의: 인프라를 정의하는 .tf 파일을 작성합니다. 여기에는 생성하고자 하는 클라우드 리소스의 구성이 포함됩니다. 3. 실행 계획 확인: terraform plan 명령어를 실행하여 Terraform이 계획하는 작업을 확인합니다. 이 단계는 리소스를 실제로 생성하거나 변경하기 전에 예상되는 변경 사항을 미리 보여줍니다. 4. 변경 적용: terraform apply 명령어를 실행하여 .tf 파일에 정의된 리소스를 실제로 생성하거나 변경합니다. 이 과정에서 terraform.tfstate 상태 파일이 생성되거나 업데이트됩니다. 5. 상태 확인: terraform state list 명령어를 사용하여 상태 파일에 기록된 리소스 목록을 확인하거나, terraform show 명령어를 사용하여 상태 파일의 세부 내용을 볼 수 있습니다. 6. 변경 사항 관리: 구성 파일이 변경될 경우 terraform plan과 terraform apply를 다시 실행하여 변경 사항을 적용합니다. Terraform은 상태 파일을 참조하여 실제 인프라와 구성 파일 사이의 차이를 파악하고, 필요한 조정을 수행합니다. 7. 상태 파일 백업 및 복구: 상태 파일은 매우 중요하므로 정기적으로 백업해야 합니다. 만약 상태 파일이 손상되거나 분실된 경우, 백업에서 복구할 수 있습니다. ## 실제 프로젝트에서 구성 1. State가 저장될 bucket 생성 2. Terraform Source Code 에 provider 선언 ``` provider "gcp" { region = "asia-northeast3" } resource "gcs" "state" { bucket = "my-terraform-state-example-bucket" path = "terraform-state/prod/iam } ``` 여러 사람이 작업을 하게 되면 State가 공유되어야 하며 Bucket 에 있는 State를 잘 활용을 해야 합니다. 추후에 기회가 있으면 더욱 자세히 다루겠습니다.

관련자료

댓글 0
등록된 댓글이 없습니다.
전체 7 / 1 페이지
RSS
번호
제목
이름