IaC/Terraform (18) 썸네일형 리스트형 [Terraform]파일(file, templatefile)을 활용한 리소스 구성하기 테라폼(Terraform)을 사용하여 리소스를 구성할 때 외부 파일을 데이터 소스로 활용하는 방법에 대해 알아보겠습니다. 테라폼에서는 IAM 역할의 정책, EC2의 사용자 데이터(User Data) 등을 정의할 때 JSON, Shell 스크립트 같은 파일을 사용하여 리소스를 보다 효율적으로 관리할 수 있습니다. 왜 파일을 사용하나요? 가독성 향상: 긴 설정 코드를 별도의 파일로 분리하면 테라폼 코드의 가독성이 향상됩니다. 재사용성 증가: 동일한 설정을 여러 리소스에 걸쳐 재사용할 수 있습니다. 관리 용이성: 복잡한 설정 값을 별도의 파일에서 관리함으로써 유지보수가 용이해집니다. 사용 예시: file 함수 사용하기 IAM Role Policy: IAM 역할에 대한 정책을 JSON 파일로 작성하여 테라폼 코.. [Terraform]Userdata와 Provisioner 이해하기 Userdata와 Provisioner의 기본 개념 Userdata: AWS EC2나 다른 클라우드 서비스의 인스턴스 생성 시 자동으로 실행할 스크립트를 정의하는 부분입니다. 주로 초기 설정이나 패키지 설치 등에 사용됩니다. Provisioner: 테라폼이 리소스를 생성하거나 제거한 후에 실행되는 추가적인 도구입니다. Userdata Userdata는 클라우드 인스턴스가 처음 실행될 때 한 번만 실행됩니다. 예를 들어, AWS EC2 인스턴스가 시작될 때 필요한 소프트웨어를 설치하거나 설정 파일을 변경할 수 있습니다. 한계점: 이미 실행된 인스턴스에 대해 변경 사항을 반영하기 어렵습니다. 변경을 위해서는 인스턴스 재시작 또는 다시 생성이 필요합니다. Userdata 예시: versions.tf # 테라폼.. [Terraform]워크스페이스 디렉토리 구성 전략 테라폼 프로젝트를 시작할 때, 깔끔하고 일관된 디렉토리 구조를 가지고 시작하는 것은 중요합니다. 특히 프로젝트 규모가 커질수록 디렉토리 구조의 중요성은 커집니다. 이 포스팅에서는 테라폼 워크스페이스의 표준 디렉토리 구조와 그 설명을 공유합니다. Convention 기본적으로 다음과 같은 파일들을 포함하는 것이 좋습니다: versions.tf - 테라폼과 프로바이더의 버전을 지정 variables.tf - 이 워크스페이스에서 사용할 변수들을 선언 terraform.tf- 워크스페이스 설정, 백엔드 설정 및 프로바이더 설정 terraform.auto.tfvars - 자동 로딩되는 변수 값들 지정 remote-states.tf - 멀티 워크스페이스 간 의존성 관리를 위한 설정 outputs.tf - 이 워크스.. [Terraform]다른 워크스페이스의 정보 가져오기 - terraform_remote_state 사용법 개요: terraform_remote_state terraform_remote_state를 사용하면, 하나의 테라폼 워크스페이스에서 다른 워크스페이스의 상태(state) 정보를 읽어올 수 있습니다. 이 기능은 한 워크스페이스의 결과값(outputs)을 다른 워크스페이스의 입력값(inputs)으로 사용할 수 있기 때문에 여러 워크스페이스로 인프라를 나눠 관리할 때 유용합니다. terraform_remote_state를 통한 워크스페이스 관리 1. terraform_remote_state의 위치 terraform_remote_state는 테라폼 내에서 data source block 안에 위치해 사용됩니다. 이는 다른 워크스페이스의 상태 정보를 현재 워크스페이스에서 참조하기 위한 설정입니다. 2. 단일 워크.. [Terraform]리소스 강제 교체하기: taint와 untaint 사용법 terraform taint terraform taint는 특정 리소스를 "tainted" 상태로 표시하여, 다음 terraform apply 때 해당 리소스를 강제로 다시 만들게 합니다. 특정 리소스를 교체해서 테스트하거나 디버깅해보고 싶을때 taint를 이용하여 리소스를 교체해 볼 수 있습니다. 예제: ig에 장애가 있다 생각하고 해당 리소스를 교체해 본다. 현재 상태 확인하기: tf state list ➜ tf state list module.route_table__private.aws_resourcegroups_group.this[0] module.route_table__private.aws_route_table.this module.route_table__private.aws_route_tabl.. [Terraform]상태(state) 관리 명령어 사용 방법 terraform에서 state 명령어는 Terraform의 상태를 관리하거나 세부내용을 확인할 수 있습니다. 이 글에서는 각 서브 커맨드에 대한 주요 특징과 사용 방법을 설명합니다. tf state command tf state Usage: terraform [global options] state [options] [args] This command has subcommands for advanced state management. These subcommands can be used to slice and dice the Terraform state. This is sometimes necessary in advanced cases. For your safety, all state managem.. [Terraform]상태 저장소 설정하는 방법(Backend) Terraform이 작업을 수행하면서 인프라의 현재 상태를 추적하기 위한 상태 파일 (terraform.tfstate)을 생성하게 되는데, 이 상태 파일의 관리 방식에 따라 로컬 상태(Locate State)와 원격 상태(Remote State)로 구분됩니다. Locate State, Remote State 차이점 Local State 정의: Terraform이 리소스를 관리할 때 기본적으로 사용하는 상태 저장 방식입니다. 파일: terraform.tfstate - 이 파일은 Terraform이 관리하는 리소스의 현재 상태를 JSON 형식으로 저장합니다. 특징: - 로컬 시스템에 상태 정보가 저장됩니다. - 팀원 간 상태 공유가 어려울 수 있습니다. - 로컬 저장소가 손실될 경우 상태 정보도 손실될 위험.. [Terraform]반복문(For)을 사용하여 resource 작성하는 방법 Terraform의 반복문(Loops) 기능은 기본적인 코드 구성을 최소화하면서 다양한 리소스를 생성하거나 관리할 때 유용합니다. 기본 문법 핵심 개념 Input Collection: for 키워드 뒤에 오는 컬렉션은 반복을 수행할 대상이 됩니다. Output Expression: 콜론(:) 뒤의 표현식은 각 반복마다의 결과를 결정합니다. Condition: if 키워드를 사용하여 조건을 지정할 수 있습니다. 이 조건에 맞는 항목만 결과로 포함됩니다. Input Types A for expression's input (given after the in keyword) can be a list a set a tuple a map an object. Lists & Sets [for in : if ] Exam.. 이전 1 2 3 다음