[Terraform] backend.tf 예시 및 Module, Data

backend.tf 구성 예시

terraform {
  backend "remote" {
    hostname = "app.terraform.io"
    organization = "ghpark"

    workspaces {
      name = "GH_ECS_STAGING"
    }
  }
}

위의 코드처럼 Terraform Cloud에 적용 시킬 수 있다.

organization = "ghpark" : ghpark이란 조직이 생성 된다.

name = "GH_ECS_STAGING" : GH_ECS_STAGING이란 workspace가 생성 된다.


Module 이해

관련있는 리소스 구성을 패키징하고 재사용하는 방법이다.

module "gh_ecs_module" {
  source = "../modules/aws-gh_ecs_module"
}

위의 코드 처럼 module이름과 경로를 지정한다.

주의! : 모듈 폴더를 만들어 줘야 한다.

  • gh_ecs_module : module의 이름이다.
  • source = "../modules/aws-gh_ecs_module" : module이 위치하고 있는 상대 경로이다.

Data 이해

Terraform 외부에서 정의된 정보, 다른 별도의 Terraform 구성에서 정의된 정보를 사용할 수 있다.

data "aws_subnets" "ghpark_subnets" {

  filter {
    name   = "subnet-id"
    values = [ "subnet-064695f3ad5baec1a", "subnet-0181b1063d5785bc4" ]
  }
}

위의 코드처럼 data 블록을 만들어 줬다.

  • ghpark_subnets : 서브넷 블록의 이름이다.
  • filter : 특정 리소스를 검색하는데 사용한다.
    • 위의 코드에선 subnet-id를 검색 한 것이다.
module "gh_ecs_module" {
  source = "../modules/aws-gh_ecs_module"
  
  vpc_id          = var.seoul_vpc
  service_subnets = data.aws_subnets.ghpark_subnets.ids
}

위의 코드처럼 data를 호출 할 수 있다.

'DevOps > Terraform' 카테고리의 다른 글

[Terraform] RDS Snapshot  (0) 2024.10.16
[Terraform] ALB (Security Group, Subnet)  (1) 2024.10.14
[Terraform] 다양한 이름 설정  (2) 2024.09.30
[Terraform] Variable 및 Output 이해하기  (1) 2024.09.27
[Terraform] Terraform 기초 지식  (3) 2024.09.24