반응형
1. State File 관리
- Terraform은 인프라의 상태를 추적하기 위해 state file을 사용합니다. 이 파일은 인프라 리소스의 현재 상태를 저장하며, Terraform이 변경 사항을 비교하고 적용하는 데 중요한 역할을 합니다.
- state file은 보안이 중요한 파일이므로 직접 버전 관리 시스템에 저장하지 않고, 접근 권한을 철저히 관리해야 합니다.
2. State File 공유
- 여러 팀원이 협업할 때는 state file을 중앙에서 관리하고 공유해야 합니다.
- S3(AWS)나 Google Cloud Storage를 사용하여 원격 저장소로 설정하고, 팀이 동일한 상태 파일을 사용할 수 있게 설정합니다.
- 원격 백엔드를 설정하여 state file을 안전하게 저장하고 쉽게 공유할 수 있습니다.
3. State File Lock 설정 (S3 + DynamoDB)
- 다수의 사용자가 동시에 상태 파일에 접근할 경우 충돌을 방지하기 위해 Locking 기능을 추가합니다.
- DynamoDB 테이블을 S3와 함께 사용하면 state file에 대한 잠금을 구현하여 동시에 작업이 실행되지 않도록 합니다.
- dynamodb_table 설정을 통해, 다른 사용자가 작업 중일 때 잠금이 걸리도록 설정하여 안전하게 관리할 수 있습니다.
4. State File 버전 관리 (S3 Bucket 버전 관리)
- S3 버킷의 버전 관리 기능을 활성화하면 상태 파일이 변경될 때마다 이전 버전을 자동으로 기록할 수 있습니다.
- 버전 관리를 통해 잘못된 변경이 발생했을 때 과거 버전으로 쉽게 롤백할 수 있으며, 상태 파일의 변경 이력을 추적하는 데도 유용합니다.
5. State File 분기 (dev, test, prod)
- 개발, 테스트, 프로덕션 환경별로 state file을 분리하여 각 환경이 독립적으로 관리되도록 합니다.
- 환경별로 S3 버킷의 경로 또는 키를 다르게 설정하거나, Terraform 워크스페이스를 활용하여 상태 파일을 분리할 수 있습니다.
- 이를 통해 환경 간의 충돌을 방지하고, 환경별로 서로 다른 설정을 안전하게 관리할 수 있습니다.
6. Git 관리
- Terraform 코드는 Git 리포지토리를 통해 관리합니다.
- 모듈화된 코드와 환경별 디렉토리 구조를 갖추면 코드 재사용성을 높이고 관리가 용이해집니다.
- .gitignore에 terraform.tfstate와 같은 상태 파일과 .terraform/ 폴더를 제외하여 불필요한 파일이 리포지토리에 포함되지 않도록 합니다.
7. Git CI (Continuous Integration)
- Git CI 파이프라인을 구축하여 코드 변경이 발생할 때마다 Terraform의 코드 검증 및 플랜을 자동으로 실행하도록 설정합니다.
- GitHub Actions, GitLab CI/CD, CircleCI 등의 CI 도구를 통해 코드 푸시 시 terraform fmt, terraform validate, terraform plan과 같은 명령을 자동으로 실행하여 코드의 일관성을 검증합니다.
- 코드 리뷰 과정에서 예상되는 인프라 변경 사항을 확인할 수 있어 오류 발생 가능성을 줄입니다.
8. Git CD (Continuous Deployment)
- Git CD 파이프라인을 통해 코드가 검토 및 승인된 후 프로덕션에 자동 배포할 수 있도록 구성합니다.
- CD 파이프라인은 승인 후에만 terraform apply를 실행하도록 설정하여 신중한 배포가 이루어지도록 합니다.
- 프로덕션 환경에서는 추가적인 검토 절차를 두거나, 수동 배포를 위한 승인을 통해 안전성을 강화할 수 있습니다.
반응형
'Terrform' 카테고리의 다른 글
[terraform] terraform module( VPC) 사용 (0) | 2024.11.13 |
---|---|
AWS Terraform tfstate 파일 원격 관리(S3, DynamoDB) (0) | 2024.11.11 |
Terraform VPC 생성 (0) | 2021.08.03 |
Terraform Application Load Balancer(ALB)생성 (0) | 2021.08.02 |
Terraform EC2 생성 (0) | 2021.08.02 |
댓글