elasticache 생성

hyuckhoon.ko·2023년 1월 27일
0

테라폼

목록 보기
4/4
post-thumbnail

1. 필요한 사양 확인

AWS 콘솔을 통해 원하는 자원의 elasticache를 생성했다.

하나의 샤드와 2개의 노드(primary, replica)인 redis가 필요했다.
이를 terraform으로 즉, IaC화 하는 게 처음엔 어려웠다.

왜냐하면 테라폼 공식문서에 나온대로 레디스를 생성하면 샤드가 0인 채로 생성됐기 때문이다.

그렇게 삽질을 하던 중 이미 고생을 겪은 분이 공유한 글이 있었다.

이 글을 토대로 terraform 공식문서를 다시 검색하니, 역시 설명이 돼 있었다.

단일 샤드와 단일 읽기 레플리카를 생성하기 위한 지침

위 문서들을 토대로 원하는 자원을 생성할 수 있었다.


2. elasticache.tf

resource "aws_security_group" "redis" {
  vpc_id = aws_vpc.main.id

  ingress {
    from_port       = 6379
    to_port         = 6379
    protocol        = "tcp"
    security_groups = [aws_security_group.eb_sg.id]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_elasticache_subnet_group" "main" {
  name = "${local.prefix}-redis-subnet"
  subnet_ids = [
    aws_subnet.public_a.id,
    aws_subnet.public_b.id
  ]
}

resource "aws_elasticache_replication_group" "main" {
  description                = local.prefix
  automatic_failover_enabled = true
  replication_group_id       = "${local.prefix}-redis"
  node_type                  = "cache.t4g.micro"
  num_cache_clusters         = 2
  parameter_group_name       = "default.redis7"
  port                       = 6379
  security_group_ids         = [aws_security_group.redis.id]
  subnet_group_name          = aws_elasticache_subnet_group.main.name

  tags = merge(
    local.common_tags,
    tomap({ "Name" = "${local.prefix}-redis" })
  )
}

0개의 댓글