[테라폼] 테라폼 변수

변수는 왜 사용하나요?

한 파일에 모든것이 있는게 보기 좋은 모습은 아니다.


시크릿 같이 숨기기 위해 변수를 사용한다.


깃 저장소에 AWS 자격 증명이 필요하지 않다. 자격증명과 함께 해당 파일을 적용하려는 경우는 깃 저장소 버전 제어에 나타난다.


변경될 수도 있는 요소에 변수를 설정한다. (예를들어 AMIs, AMIs 는 지역마다 다르다. 그래서 이러한 변수로 옮기는 것은 좋다. 지역을 바꿀 때 마다 바꿔줄 수 있으니까)


테라폼 파일을 쉽게 재사용하기 위해


provider "aws" {
  access_key = "${var.AWS_ACCESS_KEY}"
  secret_key = "${var.AWS_SECRET_KEY}"
  region     = "${var.AWS_REGION}"
}

provider.tf 파일의 구성이다.


variable "AWS_ACCESS_KEY" {}
variable "AWS_SECRET_KEY" {}
variable "AWS_REGION" {
    default = "us-west-2"
}

vars.tf 파일의 내용이다. 변수를 정의했다.
default로 무언가로 지정하면 기본값을 설정한 것이다.


AWS_ACCESS_KEY =
AWS_SECRET_KEY =
AWS_REGION =

terraform.tfvars파일에는 변수 값을 넣을 것이다.
액세스키와 시크릿키를 넣을건데, 리전에는 디폴트값이 있어서 따로 넣지 않을거다.
기본값을 재정의하려는 경우에만 {terraform.tfvars}로 설정해야 한다.


resource "aws_instance" "example" {
  ami           = "ami-0688ba7eeeeefe3cd"
  instance_type = "t2.micro"
  subnet_id = "subnet-0daf0e4be40340c35"
}

instance.tf파일은 이렇다. 지금은 ami 아이디가 존재하지만 이것을 변수로 옮기려고 한다.


ami 아이디 변수로 옮기기

resource "aws_instance" "example" {
  ami           = "${lookup(var.AMIS,var.AWS_REGION)}"
  instance_type = "t2.micro"
  subnet_id = "subnet-0daf0e4be40340c35"
}

instance.tf파일이다. {lookup}은 맵 변수에서 조회를 수행할 것이다.

 

variable "AWS_ACCESS_KEY" {}
variable "AWS_SECRET_KEY" {}
variable "AWS_REGION" {
    default = "us-west-2"
}

variable 'AMIS' {
 type = map
 default = {
    us-east-1 = "ami-0b0ea68c435eb488d"
    us-west-2 = "ami-0688ba7eeeeefe3cd"
    eu-west-1 = "ami-0454207e5367abf01"
 }
}

vars.tf 파일에서 키값쌍이 있는 'map' 타입의 변수를 만들것이다.
{lookup}으로 {instance.tf}를 살펴보면 어떤일이 일어날까?

ami           = "${lookup(var.AMIS, var.AWS_REGION)"}

전달하는 두 개의 매개변수가 있다는 것을 알 수 있다. 첫번째 변수는 변수 자체인 ami고, 두번째는 조회하려는 키인 'AWS_REGION'이다.
만약에 지역이 eu-west-1 이라면 ami값은 맵에서 'eu-west-1'의 값인"ami-0454207e5367abf01"를 가져온다.

terraform apply

terraform apply 적용하면 Enter a value 가 나오고 yes 를 입력하면 뚝딱뚝딱 만든다. 그리고 Apply complete!

AWS 콘솔창에 가보면 새로 running 하고있는 인스턴스를 발견할 수 있다.

JUNE .

20'S LIFE IN SYDNEY and BUSAN

    이미지 맵

    DevOps Study/Terraform 다른 글

    이전 글

    다음 글