Skip to content

[CHORE] terraformer로 현재 AWS 인프라 IaC 스냅샷#18

Open
sunm2n wants to merge 4 commits into
mainfrom
chore/#17-terraformer-infra-snapshot
Open

[CHORE] terraformer로 현재 AWS 인프라 IaC 스냅샷#18
sunm2n wants to merge 4 commits into
mainfrom
chore/#17-terraformer-infra-snapshot

Conversation

@sunm2n

@sunm2n sunm2n commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

개요

운영 중인 AWS 인프라를 terraformer로 떠낸 초기 IaC 스냅샷. brownfield IaC 전환의 baseline이다.
실물 변경 없이(read-only) 현재 상태를 코드로 캡처하는 것이 목표이며, 모듈화·state 연결은 후속 PR로 분리한다.

작업 내용

  • OpenTofu 1.12.3 + terraformer 0.8.30 기반 export (region ap-northeast-2)
  • 네트워크: vpc/subnet/route_table/igw/eip/nacl
  • 컴퓨트: ec2_instance(app·db)/eni/sg
  • DNS: route53(zone·record)
  • IAM: 계정 전체 export에서 LinClean 관련만 선별 (github-actions-deploy, linclean-ec2-role + 정책/프로파일)
  • .gitignore에 terraform 산출물(tfstate/.terraform/tfvars/lock) 규칙 추가
  • terraform/README.md에 도구·재현법·후속 작업 정리

보안 처리

  • 시크릿 제외: SSM SecureString/KMS는 평문 노출 위험으로 스냅샷에서 의도적 제외
  • 계정 잡음 제거: IAM 사용자·access key·서비스 연결 역할 제외 (히스토리에도 미포함)
  • 계정 ID 비노출: 공개 레포라 ARN의 계정 ID를 data.aws_caller_identity.current.account_id로 동적 참조

커밋

  • [chore] 작업 환경 세팅 (provider + gitignore)
  • [chore] 네트워크·컴퓨트·DNS 스냅샷
  • [chore] LinClean IAM 스냅샷
  • [docs] README

후속 작업 (별도 이슈)

  • state 정합성 (tofu plan "No changes" 검증)
  • tfer-- 자동생성 코드 모듈화 (+ 레거시 provider 주소, region/version 일원화)
  • OIDC provider 수동 import
  • SSM Parameter Store 참조형 관리

Closes #17

sunm2n added 4 commits June 19, 2026 19:31
- OpenTofu + AWS provider(~> 5.0, ap-northeast-2) 선언 추가
- .gitignore에 terraform 산출물 규칙 추가 (tfstate/.terraform/tfvars/lock)

IssueNum #17
- 네트워크: vpc/subnet/route_table/igw/eip/nacl
- 컴퓨트: ec2_instance(app·db)/eni/sg
- DNS: route53(zone·record)
- region ap-northeast-2, terraformer 0.8.30 + connect=true

IssueNum #17
- github-actions-deploy(OIDC 배포 역할), linclean-ec2-role(EC2 역할)
- linclean-deploy-ssm, linclean-ec2-ssm-read 정책 및 인스턴스 프로파일
- 계정 전체 export에서 사용자/access key/서비스연결역할 제거 (시크릿·잡음 방지)
- 공개 레포 대비: ARN의 계정 ID를 평문 대신 data.aws_caller_identity로 동적 참조

IssueNum #17
- 도구 버전·디렉터리 구조·스냅샷 범위(50개) 정리
- 재현 방법(provider 연결, AWS_REGION 우회) 기록
- 후속 작업 체크리스트(state 정합성/모듈화/OIDC 누락/레거시 provider/region·version)

IssueNum #17
@sunm2n sunm2n self-assigned this Jun 19, 2026
@sunm2n sunm2n added the chore label Jun 19, 2026
@sunm2n
sunm2n requested a review from minsoo0506 June 19, 2026 12:00
}

ingress {
cidr_blocks = ["116.121.87.170/32"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

보안 그룹에 특정 공인 IP(116.121.87.170/32)가 그대로 포함되어 있습니다. 관리자 개인 또는 사무실 IP라면 운영 환경의 접근 지점이 공개될 수 있으므로, 실제 값은 저장소에서 제거하는 편이 안전해 보입니다.

변수로 분리하고 실제 값은 Git에 포함하지 않는 tfvars 파일이나 배포 환경에서 주입하는 방식을 검토해 주시면 좋겠습니다.

}
POLICY

managed_policy_arns = ["arn:aws:iam::${data.aws_caller_identity.current.account_id}:policy/linclean-deploy-ssm"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

iam_role.tf의 managed_policy_arns에서 정책을 연결하면서, 동일한 정책 연결을 aws_iam_role_policy_attachment(terraform/generated/aws/iam/iam_role_policy_attachment.tf)로도 선언하고 있습니다.

동일한 IAM 정책 연결을 두 방식으로 관리하면 추후 terraform plan 또는 apply 과정에서 반복적인 변경 사항이 발생하거나, 두 리소스가 서로의 설정을 덮어쓰려는 문제가 생길 수 있습니다.

managed_policy_arns와 aws_iam_role_policy_attachment 중 한 가지 방식으로 통일해 주시면 좋겠습니다. 정책 연결을 개별적으로 관리하려는 목적이라면 후자만 사용하는 방식이 더명확해 보입니다!

Comment thread terraform/README.md
cp .terraform/providers/registry.opentofu.org/hashicorp/aws/*/darwin_arm64/terraform-provider-aws \
~/.terraform.d/plugins/darwin_arm64/terraform-provider-aws_v5.100.0_x5

# EC2 계열은 AWS_REGION 환경변수가 있어야 aws-global 오해석을 피함

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

첫 번째 terraformer import 명령의 --resources에 이미 route53이 포함되어 있지만, 56번째 줄에서 IAM과 Route53을 다시 export하고 있습니다.

README의 설명대로 Route53을 글로벌 서비스로 분리해서 실행하려는 의도라면, 첫 번째 명령에서는 route53을 제거해야 할 것 같습니다.

Comment thread terraform/README.md
```

## 스냅샷 범위 (50개 리소스)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

30번째 줄에는 스냅샷 범위가 총 50개 리소스라고 작성되어 있지만, 아래 표의 합계와 실제 Terraform resource 선언은 모두 37개입니다.

리소스를 정리하는 과정에서 문서만 갱신되지 않은 것으로 보입니다. 현재 커밋된 코드를 기준으로 작성한 문서라면 수정 부탁드립니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[CHORE] terraformer로 현재 AWS 인프라 IaC 스냅샷

2 participants