Automation

OpenTofu란?HashiCorp가 Terraform 라이선스를 Mozilla Public License (MPL) → 비오픈 소스 라이선스인 Business Source License (BUSL)로 변경되면서 테라폼의 포크 버전으로 이를 대응하기 위해 개발하고 있는 CNCF 프로젝트입니다.HashiCorp가 제공하는 Provider는 여전히 MPL-2.0 License를 사용하고 있습니다. OpenTofu 설치 Tenv 설치 tenv는 tfenv(테라폼 버전 관리)의 후속버전으로 OpenTofu, Terraform, Terragrunt and Atmos 등의 도구들의 버전 관리를 도와주는 오픈소스입니다. tenv 설치를 위해서는 기존 tfenv를 제거해주어야 합니다.다음은 tenv에서 사용하는 도구들..
1. Amazon EKS Blueprints for Terraform - Karpenter on EKS FargateAmazon EKS Blueprints for Terraform는 Terraform을 사용하여 다양한 Amazon EKS 클러스터 패턴 템플릿을 제공합니다. 테라폼이 복잡하게 권장하는 구성 지침보다는 사용자가 EKS 클러스터를 최대한 빠르고 쉽게 구성할 수 있도록 하는데에 초점을 두고 있습니다. 아래와 같이 다양한 기타 프로젝트를 지원합니다.GitopsData on EKSObservability AcceleratorKarpenter Blueprintskarpenter-blueprints Fargate는 컨트롤 플레인 + Fargate(데이터 플레인)의 완전한 서버리스형 쿠버네티스 컴퓨팅 엔..
모듈(Module)모듈은 테라폼에서 재사용 가능한 구성 요소입니다. 여러 리소스의 집합을 캡슐화하여 다른 테라폼 구성 파일에서 호출할 수 있게 합니다. 모듈을 사용하면 인프라 코드를 더 구조화되고 관리하기 쉽게 만들 수 있습니다. 마치 개발에서 사용되는 라이브러리, 모듈 개념과 비슷하다고 할 수 있습니다.   자식 모듈과 자식모듈을 호출하는 루트 모듈의 디렉터리로 구조입니다.모듈 기본 작성 원칙디렉터리 형식 제안: 모듈 디렉터리 이름은 terraform-- 형식을 사용합니다. 이 형식은 모듈이 테라폼용이고, 어떤 프로바이더의 리소스를 포함하며, 모듈의 이름을 명확히 알 수 있도록 합니다.모듈화 가능한 구조로 작성: 테라폼 구성은 처음부터 모듈화를 염두에 두고 작성합니다. 단일 루트 모듈이라도 후에 다른 ..
프로바이더(Provider)Terraform 프로바이더는 다양한 클라우드 서비스 및 인프라 플랫폼과 상호작용할 수 있게 해주는 플러그인입니다. 프로바이더는 Terraform이 관리할 수 있는 리소스 유형과 API를 정의하며, Terraform 구성 파일에서 해당 리소스를 선언하고 관리할 수 있도록 합니다.프로바이더 구성테라폼 레지스트리를 통해 수 많은 벤더사의 프로바이더를 제공합니다. 프로바이더 목록에는 유지 보수 및 게시에 권한에 따라 티어가 존재한다고 합니다.provider 키워드를 통해 선언하고 terraform init 명령어 시, 프로바이더 파일을 다운로드합니다.# main.tfprovider "aws" { region = "us-west-2" access_key = "your-acc..
1. 반복문 for_each 기본Terraform의 for_each는 선언된 key 값 개수만큼 리소스를 생성하는 반복문입니다.each object는 key, value 2개의 속성을 가지고 있습니다.for_each는 모든 타입에 대해 each object로 접근할 수 없고 map, set타입만 허용합니다.map, set타입이 아닌 expression은 map 또는 set으로 타입변환(toset 등)을 해야 합니다.count와 비교했을 때, for_each는 항목 추가나 삭제 시 다른 리소스에 영향을 미치지 않는다는 장점이 있습니다. 예시: 기본 사용법이 예시에서는 names 변수 목록의 각 항목에 대해  로컬파일을 생성합니다.# main.tf 작성 variable "names" { default = ..
1. 데이터 소스Terraform 코드에서 외부 리소스의 정보를 가져와서 사용할 수 있게 해주는 구성 요소입니다.외부 리소스 참조: 데이터 소스를 사용하여 외부 인프라의 정보를 읽어올 수 있습니다. 예를 들어, 이미 존재하는 AWS VPC, 서브넷, 또는 보안 그룹의 정보를 가져와서 사용할 수 있습니다.동적 설정: 데이터 소스에서 가져온 값을 바탕으로 동적으로 설정을 조정할 수 있습니다. 예를 들어, 최신 AMI ID를 가져와서 EC2 인스턴스를 생성할 때 사용할 수 있습니다.구성 파일 간의 의존성 관리: 서로 다른 테라폼 구성 파일 간에 데이터 소스를 통해 의존성을 관리할 수 있습니다. 다른 모듈에서 생성한 리소스의 정보를 데이터 소스를 통해 가져와서 사용할 수 있습니다데이터 소스 구성데이터 소스 선언..
가시다님이 진행하시는 T101(Terraform 101 Study) 내용 정리입니다.스터디 내용은 테라폼으로 시작하는 IaC 책의 내용을 참고하였습니다.테라폼 기본 사용테라폼은 hashcorp사에서 공개한 너무나도 유명한 IaC 도구입니다.테라폼 설치mac os를 기준, 설치 방법입니다. tfenv는 테라폼의 다양한 버전을 사용할 수 있게 해 주는 도구입니다.테라폼 설치 버전 : 1.8.5테라폼 자동완성 설치# tfenv 설치brew install tfenv# 설치 가능 버전 리스트 확인tfenv list-remote# 테라폼 1.5.1 버전 설치tfenv install 1.8.5# 테라폼 1.5.1 버전 사용 설정 tfenv use 1.8.5# tfenv로 설치한 버전 확인tfenv list# 테라폼 ..
앤서블의 단점을 꼽자면? Ansible의 장점은 너무나도 많지만, 제가 생각하는 가장 큰 단점은 다른 사람과의 협업이 불편하다고 생각합니다. 왜냐하면 앤서블은 agentless방식으로 ssh로만 동작하기 때문에 버전관리 및 권한관리가 어렵습니다. 플레이북을 Git을 통해 형상관리를 할 수는 있지만, 사용자의 권한을 제약하고 플레이북을 실행을 추적하는 데 있어서 어려움이 존재합니다. 앤서블은 CLI로 동작하기 때문에 사용하는 데 있어서 어느 정도 러닝커브가 있기도 하며 플레이북을 실행시킬 수 있는 서버를 제공해야 합니다. 하지만, 세마포어(Semaphore)라는 앤서블 UI 오픈소스를 사용하면 아래와 같은 기능들로 앤서블의 단점들을 보완할 수 있다고 생각합니다 (뮤텍스와 세마포어의 세마포어가 아님주의) 빌..
장성필(hackjap)
'Automation' 카테고리의 글 목록