728x90
728x90
위와 같이 보안그룹별 csv 파일들을 만들어 두었을 때, 자동으로 sg_csv 폴더 내의 파일들을 한꺼번에 읽어오게 하고 싶었다
알아보니 테라폼엔 fileset이란 함수가 있었다
https://www.terraform.io/docs/language/functions/fileset.html
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
끝
728x90
728x90
댓글