DevOps/Terraform2022. 10. 20. 10:19[Terraform] input, local, output, data 비교

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 변수는 사용자의 입력을 받을 수..

DevOps/Terraform2022. 10. 19. 17:46[Terraform] for_each 구문

테라폼에서 여러 리소스를 한번에 생성하는 방법으로는 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 = ..

[Terraform] 독립적인 배포 환경 만들기
DevOps/Terraform2022. 5. 3. 22:07[Terraform] 독립적인 배포 환경 만들기

해당 이미지는 마켓컬리 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]$ ..

DevOps/Terraform2022. 4. 25. 18:21[Terraform] 데이터 소스 (Data Source)

✔️ 데이터 소스 (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 = ..

DevOps/Terraform2022. 4. 25. 17:55[Terraform] Count

✔️ 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..

DevOps/Terraform2022. 4. 22. 23:21[Terraform] 프로비저너 (Provisioner)

✔️ 프로비저너 (Provisioner) Provisioners | Terraform by HashiCorp Provisioners run scripts on a local or remote machine during resource creation or destruction. Learn how to declare provisioners in a configuration. www.terraform.io 로컬 머신이나 리모트 머신에 특정 액션(주로 명령어 실행)을 할 수 있게 해준다. AWS 리소스를 정의할 때도 provisioner를 정의할 수 있다. 테라폼에서 제공하는 공통 argument이다. 기본적인 사용법은 다음과 같다. resource "aws_instance" "web" { # ... prov..

image