전체 글

⛅ Cloud Study/🏹 IaC

[Terraform] OpenTofu

OpenTofu는?https://opentofu.org/docs/OpenTofu란 Terraform이 라이센스를 비즈니스 레벨로 변경함에 따라 Terraform의 포크(fork) 버전이다.이전의 이름은 OpenTF였지만, OpenTofu로 이름을 변경하였고, 오픈 소스, 커뮤니티 중심, Linux Foundation에서 관리한다. Hashicorp에서 Terraform의 라이센스를 MPL(Mozilla Public License)에서 BUSL(Business Source License) 비오픈 라이센스로 변경하였고, 이에 대한 대응으로 탕생하게 되었다. Terraform을 포크한 오픈 소스이기 때문에 Terraform의 구성과 워크플로에 호환되며, 현재는 버전 차이가 크지 않아 업데이트에 잘 따라가고 있..

⛅ Cloud Study/🏹 IaC

[Terraform] 테라폼으로 EKS 배포하기

1. Karpenter on EKS Fargatecodegit clone https://github.com/aws-ia/terraform-aws-eks-blueprintscd terraform-aws-eks-blueprints/patterns/karpentertree VPC 배포# VPC 정보 확인aws ec2 describe-vpcs --filter 'Name=isDefault,Values=false' --output yaml# vpc 배포 : 3분 소요terraform apply -target="module.vpc" -auto-approve# 배포 확인terraform state list EKS 배포   2. EKS With Terraform사전 준비 : awscli(IAM ‘관리자 수전’ 자격증명)..

⛅ Cloud Study/🏹 IaC

[Terraform] Module & Runner

6. 모듈테라폼으로 인프라와 서비스를 관리하면 시간이 지날수록 구성이 복잡해지고 관리하는 리소스가 늘어나게 된다. 테라폼의 구성 파일과 디렉터리 구성에는 제약이 없기 때문에 단일 파일 구조상에서 지속적으로 업데이트할 수 있지만, 다음과 같은 문제가 발생한다.테라폼 구성에서 원하는 항목을 찾고 수정하는 것이 점점 어려워짐리소스들 간의 연관 관계가 복잡해질수록 변경 작업의 영향도를 분석하기 위한 노력이 늘어남개발/스테이징/프로덕션 환경으로 구분된 경우 비슷한 형태의 구성이 반복되어 업무 효율이 줄어듦새로운 프로젝트를 구성하는 경우 기존 구성에서 취해야 할 리소스 구성과 종속성 파악이 어려움모듈은 루트 모듈과 자식 모듈로 구분된다루트 모듈 Root Module : 테라폼을 실행하고 프로비저닝하는 최상위 모듈자..

⛅ Cloud Study/🏹 IaC

[Terraform] 테라폼 State

5.1 State의 목적과 의미상태 파일은 배포할 때마다 변경되는 프라이빗 API private API로, 오직 테라폼 내부에서 사용하기 위한 것입니다.테라폼 상태 파일을 직접 편집하거나 직접 읽는 코드로 작성해서는 안됩니다.팀 단위에서 테라폼 운영 시 문제점상태 파일을 저장하는 공유 스토리지 Shared storage for state files각 팀원이 동일한 테라폼 상태 파일 사용을 위해서, 공유 위치에 저장이 필요상태 파일 잠금 Locking state files잠금 기능 없이 두 팀원이 동시에 테라폼 실행 시 여러 테라폼 프로세스가 상태 파일을 동시에 업데이트하여 충돌 가능(경쟁 상태 race condition)상태 파일 격리 Isolating state files예를 들면 테스트 dev 와 검..

⛅ Cloud Study/🏹 IaC

[Terraform] 테라폼 Provider

프로바이더테라폼은 terraform 바이너리 파일을 시작으로 로컬 환경에나 배포 서버와 같은 원격 환경에서 원하는 대상을 호출하는 방식으로 실행된다. 이때 ‘원하는 대상’은 호출하는 방식이 서로 다르지만 대상의 공급자, 즉 프로바이더가 제공하는 API를 호출해 상호작용을 한다. 여기서 테라폼이 대상과의 상호작용을 할 수 있도록 하는 것이 ‘프로바이더’다.각 프로바이더의 API구현은 서로 다르지만 테라폼의 고유 문법으로 동일한 동작을 수행하도록 구현되어 있다. 프로바이더는 플러그인 형태로 테라폼에 결합되어 대상이 되는 클라우드, SaaS, 기타 서비스 API를 사용해 동작을 수행한다. 각 프로바이더는 테라폼이 관리하는 리소스 유형과 데이터 소스를 사용할 수 있도록 연결한다.즉, 테라폼은 프로바이더 없이는 ..

⛅ Cloud Study/🏹 IaC

[Terraform] 프로비저너, terraform_data, moved, CLI 환경변수

‘테라폼으로 시작하는 IaC’ 책을 기준하여 정리하였습니다.3.12 프로비저너프로비저너프로비저너는 프로바이더와 비슷하게 ‘제공자’로 해석되나, 프로바이더로 실행되지 않는 커맨드와 파일 복사 같은 역할을 수행 - 링크 Tutorial예를 들어 AWS EC2 생성 후 특정 패키지를 설치해야 하거나 파일을 생성해야 하는 경우, 이것들은 테라폼의 구성과 별개로 동작해야 한다.프로비저너로 실행된 결과는 테라폼의 상태 파일과 동기화되지 않으므로 프로비저닝에 대한 결과가 항상 같다고 보장할 수 없다 ⇒ 선언적 보장 안됨따라서 프로비저너 사용을 최소화하는 것이 좋다. 프로비저너의 종류에는 파일 복사와 명령어 실행을 위한 file, local-exec, remote-exec가 있다.프로비저너의 경우 리소스 프로비저닝 이..

⛅ Cloud Study/🏹 IaC

[Terraform] 테라폼 반복문, 조건문, 함수

‘테라폼으로 시작하는 IaC’ 책을 기준하여 정리하였습니다.3.9 반복문for each: 반복문, 선언된 key 값 개수만큼 리소스를 생성for-each는 반복(for)을 할 때 타입 값에 대해 하나하나 each object로 접근한다는 의미이다.each object는 key, value 2개의 속성을 가지고 있다.each.key — The map key (or set member) corresponding to this instance.each.value — The map value corresponding to this instance. (If a set was provided, this is the same as each.key.)하지만 for_each는 모든 타입에 대해 each object로 접..

나리 집사
클라우드 개발 일지