[테라폼] 테라폼 변수 (서브넷 만들기)

instance.tf

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

instance.tf 파일의 내용이다. ami는 variable 변수처리를 해서 깔끔한데 비해 subnet_id가 하드코딩 되어있어서 안 깔끔하다 ㅜㅜ 그래서 ami와 같이 만들거다

 

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

subnet_id = "${lookup(var.AWS_SUBNET,var.AWS_REGION)}" : lookup으로 변수자체인 subnet과 조회하려는 키 AWS_REGION을 넣어준다.


vars.tf

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"
 }
}

지금은 이렇게 AWS 인증 정보와 ami에 대해서만 변수가 존재한다.

 

variable "AWS_ACCESS_KEY" {}
variable "AWS_SECRET_KEY" {}
variable "AWS_REGION" {}

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

variable "AWS_SUBNET" {
    type = map
    default = {
     us-east-1 = "subnet-05036e4fb78a80224"
     us-west-2 = "subnet-0daf0e4be40340c35"
     us-west-1 = "subnet-02186bfbe244bd2c1"
    }
}

이렇게 AMIS변수를 베이스로 해서 AWS_SUBNET 변수를 추가해줫다.

서브넷들은 각 리전에 default VPC에 연결되어있는 subnet들을 넣어줬다.


terraform.tfvars

AWS_ACCESS_KEY = "액세스키"
AWS_SECRET_KEY = "시크릿키"
AWS_REGION = "us-east-1"

terraform.tfvars파일이다. 일반적으로 버전 제어에 넣고 싶지 앟은 파일이 들어간다.

리전을 바꿔서 인프라를 구축할때는 여기서 AWS_REGION을 바꿔서 terraform apply하면 된다. 지금은 us-east-1 북버지니아에 인스턴스를 빌드할 예정이다.


terraform apply

terraform apply 를 한 뒤 yes를 입력하면 인스턴트 빌드를 한다.

그리고 북 버지니아에 ec2에 가서 인스턴스를 확인하면 초기화하고있는 새로운 인스턴스가 생긴것을 볼 수 있다.

인스턴스 ID를 눌러서 확인해보면, 서브넷 아이디도 잘 들어가있는 것을 볼 수 있다.


다른 지역에 인스턴스 빌드하기

북 버지니아에 있는 인스턴스를 terraform destroy로 없앤 다음

terraform.tfvars 파일에서 AWS_REGION에 us-west-1으로 바꿔준다.

terraform apply 성공한 후 AWS콘솔에 가서 확인해보려고 한다.

EC2 인스턴스에 들어가서 확인해보면 북 캘리포니아에서 돌아가고있는 인스턴스를 확인할 수 있다.

역시 서브넷 ID도 잘 들어가있음을 볼 수 있다.

서브넷도 변수처리하여 인스턴스 빌드성공!

JUNE .

20'S LIFE IN SYDNEY and BUSAN

    이미지 맵

    DevOps Study/Terraform 다른 글

    이전 글

    다음 글