Terraform

Terraform 파일 분리 기반 구조에서 모듈화 구조로 변경

황동리 2025. 8. 13. 18:50
반응형

파일 분리 기반에서 모듈화 구조로 바뀌게 된 계기


원래는 이미지에 나와있는 것 처럼 모듈을 사용하지 않고, 한 워크스페이스 안에서 리소스별, 기능별로 .tf 파일을 나눠서 관리 하였습니다.


그런데 이번에, AWS Secret Manager 리소스를 1개가 아닌 여러개를 사용해야 해서, 변수를 구분하고자, AWS Secret Manager 부분만 모듈화로 변경하였습니다.


관련해서 제가 겪었던 경험을 적어보겠습니다.


모듈화 파일구조로 변경

이전에는 10_secretmanager.tf 파일로 관리를 해주었다면,


현재는 파일 구조를 아래와 같이 설정을 해주었습니다.

/modules
  ㄴ /<secret manager를 사용하는 파드 이름>
     ㄴ / main.tf
     ㄴ / variables_<secret manager를 사용하는 파드 이름>.tf
  • main.tf 구조 예시
resource "aws_secretsmanager_secret" "<파드 명>" {
  name = "<파드 명>"
}

resource "aws_secretsmanager_secret_version" "<파드 명>-values" {
  secret_id = aws_secretsmanager_secret.<파드 명>.id
  secret_string = jsonencode({
    example                = var.example
  })
}

main.tfvariables_<secret manager를 사용하는 파드 이름>.tf 두 파일의 내용은 변경하지 않고 이전에 사용하던 10_secretmanager.tf 과 해당 파일에서 사용하던 변수파일의 내용을 그대로 가져왔습니다.


변경된 점은 디렉터리 구조만 변경을 하였습니다.


그리고 이제 위 이미지에서 봣던 00_main.tf 파일의 내용을 아래와 같이 수정해주었습니다.

module "<secret manager를 사용하는 파드 이름>" {
  source = "./modules/<secret manager를 사용하는 파드 이름>"
}

이렇게 해주고 terraform init 명령어를 입력해줍니다.


이후 해줘야 할 작업은 terraform state 변경입니다.


우선 현재 상태를 확인해줍니다.

terraform state list

결과
aws_secretsmanager_secret.<파드 명>
aws_secretsmanager_secret_version.<파드 명>

위와 같이 결과가 나오는데, 해당 상태를 모듈 상태로 변경을 해주어야 기존에 사용하던 Secret manager를 삭제하지 않고 그대로 유지할 수 있습니다.

terraform state mv aws_secretsmanager_secret.<파드 명> module.<modules 하위 디렉터리 이름>.aws_secretsmanager_secret.<파드 명>
terraform state mv aws_secretsmanager_secret_version.<파드 명> module.<modules 하위 디렉터리 이름>.aws_secretsmanager_secret_version.<파드 명>

이렇게 상태까지 변경을 해주고 terraform plan 명령어를 입력해보면



현재 생성된 AWS 리소스 상태를 변경하지 않고 Terraform에서 파일 분리 구조에서 모듈화 구조로 변경이 가능 합니다.


이상 입니다.

반응형

'Terraform' 카테고리의 다른 글

Terraform 404 error 해결  (1) 2024.07.01
Terraform 실습 해보기 - 2  (1) 2023.12.22
Terraform 실습 해보기 - 1  (1) 2023.12.13