SMALL

IAC 13

이제 Terraform state에 password 안 넣어도 된다

지난주에 사내 보안팀에서 state 파일 감사를 돌렸다. 결과 보고서를 받아보니 우리 팀 모듈 몇 개에 RDS master password가 평문으로 박혀 있었다. random_password로 만들어서 aws_db_instance.password에 넘긴 건데, 그 흐름을 타는 모든 값이 state에 그대로 적힌다. KMS로 백엔드 암호화는 해뒀어도, 누가 terraform show만 치면 그냥 보이는 거라 좀 찜찜했다.이거 사실 1.11부터 들어온 write-only argument로 우회할 수 있다. 1.10에서 ephemeral resource가 먼저 들어왔고, 1.11에서 write-only가 따라 들어온 건데, 모르고 계신 분이 의외로 많길래 짧게 정리해본다.동작 방식1.10의 ephemeral..

IT/IaC 2026.05.06

Terraform vs OpenTofu, 2년 써보고 내리는 조심스러운 결론

OpenTofu 1.0이 나온 게 2024년 초였다. 당시 팀에서 "일단 지켜보자"고 결정한 뒤로 약 2년이 지났고, 그 사이에 우리 팀은 한쪽 서비스 군을 OpenTofu로 옮겨봤다. 나머지는 여전히 Terraform이다. 의도한 건 아니고 어쩌다 보니 그렇게 됐는데, 결과적으로는 같은 조직 안에서 둘을 병행 운영하는 꽤 좋은 비교 실험이 됐다.요즘 들어 "이제 OpenTofu로 갈아타야 하는 거 아니냐"는 질문을 사내외에서 자주 받는다. 특히 작년 12월에 IBM이 HashiCorp 인수 마무리하면서 분위기가 또 한 번 바뀌었다. 이 글은 그 질문에 대한 내 나름의 답이다. 결론부터 말하면 "상황에 따라 다르다"는 재미없는 답이 맞는데, 적어도 어떤 상황에서 뭘 고려해야 하는지는 좀 정리가 됐다.2년..

IT/IaC 2026.04.25

Terraform S3 backend, 이제 DynamoDB 없이 lock 걸 수 있다

오늘 알게 된 건데, 이거 모르는 분 꽤 많더라. Terraform 1.10부터 S3 backend에 native state locking이 들어왔다. 그동안 DynamoDB 테이블 하나 따로 만들어서 lock 걸던 그거, 이제 안 해도 된다.우리 팀도 스테이지/프로덕션 합쳐서 DynamoDB lock 테이블 5개를 굴리고 있었는데, 최근에 신규 모듈 정리하면서 이걸 다 걷어냈다. 후기 짧게 남긴다.뭐가 달라졌나기존에는 backend "s3" 블록에 dynamodb_table을 반드시 지정해야 동시성 제어가 됐다. 1.10부터는 use_lockfile = true 한 줄이면 끝. S3 객체 자체에 conditional write로 lock 파일을 만들어 거는 방식이다.terraform { backend..

IT/IaC 2026.04.25
BIG