테라폼(Terraform) 사용 가이드 5: variable/output(입출력 변수) 사용하기

2023. 12. 5. 11:13·DevOps/테라폼(Terraform)
반응형

테라폼의 변수(variable)와 출력(output)을 사용하여 유연하게 인프라를 관리해 보자

 

📌 서론

저번 포스트에서 EC2 삭제까지 마무리했다. 이번 포스트에서는 아직 설명하지 않은 테라폼 파일 모듈화를 하기 위해서는 꼭 알아야 하는 variable과 output에 대해서 알아보자


이 포스트는 이전 포스트에서 EC2를 생성했던 코드(main.tf)를 그대로 사용하기에 하단의 포스트를 읽어보고 오는 것을 추천한다.

 

테라폼(Terraform) 사용 가이드 3: EC2 생성하기

MacOS에서 테라폼을 사용하여 EC2 인스턴스를 생성해 보자 📌 Terraform 사용을 위한 전제조건 1. Terraform CLI (1.2.0 이상)가 설치되어 있어야 한다. 2. AWS CLI가 설치되어 있어야 한다. 3. AWS 계정 및 자격

curiousjinan.tistory.com

 

1. Variable (변수) 이해하고 적용하기

입력 변수(variable)란?

  • 테라폼에서 variable은 말 그대로 변수를 의미한다. 프로그래밍에서 변수가 데이터를 저장하는 공간이듯이, 테라폼에서도 변수는 인프라 구성 요소의 값을 저장한다. 예를 들어, EC2 인스턴스를 생성할 때 인스턴스 타입이나 AMI 같은 것들을 변수로 정의할 수 있다. 이렇게 하면 코드의 재사용성과 유지보수성이 높아진다.
variable "instance_type" {
  description = "EC2 인스턴스 타입"
  type        = string
  default     = "t2.micro"
}

 

variables.tf 파일 생성

  • variables.tf 파일을 생성하고 내부에 instance_name 변수 블록을 정의한다.

variables 파일 생성
variables 파일 생성

variable "instance_name" {
  description = "Value of the Name tag for the EC2 instance"
  type = string
  default = "ExampleAppServerInstance"
}

 

main.tf파일 내부의 resource코드에 적힌 Name을 외부에서 주입받도록 수정

  • 이전 포스트에서 작성했던 "main.tf" 파일에서 "aws_instance" 리소스 블록을 수정해서 variable.tf 파일에 선언해 준 변수를 사용하도록 수정한다. 아래의 수정한 코드를 보면 var.instance_name으로 variable에 선언한 변수의 이름을 그대로 가져다 사용하고 있는 것을 볼 수 있다.

main파일 수정
main파일 수정

resource "aws_instance" "app_server" {
  ami              = "ami-0ea766b7a13aecc49"
  instance_type    = "t4g.micro"
  tags = {
    Name = var.instance_name
  }
}

 

2. 테라폼 실행 시 -var 옵션으로 변수(variable) 주입하는 방법

명령어 입력에 -var 사용하기

  • "terraform apply" 명령어 뒤에 추가적으로 -var "변숫값"을 입력해서 인프라를 생성한다.

var 추가 명령어 입력
var 추가 명령어 입력

terraform apply -var "instance_name=YetAnotherName"

 

변경 사항 승인하기

  • apply가 잘 진행되며 맨 하단에 변경 사항 승인(Enter a value)이 나올 텐데 "yes"로 응답한다.

terraform apply 명령어 실행
terraform apply 명령어 실행

 

aws 콘솔에서 EC2 인스턴스 실행여부 확인

  • 아래의 사진을 보면 인스턴스의 Name은 내가 apply명령어에 variable로 넣어준 YetAnotherName 값이 설정되어 있는 것을 확인할 수 있다. 이렇게 apply 명령어를 실행할 때 variable을 주입하는 것이 가능하다.

aws 인스턴스 확인
aws 인스턴스 확인

 

3. Output (출력) 이해하고 적용하기

출력(output)이란?

  • output은 테라폼 실행 결과의 일부를 출력하는 데 사용된다. 이건 테라폼이 인프라를 구성한 후에 그 결과를 확인할 수 있는 방법이다. 예를 들어, EC2 인스턴스를 생성한 후 그 인스턴스의 IP 주소를 알고 싶다면 output을 사용한다. 나는 EC2 인스턴스의 public IP 주소를 instance_ip_addr라는 이름으로 출력하도록 설정했다.
output "instance_ip_addr" {
  value = aws_instance.my_instance.public_ip
}

 

outputs.tf 파일을 생성하고 리소스 정보를 출력하는 코드를 작성한다.

  • outputs.tf 파일을 생성하여 EC2 인스턴스의 ID와 IP 주소에 대한 출력 값을 정의한다.

