T101 4기14 5-3. Atlantis 실습 1. 준비 사항 GitHub 계정AWS 계정 (예제에서 AWS 리소스를 생성할 예정)로컬 머신 또는 EC2 인스턴스 (Atlantis 서버 실행용) 2. GitHub 리포지토리 리포지토리 생성 Token 생성Github → Settings → Developer settings ⇒ Personal access tokens : Tokens (classic) ← Repo 제한 가능 Fine-grained tokens 사용 권장 https://github.com/terraform-aws-modules/terraform-aws-atlantis GitHub - terraform-aws-modules/terraform-aws-atlantis: Terraform module to deploy Atlantis o.. 2024. 7. 14. 5-2. Atlantis 개념 1. Atlantis란Terraform 워크플로우를 자동화하는 오픈 소스 도구Luke Kysow에 의해 시작된 오픈소스 프로젝트https://www.runatlantis.io/ AtlantisAtlantis Terraform Pull Request Automation Running Terraform Workflows with Easewww.runatlantis.iohttps://www.youtube.com/watch?v=TmIPWda0IKg 2. Atlantis 주요 특징 Pull Request 기반 워크플로우GitHub, GitLab, Bitbucket 등의 코드 저장소와 통합되어 작동자동화된 Terraform 실행PR에 대해 자동으로 terraform plan을 실행협업 지원PR 댓글을 통해 Te.. 2024. 7. 14. 5-1. 모듈 0. 회사에선 AWS 기본 모듈 대신, 자체 모듈을 사용하는 이유항목설명커스터마이징- 사내 보안정책, 네이밍 규칙, 태깅 전략 등 요구사항에 맞춰 커스텀 가능- 사내 인프라 특징, 워크로드에 맞춰 모듈을 작성하고 최적화시킬 수 있음버전관리- 모듈의 버전 관리를 내부적으로 가능재사용성- 사내 인프라에 적합한 재사용가능한 모듈 작성을 통해 재사용성 향상 가능비즈니스 로직- 사내 비즈니스 로직이나 규칙을 인프라 프로비저닝에 포함 가능 1. 루트, 자식 모듈루트 모듈 (Root Module)테라폼을 실행하는 기본 작업 디렉토리에 있는 모듈다른 모듈을 호출하고 전체 인프라 구성을 조정자식 모듈 (Child Module)루트 모듈에서 호출되는 재사용 가능한 모듈특정 인프라 구성요소를 캡슐화 my_terraform_.. 2024. 7. 14. 4-2. tfstate 파일 관리 1. 팀 단위 테라폼 운영시 - 상태파일 관리 문제점상태 파일을 저장하는 공유 스토리지 Shared storage for state files각 팀원이 동일한 테라폼 상태 파일 사용을 위해서, 공유 위치에 저장이 필요상태 파일 잠금 Locking state files잠금 기능 없이 두 팀원이 동시에 테라폼 실행 시 여러 테라폼 프로세스가 상태 파일을 동시에 업데이트하여 충돌 가능(경쟁 상태 race condition)상태 파일 격리 Isolating state files예를 들면 테스트 dev 와 검증 stage 과 상용 prodction 각 환경에 대한 격리가 필요 출처 : [악분의 블로그] 테라폼 시리즈 20편. 협업을 위한 테라폼 관리 2. tfstate 파일 저장 위치관리방법저장위치로컬 상태 파일.. 2024. 7. 6. 4-1. terraform 상태관리 - 이론 1. terraform.tfstate 파일{ "version": 4, "terraform_version": "1.8.5", "serial": 5, "lineage": "c13e6102-903a-b2f1-6481-1e6ce048ad39", "outputs": {}, "resources": [], "check_results": null}항목설명version- 상태 파일(.tfstate) 형식의 버전terraform_version- terraform의 버전serial- 상태 파일(.tfstate)이 업데이트된 횟수lineage- 동일한 설정에서 생성된 상태 파일을 식별하는 고유 ID -> ????outputs- terraform 실행 후 출력된 값(output)resources- terrafor.. 2024. 7. 6. 3-1. Manage similar resources with for each(for each로 유사한 리소스 관리하기) Manage similar resources with for each(for each로 유사한 리소스 관리하기)링크 Manage similar resources with for each | Terraform | HashiCorp DeveloperProvision similar infrastructure components by iterating over a data structure with the for_each argument. Duplicate an entire VPC including a load balancer and multiple EC2 instances for each project defined in a map.developer.hashicorp.comTerraform의 for_each .. 2024. 6. 29. 2-3. always_run 이슈 - 코드 수정 없이 apply 실행시, 기존 리소스를 삭제하고 다시 생성하는 문제 이슈 설명- 테라폼 코드 수정 없이, terraform apply 를 실행할 때마다 EC2 인스턴스와 관련된 리소스들이 삭제되고 새로 생성 문제의 코드# AWS에서 PEM 키 파일의 존재 여부를 확인하는 null_resourceresource "null_resource" "check_aws_key_pair" { provisioner "local-exec" { command = /dev/null; then echo 'key_pair_exists=true' > ${local.key_pair_check_file} else echo 'key_pair_exists=false' > ${local.key_pair_check_file} fi EOT } # [.. 2024. 6. 23. 2-2. EC2 생성시 PEM Key 중복 체크 및 생성 코드 해당 포스팅은 테라폼 문법을 학습하며, 테스트 용으로 만든 포스팅입니다.실제 인프라 운영에 적용하기에 부적절합니다.해당 소스의 목적EC2 인스턴스를 생성하기 위해 필요한 PEM 키가 존재하는지 확인하고, 존재하지 않는 경우 새로운 키를 생성하여 사용하는 코드 파일 구조.├── main.tf├── provider.tf├── variables.tf├── locals.tf├── key_management.tf└── outputs.tf 주요 개념- Null Resource[null_resource 개념] null_resource는 Terraform에서 실제 인프라 자원을 생성하지 하지 않음. 주로 프로비저닝할 필요가 없는 작업에 사용.null_resource의 기본 동작은 terraform apply 명령어를 .. 2024. 6. 22. 이전 1 2 다음