본문 바로가기

♻ Terraform(테라폼)/Terraform Vriable

Terraform Variable (변수를 활용한 인프라 생성)

# 테라폼에서 변수를 활용한 인프라 생성

- 변수를 활용한 인프라 생성은 재사용 측면에서 유용하다. 변수값만 변경하여 새로운 리소스 환경을 생성할 수 있다.

- 일단 파일의 구성은 아래와 같다. (main.tf, output.tf, vars.tf)

- 생성할 테라폼 main.tf 코드는 아래와 같다.

provider "aws" {
  region = "ap-northeast-2"
}

resource "aws_instance" "example" {
  ami                    = "ami-0eddbd81024d3fbdd"
  instance_type          = "t2.micro"
  vpc_security_group_ids = ["${aws_security_group.instance.id}"]

  user_data = <<-EOF
              #!/bin/bash
              sudo yum install -y httpd -f -p "${var.server_port}"
              echo "Honglab WebServer" > /var/www/html/index.html
              sudo systemctl start httpd
              sudo systemctl enable httpd
              EOF

  tags = {
    Name = "terraform-example"
  }
}

resource "aws_security_group" "instance" {
  name = "terraform-example-instance"

  ingress {
    from_port   = var.server_port
    to_port     = var.server_port
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

- vars.tf 파일의 내용은 아래와 같다.

아래의 코드를 설명하면

description : 해당 변수를 설명

default : 기본값 (기본값에 따라 타입을 자동으로 설정)

type : 타입은 해당 변수값의 타입을 지정하는 옵션이다. string외에도 다른 속성 값들이 존재한다.

variable "server_port" {
  description = "The port the server will use for HTTP requests"
  default     = 8080
}

- output.tf 파일의 내용은 아래와 같다.

output "public_ip" {
  value = aws_instance.example.public_ip
}