Terraform의 Variables에는 input, local, output가 있다. 해당 글에서는 각 변수의 역할을 정리하고 어떻게 사용하는지 간단한 예제를 살펴보겠다. Input Variables - Configuration Language | Terraform by HashiCorp Input variables allow you to customize modules without altering their source code. Learn how to declare, define, and reference variables in configurations. www.terraform.io 내용과 관련된 Terraform 공식 문서는 다음과 같다. input input 변수는 사용자의 입력을 받을 수..
테라폼에서 여러 리소스를 한번에 생성하는 방법으로는 count와 for_each가 있다. for_each Terraform에서 정의한 메타 인수이다. 모듈 또는 모든 리소스 유형과 함께 사용할 수 있다. Terraform은 map과 set의 각 구성에 대해 하나의 인스턴스를 생성한다. 예시 1. Map을 사용한 for_each resource "azurerm_resource_group" "rg" { for_each = { a_group = "eastus" another_group = "westus2" } name = each.key location = each.value } 2. Set을 사용한 for_each resource "aws_iam_user" "the-accounts" { for_each = ..
해당 이미지는 마켓컬리 DevOps 팀의 Terraform 배포 환경이다. dev, qa, stg 환경으로 분리하여 코드를 관리하고 있다. 보통 개발을 할 때 하나의 환경에서 진행하지 않고 여러 환경을 세팅한 뒤 test를 거친 후 실제 서비스로 배포한다. Terraform에서도 같은 모듈을 참조하면서 목적에 따라 다른 환경을 세팅할 수 있다. module-test/module/vpc/main.tf variable "cidr" { type = string } resource "asw_vpc" "my_vpc" { cidr_bloc = var.cidr tags = { Name = "My_VPC" } } 모든 환경에서 사용할 공통 vpc 모듈이다. [vagrant@controller module-test]$ ..
✔️ 백엔드(Backend) 백엔드 Terraform의 상태 스냅샷이 저장되는 위치를 결정한다. 주어진 Terraform 구성은 백엔드를 지정하거나 Terraform Cloud와 통합하거나 둘 다 수행하지 않고 기본적으로 로컬로 상태를 저장할 수 있다. Terraform은 이 영구 상태 데이터를 사용하여 관리하는 리소스를 추적하므로 어떤 실제 인프라 개체가 구성의 리소스에 해당하는지 알기 위해서는 상태가 필요하다. 따라서 주어진 인프라 리소스 모음으로 작업하는 모든 사람은 동일한 상태 데이터에 액세스할 수 있어야 한다. 기본적으로 Terraform은 로컬이라는 백엔드를 암시적으로 사용하여 디스크에 로컬 파일(.tfstate)로 상태를 저장한다. 다른 모든 백엔드는 여러 사람이 액세스할 수 있도록 하는 일..
✔️ 데이터 소스 (Data Source) Terraform Registry registry.terraform.io 이미지의 버전 변경으로 인해 사용할 이미지를 교체하고 싶을 때는 이미지의 id를 변경해야 한다. 개발 환경 중 특히 test 환경에서는 최신 버전의 이미지로 자주 변경하기 때문에 매번 id를 바꾸는 것은 번거로운 일이다. 이때 데이터 소스를 사용하는데, 데이터 소스는 해당되는 프로바이더에서 정보를 가져오는 역할을 한다. data "aws_ami" "example" { executable_users = ["self"] most_recent = true name_regex = "^myami-\\d{3}" owners = ["self"] filter { name = "name" values = ..
✔️ Count The count Meta-Argument - Configuration Language | Terraform by HashiCorp Count helps you efficiently manage nearly identical infrastructure resources without writing a separate block for each one. www.terraform.io count는 meta argument이다. resource "aws_instance" "server" { count = 4 # create four similar EC2 instances ami = "ami-a1b2c3d4" instance_type = "t2.micro" tags = { Name = "Serv..