테라폼의 변수(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 변수 블록을 정의한다.
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에 선언한 변수의 이름을 그대로 가져다 사용하고 있는 것을 볼 수 있다.
resource "aws_instance" "app_server" {
ami = "ami-0ea766b7a13aecc49"
instance_type = "t4g.micro"
tags = {
Name = var.instance_name
}
}
2. 테라폼 실행 시 -var 옵션으로 변수(variable) 주입하는 방법
명령어 입력에 -var 사용하기
- "terraform apply" 명령어 뒤에 추가적으로 -var "변숫값"을 입력해서 인프라를 생성한다.
terraform apply -var "instance_name=YetAnotherName"
변경 사항 승인하기
- apply가 잘 진행되며 맨 하단에 변경 사항 승인(Enter a value)이 나올 텐데 "yes"로 응답한다.
aws 콘솔에서 EC2 인스턴스 실행여부 확인
- 아래의 사진을 보면 인스턴스의 Name은 내가 apply명령어에 variable로 넣어준 YetAnotherName 값이 설정되어 있는 것을 확인할 수 있다. 이렇게 apply 명령어를 실행할 때 variable을 주입하는 것이 가능하다.
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 "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
'AWS > 테라폼(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 |