DDetB.Log
article thumbnail
Terraform - Workflow
DevOps/Terraform 2023. 8. 20. 02:13

이 포스팅은 CloudNet@ 팀이 진행하는 테라폼 기초 입문 스터디에 참여하며 ‘테라폼으로 시작하는 IaC’ 책을 기준하여 정리한 글입니다. Workflow 테라폼 워크플로는 단계별로 다음과 같이 구분한다. Write: 코드를 작성 Plan: 적용하기 위한 실행 계획을 통해 리뷰 Apply: 코드로 인프라를 프로비저닝 규모에 따른 워크플로 개인의 워크플로 개인이 테라폼으로 일하는 방식 Write : 프로비저닝하려는 목적에 따라 테라폼 코드를 작성 개인 작업이더라도 반복적인 사용성을 고려하자. 인수에 할당되는 값을 입력 변수화하고 반복적인 구조가 발생하는 경우 리소스 단위별로 반복문을 사용할지 다수의 리소스를 모듈화할지 결정한다. Plan : 적용하기 위한 실행 계획을 통해 리뷰 테라폼의 Plan뿐 아니..

article thumbnail
Terraform - State Backends
DevOps/Terraform 2023. 8. 13. 02:33

이 포스팅은 CloudNet@ 팀이 진행하는 테라폼 기초 입문 스터디에 참여하며 ‘테라폼으로 시작하는 IaC’ 책을 기준하여 정리한 글입니다. State Backends 테라폼은 지속적인 State 데이터를 사용하여 관리하는 리소스를 추적한다. State Backends를 통해 여러 사람이 State 데이터에 액세스하고 해당 인프라 리소스 모음을 협업할 수 있다. 관리 : 지속적인 State 백업을 위해서 local 이외의 저장소가 필요 공유 : 다수의 작업자가 동일한 State로 접근해 프로비저닝하기 위한 공유 스토리지 필요 격리 : 민감한 데이터가 State 파일에 저장될 가능성을 고려하여, 각각의 환경에 따라 접근 권한 제어 필요 Available Backends local: 기본 백엔드로 로컬파일..

article thumbnail
Terraform - Module
DevOps/Terraform 2023. 7. 29. 22:35

이 포스팅은 CloudNet@ 팀이 진행하는 테라폼 기초 입문 스터디에 참여하며 ‘테라폼으로 시작하는 IaC’ 책을 기준하여 정리한 글입니다. 테라폼으로 인프라와 서비스를 관리하면 시간이 지날수록 구성이 복잡해지고 관리하는 리소스가 늘어나게 된다. 테라폼의 구성 파일과 디렉터리 구성에는 제약이 없기 때문에 단일 파일 구조상에서 지속적으로 업데이트할 수 있지만, 다음과 같은 문제가 발생한다. 테라폼 구성에서 원하는 항목을 찾고 수정하는 것이 점점 어려워짐 리소스들 간의 연관 관계가 복잡해질수록 변경 작업의 영향도를 분석하기 위한 노력이 늘어남 개발/스테이징/프로덕션 환경으로 구분된 경우 비슷한 형태의 구성이 반복되어 업무 효율이 줄어듦 새로운 프로젝트를 구성하는 경우 기존 구성에서 취해야 할 리소스 구성과..

article thumbnail
Terraform - State
DevOps/Terraform 2023. 7. 29. 22:22

이 포스팅은 CloudNet@ 팀이 진행하는 테라폼 기초 입문 스터디에 참여하며 ‘테라폼으로 시작하는 IaC’ 책을 기준하여 정리한 글입니다. 테라폼은 Stateful 애플리케이션이다. 프로비저닝 결과에 따른 State를 저장하고 프로비저닝한 모든 내용을 JSON 형태로 저장하여 상태를 추적한다. State에는 작업자가 정의한 코드와 실제 반영된 프로비저닝 결과를 저장하고, 이 정보를 토대로 이후의 리소스 생성, 수정, 삭제에 대한 동작 판단 작업을 수행한다. State의 목적과 의미 State의 역할은 다음과 같다. 테라폼 구성과 실제를 동기화하고, 각 리소스에 고유한 아이디를 맵핑 리소스 종속성과 같은 메타데이터를 저장하고 추적 테라폼 구성으로 프로비저닝된 결과를 캐싱하는 역할을 수행 vpc.tf p..