출력 output 코드 작성하기
출력 output 코드 작성하기

output "instance_id" {
  description = "ID of the EC2 instance"
  value       = aws_instance.app_server.id
}

output "instance_public_ip" {
  description = "Public IP address of the EC2 instance"
  value       = aws_instance.app_server.public_ip
}

 

apply 명령어로 EC2 재기동하고 output 출력값 확인하기

  • outputs.tf 파일을 만든 후 다시 terraform apply 명령어를 실행하여 출력 값을 적용하고 승인 (yes 응답)한다.

출력 값 검사하기

 

출력값 조회하기

  • terraform output 명령으로 출력 값을 조회한다.

출력값 검사하는 명령어
출력값 검사하는 명령어

 

4. 마무리 - 인프라 파괴 (선택 사항)

파괴 명령어 입력

  • 튜토리얼을 계속 진행하지 않을 경우, terraform destroy로 인프라 파괴 명령어를 입력한다.

인프라 파괴
인프라 파괴

 

인프라 삭제(제거) 승인

  • Enter a value에 yes를 입력하면 삭제가 진행된다.

삭제 성공
삭제 성공

 

 

다음 포스트에서는 IAM 정책을 연결해 보자 👇🏻

 

테라폼(Terraform) 사용 가이드 6: 테라폼으로 IAM 정책 생성/관리하기

이번 포스트는 테라폼으로 IAM정책 및 리소스를 관리하는 방법이다. 📌 서론 AWS EC2 인스턴스 생성과 함께 관련된 IAM 사용자 및 S3 버킷을 만들어보는 내용이며 S3 버킷에 대한 액세스를 허용하는

curiousjinan.tistory.com

시간이 괜찮다면 팀원 '평양냉면7 '님의 블로그도 한번 봐주세요 :)

 

하다보니 재미있는 개발

하다 보니 재미있는 개발에 빠져있는 중입니다. 문의사항: ysoil8811@gmail.com

yijoon009.tistory.com

 

반응형

'DevOps > 테라폼(Terraform)' 카테고리의 다른 글

테라폼(Terraform) 사용 가이드 7: AutoScailingGroup과 LoadBalancer을 생성하고 연결하기  (0) 2023.12.07
테라폼(Terraform) 사용 가이드 6: 테라폼으로 IAM 정책 생성/관리하기  (1) 2023.12.05
테라폼(Terraform) 사용 가이드 4: 생성된 AWS EC2 인스턴스 파괴하기  (0) 2023.12.05
테라폼(Terraform) 사용 가이드 3: EC2 생성하기  (0) 2023.12.04
테라폼(Terraform) 사용 가이드 2:MacOS에 테라폼 설치하기  (1) 2023.12.04
'DevOps/테라폼(Terraform)' 카테고리의 다른 글
  • 테라폼(Terraform) 사용 가이드 7: AutoScailingGroup과 LoadBalancer을 생성하고 연결하기
  • 테라폼(Terraform) 사용 가이드 6: 테라폼으로 IAM 정책 생성/관리하기
  • 테라폼(Terraform) 사용 가이드 4: 생성된 AWS EC2 인스턴스 파괴하기
  • 테라폼(Terraform) 사용 가이드 3: EC2 생성하기
Stark97
Stark97
소통 및 문의: dig04059@gmail.com (편하게 연락주세요!) 링크드인 소통이나 커피챗도 환영합니다!
  • Stark97
    오늘도 개발중입니다
    Stark97
  • 전체
    오늘
    어제
    • 분류 전체보기 (250)
      • 개발지식 (20)
        • 스레드(Thread) (8)
        • WEB, DB, GIT (3)
        • 디자인패턴 (8)
      • JAVA (21)
      • Spring (88)
        • Spring 기초 지식 (35)
        • Spring 설정 (6)
        • JPA (7)
        • Spring Security (17)
        • Spring에서 Java 활용하기 (8)
        • 테스트 코드 (15)
      • 아키텍처 (6)
      • MSA (15)
      • DDD (12)
      • gRPC (9)
      • Apache Kafka (19)
      • DevOps (23)
        • nGrinder (4)
        • Docker (1)
        • k8s (1)
        • 테라폼(Terraform) (12)
      • AWS (32)
        • ECS, ECR (14)
        • EC2 (2)
        • CodePipeline, CICD (8)
        • SNS, SQS (5)
        • RDS (2)
      • notion&obsidian (3)
      • 채팅 서비스 (1)
      • AI 탐험대 (1)
      • 팀 Pulse (0)
  • 링크

    • notion기록
    • 깃허브
    • 링크드인
  • hELLO· Designed By정상우.v4.10.0
Stark97
테라폼(Terraform) 사용 가이드 5: variable/output(입출력 변수) 사용하기
상단으로

티스토리툴바