목록Automation/Terraform (11)
마짱짱의 지식창고
Variable Input Variable 은 Terraform 모듈의 매개변수 역할을 하여 Modul의 자체 소스 코드를 변경하지 않고 Module의 측면을 사용자 정의할 수 있도록 하고 Module을 서로 다른 구성 간에 공유 할 수 있도록 합니다. 다음과 같이사용합니다. variable "region" { type = list(string) default = ["asia-northeast-3"] } variable로 사용할수 없는 단어로는 예약어인 source, version, providers, count, for_each, lifecycle, depends_on, locals 가 있습니다. 또한 sensitive를 사용한다면 민감한 값을 plan이나 apply할때 출력하지 않습니다. variab..
Terraform Workflow 에는 3단계가 있습니다. 1. wirte - 코드를 작성합니다 2. plan - 적용하기전 변경 사항을 확인합니다. terraform plan 3. apply - 작성한 코드를 프로비저닝 합니다. terraform apply Command: init terraform init Terraform을 실행할 작업 디렉토리를 초기화 하는데 사용됩니다. 실행하기전 실행할 위치에서 가장 처음으로 사용해야할 명령어입니다. Command: validate terraform velidate 이 명령은 구성만 참조하고 원격 상태, 공급자 API 등과 같은 원격 서비스에 액세스하지 않고 디렉터리의 구성 파일을 확인합니다. 유효성 검사는 제공된 변수 또는 기존 상태에 관계없이 구성이 구문적으..
Module 찾기 및 사용 모듈을 찾을 땐 Terraform Registry 를 주로 이용합니다. Module을 사용할땐 Terraform Registry : // 개인 Registry : /// module "gcloud" { source = "terraform-google-modules/gcloud/google" version = "3.0.0" } Module Block 모듈은 함께 사용되는 여러 리소스에 대한 컨테이너 입니다. 모든 Terraform 구성에는 기본 작업 디렉토리의 .tf파일에 정의된 리소스로 구성된 루트 모듈로 알려진 모듈이 하나 이상 있습니다. 모듈은 다른 모듈을 호ㅜㄹ할 수 있으며 ,이를 통해 하위 모듈의 리소스를 구성에 간략하게 포함할 수 있습니다. 모듈은 동일한 구성 내에서 ..
Command: fmt 이 명령어는 Terraform 구성 파일을 표준 형식 및 스타일로 다시 작성하는데 사용됩니다. 즉, 중구난방으로 작성하여 실행하게 작성하였을 때 해당 명령어를 사용하면 깔끔하게 정리됩니다. 커맨드라인에 작성하면 됩니다. terraform fmt 기본문법 : terraform fmt [options] [DIR] flag : -list=false : 형식이 불일치가 있는 파일을 나열하지 않습니다. -wirte=false : 입력 파일을 덮어 쓰지 않습니다. -diff : 서식 변경사항 표시 -check : 입력치 포맷되어 있는지 확인합니다. (모든 입력의 형식이 올바른 경우 종료상태는 0이 되고, 그렇지 않은 경우 종료상태는 0이 아닙니다) -recursive : 하위 디렉토리에서도 ..
Provider = 공급자 Terraform을 이용해 구성할 공급자(Ex: AWS, Azure, GCP..)를 선언해줘야합니다. Provider구성은 root Module에 속합니다. provider "google" { project = "test-project" region = "asia-northeast-3" } 이런식으로 표현 할 수 있습니다. 하지만, 저렇게만 사용할시 region은 한가지 인데 다중으로 구성을 하고싶을 시 alias를 이용합니다 provider "google" { project = "test-project" region = "asia-northeast-3" } provider "google" { alias = "east2" project = "test-project" region..
State는 Terraform이 작동하는데 필요한 요구 사항입니다. Terraform이 State없이 작동할수 있는지 또는 Terraform이 상태를 사용하지 않고 실행할 때마다 리소스를 검사하는 것이 가능한지 종종 묻습니다. 해당 포스팅을 통해 Terraform State가 필요한 이유에 대해 설명하겠습니다. Terraform은 Terraform Config을 Mapping 하기위해 데이터베이스가 필요합니다. AWS와 같은 일부 Provider의 경우 Terraform은 이론적으로 AWS태그와 같은 것을 사용할 수 있습니다. Terraformd의 초기 프로토타입에서는 State File이 없었고 이방법을 사용 했습니다. 하지만 태그를 지원하는 리소스가 아닐땐 사용할 수 없었고 또한 AWS가 아닌 다른 ..