Terraform에서 output을 사용 하는 방법에 대해 알아보자!

Terraform에서 output을 사용 하는 방법에 대해 알아보자!

Clock Icon2023.07.07 07:29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

소개

안녕하세요! 클래스메소드 금상원 입니다. 이번 블로그에서는 Terraform에서 output을 정의하고 다른 모듈에서 사용하는 방법에 대해 알아보겠습니다.

output이란?

작성한 인프라에 대한 정보를 명령줄에서 사용할 수 있도록 하며 사용할 다른 Terraform 구성에 대한 정보를 노출할 수 있습니다.

출력 값의 용도

  • 하위 모듈은 출력을 사용하여 리소스 속성의 하위 집합을 상위 모듈에 노출할 수 있습니다.
  • 루트 모듈은 출력을 사용하여 실행 후 CLI 출력에 특정 값을 출력할 수 있습니다 terraform apply.
  • 원격 상태 를 사용할 때 루트 모듈 출력은 terraform_remote_state데이터 소스를 통해 다른 구성에서 액세스할 수 있습니다.

output 사용 방법

목표

VPC의 ID를 출력 해보자

VPC 전체 코드

이번 블로그에서는 output만 사용하는 방법에 기술되어 있으므로 VPC구축에 필요한 전체 코드는 아래의 블로그를 확인 해 주세요.

디렉토리 구조

├── ./envs
│   ├── ./envs/network.tf
│   ├── ./envs/provider.tf
│   └── ./envs/s3.tf
└── ./module
    ├── ./module/network
    │   ├── ./module/network/network.tf
    │   ├── ./module/network/output.tf
    │   └── ./module/network/variables.tf
    └── ./module/s3
        ├── ./module/s3/output.tf
        ├── ./module/s3/s3.tf
        └── ./module/s3/variables.tf

VPC 부분

envs/network.tf

module "network" {
  source   = "./module/network"
  cidr_vpc = "10.0.0.0/16"
}

위의 코드에서 network 모듈을 정의하고 VPC의 Cidr범위를 지정합니다.

module/network/variables.tf

variable "cidr_vpc" {}

위에서 작성한 cidr_vpc 값을 variables.tf 로 전달 합니다.

module/network/network.tf

resource "aws_vpc" "vpc" {
  cidr_block           = var.cidr_vpc
  instance_tenancy     = "default"
  enable_dns_hostnames = true
}

전달된 값을 이용하여 위의 코드처럼 VPC를 작성 합니다.

module/network/output.tf

output "vpc_id"{
    value = aws_vpc.vpc.id
    description = "The ID of the VPC"
} 

위의 코드에서 작성된 VPC의 ID를 출력 합니다.

S3 부분

envs/s3.tf

module "s3" {
    source   = "./module/s3"
    vpc_id = module.network.vpc_id
}

network 모듈에서 output한 VPC의 ID를 사용할 수 있도록 작성 합니다.

module/s3/variables.tf

variable "vpc-id"{}

위에서 작성한 vpc_id값을 variables.tf로 전달 합니다.

module/s3/s3.tf

resource "aws_s3_bucket" "test-bucket" {
    bucket = "vpc-flowlog-${var.vpc-id}"
}

전달된 값을 참조하여 위의 코드와 같이 작성 하면 network 모듈에서 output한 값을 사용할 수 있습니다.

마무리

이번 블로그에서는 Terraform에서 제공하고 있는 output 이라는 기능을 소개 하였습니다. 다른 모듈의 값을 사용해야하는 분들께 조금이나마 도움이 되었으면 좋겠습니다.

참고 자료

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.