Terraform SG csv관리

문학적인유사성·2023년 1월 15일
0

뎁옵깃옵쿠베

목록 보기
20/45

테라폼 구축하면서, 어짜피 개발, 운영, 스테이징 환경 구축이 다른 경우 모듈을 사용해서 할 필요가 없었다. 그냥 코드 하나씩 짜는게 더 편할 때가 있었다. 적재적소에 맞는 것을 써야겠다.

그래도 혼자서 하는 건 모듈로 하나씩 만들어서 해보고 있다..
모듈로 만들어서 재사용하는게 이름만 변경할때는 확실히 편한 것같다.


세큐리티 그룹은 하드코딩으로 관리하기엔 너무 많고 노가다 작업이다 보니 csv파일이나 json으로 관리하려고 한다.

인터넷에 찾아보니 여러개 글이 있어서 따라서 해봤다.

참고 블로그 0 - HONGLAB
참고 블로그 1 - 기존 SG 가져오기
보안 그룹을 csv 로 내보내기 클릭해도 가져올수는 있는데, 형식에 맞춰서 가져와야할때는 이 글을 참고하면 해결할 수 있었다.

참고 블로그 2

contains


locals {
    sg_csv = file("./temp.csv")
    sg_rules = csvdecode(local.sg_csv)
}

resource "aws_security_group" "temp" {
  name = "temp"
}


resource "aws_security_group_rule" "sg_rule" {
  for_each          = { for rule in local.sg_rules : rule.key=> rule }
  security_group_id = aws_security_group.temp.id
  type              = each.value.rule_type
  from_port         = each.value.from_port
  to_port           = each.value.to_port
  protocol          = each.value.protocol
  cidr_blocks = length(regexall("[a-z]",each.value.src_or_dst)) == 0 ? [each.value.src_or_dst] : null
  prefix_list_ids = substr(each.value.src_or_dst,0,2) == "pl" ? [each.value.src_or_dst] : null
  source_security_group_id = contains(var.sg_id_list, each.value.src_or_dst) ? "${each.value.src_or_dst}"  : null
  self = each.value.src_or_dst == "self" ? true : null
  description       = lookup(each.value, "desc", null)
}

응용하면 라우팅 테이블도 가능할 것같다.

profile
유사 IT 항해

0개의 댓글