본문 바로가기
공부/IaC

[Terraform] CSV -> AWS Security Group : fileset 함수 활용

by haejang 2021. 12. 11.
728x90
728x90

 

 

 

위와 같이 보안그룹별 csv 파일들을 만들어 두었을 때, 자동으로 sg_csv 폴더 내의 파일들을 한꺼번에 읽어오게 하고 싶었다

알아보니 테라폼엔 fileset이란 함수가 있었다

https://www.terraform.io/docs/language/functions/fileset.html

 

fileset - Functions - Configuration Language - Terraform by HashiCorp

The fileset function enumerates a set of regular file names given a pattern.

www.terraform.io

 

locals {
    sg_csvs = fileset("./sg_csv/", "*")
    sg = toset([for f in local.sg_csvs : trimsuffix(f, ".csv")])
}

module "security_groups" {
    source = "../../modules/networking/security_group"
    for_each = local.sg

    vpc_id   = module.vpc.vpc_id
    project  = var.project
    env      = var.env
    service  = each.key
    sg_rules = csvdecode(file("./sg_csv/${each.key}.csv"))
}

sg_csvs 에는 "alb.csv","datasync-agent.csv" ... 식으로 값이 쌓이기 때문에 이대로 모듈을 돌리면 모듈 참조 시 security_groups["alb.csv"] 라는 식으로 해야 한다

그래서 trimsuffix 함수를 사용해 뒤의 .csv를 짜른 형태의 set 변수를 만들어 이로 모듈을 돌려주었다

 

자세한 코드 확인 : https://github.com/suminhong/honglab_terraform.git

 

GitHub - suminhong/honglab_terraform

Contribute to suminhong/honglab_terraform development by creating an account on GitHub.

github.com

 

 

 

728x90
728x90

댓글