Terraform 워크플로를 개선하기 위한 20가지 모범 사례 | 2부

이전 부분에서는 Terraform 프로젝트를 구축하기 위한 몇 가지 전략과 Terraform을 사용하여 IaC를 관리하기 위한 몇 가지 모범 사례를 살펴보았습니다. 오늘 우리는 귀하와 귀하의 팀에 의미 있는 팁과 지침을 제공하기 위해 Terraform 코드를 다음 단계로 끌어올리는 세부 사항에 대해 계속해서 알아볼 것입니다.
 

태그 리소스

강력하고 일관된 태깅 전략은 문제가 발생하거나 인프라의 어느 부분이 클라우드 비용을 급증시키는지 파악하려고 할 때 큰 도움이 될 것입니다. 필요한 경우 태그를 기반으로 일부 액세스 제어 정책을 생성할 수도 있습니다. 명명 규칙을 정의하는 것과 마찬가지로 일관성을 유지하고 그에 따라 항상 리소스에 레이블을 지정하십시오.
 

Terraform 매개변수 라벨은 마지막 매개변수로 선언되어야 합니다( depends_on관련된 경우 라벨 뒤에 수명 주기 매개변수만 정의해야 함).
 

태그를 지정할 때 공급자가 관리하는 모든 리소스에 적용되는 항목을 정의할 수 있습니다 default_tags. 사용된 공급자가 기본 태그를 지원하지 않는 경우 이러한 태그를 모듈에 수동으로 전달하고 리소스에 적용해야 합니다.
 

PaC(Policy as Code) 소개

비즈니스 팀과 인프라의 규모가 커지면서 개별 사용자에 대한 신뢰도가 낮아지는 경우가 많습니다. 이때는 시스템이 계속 작동하고 보안을 유지할 수 있도록 정책을 마련해야 합니다. 코드형 정책 프로세스를 개발하면 안전하고 수용 가능한 규칙을 대규모로 정의하고 이러한 규칙을 자동으로 검증할 수 있습니다.
 

기밀 관리 전략 구현

Terraform을 사용하기 시작할 때 비밀 관리는 최우선 순위가 아닐 수 있지만 궁극적으로는 비밀 처리 정책을 정의하는 일로 돌아옵니다.
 

모든 튜토리얼에서 말했듯 이 비밀을 일반 텍스트로 저장하지 말고 버전 제어 시스템에 커밋하지 마십시오 . TF_VAR로 환경 변수를 설정하고 sensitive = true민감한 변수를 표시하여 비밀을 전달할 수 있습니다 .
 

또는 보다 성숙한 솔루션은 기밀 정보에 대한 액세스를 처리하기 위해 비밀 저장소(예: Hashicorp Vault 또는 AWS Secrets Manager)를 설정하는 것입니다. 이런 방식으로 저장된 비밀이 보호되고 암호화가 시행됩니다. 키 순환 및 감사 로깅과 같은 고급 기능에 대한 옵션도 있습니다. 그러나 이 접근 방식을 사용하면 기업에서 이 호스팅 서비스를 사용하는 데 비용이 발생하는 경우가 많다는 점에 유의하는 것이 중요합니다.
 

Terraform 코드 테스트

다른 모든 코드와 마찬가지로 IaC 코드도 이에 따라 테스트되어야 합니다. 실행은 terraform plan변경 사항이 예상대로 작동하는지 빠르게 확인할 수 있는 가장 쉬운 방법입니다. 다음으로 Terraform 코드를 적용하지 않고 정적 분석을 수행할 수 있습니다. 단위 테스트는 시스템의 여러 부분이 제대로 작동하는지 확인하는 옵션이기도 합니다.
 

또 다른 단계는 Terraform linterCI/CD 파이프라인에 통합하고 클라우드 공급자, 더 이상 사용되지 않는 구문, 모범 사례 시행 등과 관련된 잠재적인 버그를 찾아내는 것입니다.
 

위의 단계를 공식적으로 진행하기 전에 통합 테스트 복제본 샌드박스 환경을 시작하여 모든 것이 예상대로 작동하는지 확인하고 결과를 수집한 다음 샌드박스를 삭제하고 프로덕션에 적용할 수 있습니다.
 

디버깅/문제 해결 활성화

문제가 발생하면 문제 해결에 필요한 모든 정보를 신속하고 효율적으로 수집해야 합니다. 이러한 상황에서는 디버깅 목적으로 Terraform 로그 수준을 설정하는 것이 도움이 될 수 있습니다.

TF_LOG=DEBUG

TF_LOG_PATH 환경 변수를 설정하여 로그도 파일에 보관됩니다.
 

모듈을 최대한 많이 구축하세요

커뮤니티에 귀하의 사용 사례에 적합한 모듈이 없으면 직접 구축해 볼 수 있습니다. 일반적으로 기본적인 것부터 구축을 시작하며, 인프라가 성숙해지면 간단한 모듈로 돌아가서 더 많은 기능을 추가해야 할 수도 있습니다. 다른 환경에서 코드를 복사할 때 해야 할 일은 모듈에서 개체를 만들고 새 환경에 대한 올바른 매개 변수로 개체를 채우는 것뿐입니다.
 

루프 및 조건문 사용

