terraform 의 활용

이장훈·2022년 2월 14일
0

1. 단일 웹 서버 배포하기

resource "aws_instance" "example" {
  ami = "ami ID"
  instance_type = "t2.micro"
  vpc_security_group_ids = ["${aws_security_group.instance.id}"]
  
  user_data = <<-EOF
  				#!/bin/bash
                echo "Hello, world" > index.html
                nohup busybox httpd -f -p 8080 &
                EOF
  tags {
    Name = "terraform-example"
  }
}

resource "aws_security_group" "instance" {
  name = "terraform-example-instance"
  
  ingress {
    from_port = 8080
    to_port = 8080
    protocol = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

aws_security_group 보안그룹 리소스는 8080포트를 열어주도록 설정한다.

  • 보안 그룹의 ID는 채움참조(interpolation) 구문으로 변수 처리한다.
    "somethingtointerpolate"interpolation구문은아래와같은형태로작성된다."{something_to_interpolate}" interpolation 구문은 아래와 같은 형태로 작성된다. "{TPYE.NAME.ATTRIBUTE}"
    ex) "${aws_security_group.instance.id}"

다른 리소스에 대해 채움 참조 문법을 사용하게 된다면 암시적인 의존성을 정의해야한다. 테라폼은 해당 의존성을 읽어 의존성 그래프(graph)를 만들고, 우선순위를 자동으로 정해서 리소스를 생성한다.

terraform graph 명령어로 의존성 확인이 가능하다.
결과 값이 DOT라는 그래프 설명 언어로 사용된다.

테라폼이 의존성 트리(tree)를 따라서 수행될 때 그것 자체에서도 여러 리소스를 변수 형태로 정의할 수 있다. 변경사항도 신속하게 적용하다. 이것이 선언형 언어의 장점이다.

profile
개발자가 꿈입니다.

0개의 댓글