article thumbnail
Terraform 기본 사용 (7) - terraform_data & moved blocks
DevOps/Terraform 2023. 7. 22. 04:22

이 포스팅은 CloudNet@ 팀이 진행하는 테라폼 기초 입문 스터디에 참여하며 ‘테라폼으로 시작하는 IaC’ 책을 기준하여 정리한 글입니다. terraform_data 아무 작업도 수행하지 않는 리소스를 구현하며, 테라폼 1.4 버전이 릴리즈되면서 기존 null_resource 리소스를 대체하는 terraform_data 리소스가 추가됨. 사용자가 의도적으로 프로비저닝하는 동작을 조율해야 하는 상황이 발생할 때 사용. 주요 사용 시나리오 프로비저닝 수행 과정에서 명령어 실행 프로비저너와 함께 사용 모듈, 반복문, 데이터 소스, 로컬 변수와 함께 사용 출력을 위한 데이터 가공 요구사항 AWS EC2 인스턴스를 프로비저닝하면서 웹서비스를 실행시켜야 함 웹서비스 설정에는 노출되어야 하는 고정된 외부 IP가 ..

article thumbnail
Terraform 기본 사용 (6) - 조건문 & 함수 & 프로비저너
DevOps/Terraform 2023. 7. 17. 01:18

이 포스팅은 CloudNet@ 팀이 진행하는 테라폼 기초 입문 스터디에 참여하며 ‘테라폼으로 시작하는 IaC’ 책을 기준하여 정리한 글입니다. 조건문 3항 연산자 테라폼에서 조건식은 기본적으로 3항 연산자를 사용. [condition] ? [true] : [false] 의 형태를 가지며, condition에 해당하는 조건문이 true 일 경우 [ture]의 값을 반환, false일 경우 [false]에 해당하는 값을 반환. main.tf variable "enable_file" { default = true } resource "local_file" "foo" { count = var.enable_file ? 1 : 0 content = "foo!" filename = "${path.module}/foo..

article thumbnail
Terraform 기본 사용 (5) - 종합 실습 1
DevOps/Terraform 2023. 7. 10. 03:00

이 포스팅은 CloudNet@ 팀이 진행하는 테라폼 기초 입문 스터디에 참여하며 ‘테라폼으로 시작하는 IaC’ 책을 기준하여 정리한 글입니다. 도전과제 과제1 - Data Sources 특정 리전 내에서 사용 가능한 가용영역을 데이터 소스를 통해 가져온 목록으로 VPC 리소스 생성 예제코드 data "aws_availability_zones" "available" { state = "available" } resource "aws_subnet" "primary" { availability_zone = data.aws_availability_zones.available.names[0] # e.g. ap-northeast-2a } resource "aws_subnet" "secondary" { availab..

article thumbnail
Terraform 기본 사용 (4) - Local & Output & 반복문
DevOps/Terraform 2023. 7. 10. 02:59

이 포스팅은 CloudNet@ 팀이 진행하는 테라폼 기초 입문 스터디에 참여하며 ‘테라폼으로 시작하는 IaC’ 책을 기준하여 정리한 글입니다. Local Values 코드 내에서 사용자가 지정한 값 또는 속성 값을 가공해 참조 가능한 local (지역 값)은 외부에서 입력되지 않고, 코드 내에서만 가공되어 동작하는 값을 선언 main.tf variable "prefix" { default = "hello" } locals { name = "terraform" content = "${var.prefix} ${local.name}" my_info = { age = 20 region = "KR" } my_nums = [1, 2, 3, 4, 5] } 실행 및 확인 $ terraform init && terraf..