count코드는 리소스의 여러 인스턴스를 생성할 수 있어야 하므로 한 환경에서 다른 환경으로 변경될 수 있는 인스턴스에 or 를 사용하는 것이 좋습니다 for_each. 이를 통해 동일한 코드를 다양한 사용 사례에 맞게 유연하게 사용할 수 있으며 매개변수에 대한 공통성을 제공할 수 있습니다.
 

기능 사용

루프 및 조건문 외에도 Terraform 함수는 코드에서 공통성을 달성하는 데 중요합니다. 이는 코드를 더욱 동적으로 만들고 구성이 DRY인지 확인합니다(반복하지 마세요). 함수를 사용하면 표현식을 다른 데이터 유형으로 변환하고, 길이를 계산하고, 복잡한 변수를 생성하는 등 다양한 작업을 수행할 수 있습니다.
 

동적 모듈 활용

동적 모듈이 없으면 코드가 DRY 상태에 도달할 수 없습니다. 이 기능을 사용할 수 있으면 원하는 방식으로 리소스를 유연하게 구축할 수 있습니다. 예를 들어 일부 클라우드 제공업체에는 보안 그룹 규칙을 위한 전용 리소스가 없으며 이러한 규칙은 보안 그룹 자체에 포함되는 경우가 많습니다. 동적 모듈을 사용하면 입력만 변경하면 됩니다. 그러나 동적 모듈이 없으면 새 규칙이 추가될 때마다 그에 따라 구성을 변경해야 합니다.
 

사용 Terraform WorkSpace

다양한 환경에서 동일한 구성을 재사용할 수 있도록 Terraform Workspace를 사용하세요.
 

수명주기 블록 사용

때로는 코드에 복잡한 조건이 있을 수 있습니다. 예를 들어 리소스 태그에서 Terraform 외부의 항목을 변경해야 하는 스크립트가 있다고 가정해 보겠습니다(권장되지 않음). 이때 이전 버전으로 롤백되지 않도록 라이프사이클 모듈을 사용하여 레이블의 변경 사항을 무시할 수 있습니다.
 

어떤 이유로든 제대로 작동하는 것처럼 보이지만 가동 중지 시간 없이 다시 생성해야 하는 리소스가 있는 경우 수명 주기 모듈도 도움이 될 수 있습니다. create_before_destroy=true이 목적을 달성하기 위해 사용할 수 있습니다 .
 

변수를 사용하여 유효성 검사

Terraform은 변수가 올바른 입력을 받는지 검증하는 훌륭한 작업을 수행합니다. 하지만 무언가를 제한하고 싶지만 PaC가 구현되지 않은 경우 어떻게 해야 할까요? 이때 변수 유효성 검사를 사용할 수 있습니다. 이 검증 블록은 변수 내부에 존재합니다. 자세한 내용은 Terraform 공식 지침 [1]을 참조하세요.
 

보조 도구의 유연한 사용

Terraform은 가장 일반적으로 사용되고 사랑받는 IaC 도구 중 하나이며, 해당 커뮤니티도 매우 크고 활발합니다. 이 커뮤니티와 함께 ​​사용자가 Terraform을 더 잘 사용할 수 있도록 돕기 위해 만들어진 많은 보조 도구가 있습니다. 물론 작업 흐름에 적합한 도구를 선택하고 채택하는 것은 간단한 문제가 아니며 종종 실험 단계가 필요합니다. 다음은 참조할 수 있는 몇 가지 유용한 도구 목록을 요약한 것입니다.

  • tflint - 계획에서 포착할 수 없는 오류를 확인하기 위한 Terraform 린터입니다.

  • tfenv – Terraform 버전 관리자

  • checkov – Terraform 정적 분석 도구

  • terratest – Terraform 테스트를 자동화하는 데 도움이 되는 Go 라이브러리

  • pre-commit-terraform – 자동화를 위한 사전 커밋 git 후크

  • terraform-docs - 모듈에서 문서를 빠르게 생성

  • atlantis – Terraform 프로젝트 협업 워크플로

  • terraform-cost-estimation – 계획에 대한 비용 추정 서비스
     

IDE 확장 활용

Terraform 코드를 작성할 때 Visual Studio Code 또는 다른 IDE를 사용하는 경우 해당 확장 기능을 활용하여 개발 프로세스 속도를 높이고 코드 형식이 올바른지 확인할 수 있습니다. vscode에서는 Anton Kulikov가 구축한 Terraform 확장을 사용할 수 있습니다. 제대로 작동하는지 확인하려면 로컬 머신에 Terraform을 설치하는 것을 잊지 마세요.
 


 

요약하다

우리는 Terraform 및 IaC에 대한 다양한 모범 사례를 탐색하고 Terraform 프로젝트 작업 및 구축을 위한 다양한 옵션을 분석했으며 접근성 도구를 채택하면 삶이 어떻게 더 쉬워지는지 배웠습니다. 이는 맹목적으로 따라야 하는 팁은 아니지만, 이 문서가 최적의 Terraform 워크플로 및 프로젝트를 구축할 수 있는 지침, 팁 및 트리거를 제공하는 가이드 역할을 하길 바랍니다.
 

원본 링크 :
https://spacelift.io/blog/terraform-best-practices
참조 링크 :
1. https://developer.hashicorp.com/terraform/언어/values /variables

 

Supongo que te gusta

Origin blog.csdn.net/SEAL_Security/article/details/133267955
Recomendado
Clasificación