공부하면서/Terraform 16

[T1012] 7주차 - 워크플로 (마지막)

해당 내용은 T1012 스터디에 나온 내용과 '테라폼으로 시작하는 IaC' 책을 기준으로 정리 했습니다 워크플로(workflow)란? work + flow -> 작업 흐름으로 작업 절차를 통한 정보 또는 업무의 이동을 의미 8. 워크플로 8.1 규모에 따른 워크플로 테라폼 워크플로: write -> plan -> apply, 워크스페이스 별로 접근 권한을 관리하고 중앙에서 관리되는 실행 환경을 설계하여 규모에 맞는 워크플로 설계가 필요하다 개인 워크플로 개인이 테라폼으로 일하는 방식의 예 더보기 Write 프로비저닝 하려는 목적에 따라 테라폼 코드를 작성 개인이 작업하더라도 반복적인 사용성을 고려할것 인수에 할당되는 값을 입력 변수화 하고 반복적인 구조가 발생하는 경우 리소스 단위별로 반복문을 사용할지 ..

[T1012] 6주차 - 협업 (관리)

해당 내용은 T1012 스터디에 나온 내용과 '테라폼으로 시작하는 IaC' 책을 기준으로 정리 했습니다 * 5주차는 강사초빙의 시간이였어서 별도로 올리지 않았습니다 협업의 유형 예시 유형1 (scp, 압축, NAS 등) 자신이 작성한 코드를 수동으로 협업 대상에게 공유 인원이 늘어날수록 코드 동기화에 문제가 생긴다 -> 각자 코드에 대해 병합이 어려움! 유형2 (형상관리도구, 중앙 저장소 도입) 형상관리 시스템을 통해 여러 사용자가 동일한 코드를 공유 하여 작업 가능 -> 코드 변경 이력과 롤백도 가능 테라폼 코드와 결과물(state)이 같은 저장소에 저장 코드 수정과 테라폼 실행이후 commit & push를 안하여 state 공유가 안될수도 있음 그러기 위해서 원격 백엔드설정을 진행하여 테라폼 실행시..

[T1012] 4주차 - State & 모듈 (Module)

해당 내용은 T1012 스터디에 나온 내용과 '테라폼으로 시작하는 IaC' 책을 기준으로 정리 했습니다 Module? Modules Overview - Configuration Language | Terraform | HashiCorp Developer Modules are containers for multiple resources that are used together in a configuration. Find resources for using, developing, and publishing modules. developer.hashicorp.com 모듈이란걸 몰랐을때... 하나의 디렉터리에 무수한 .tf파일만 생성해놓고 사용했는데 이렇게 리소스가 늘어남에 따라 원하는 리소스를 검색하고 수정하..

[T1012] 4주차 - State & 모듈 (State)

해당 내용은 T1012 스터디에 나온 내용과 '테라폼으로 시작하는 IaC' 책을 기준으로 정리 했습니다 State? state에는 작업자가 정의한 코드와 실제 반영된 프로비저닝 결과를 저장 state 정보를 가지고 리소스 생성, 수정, 삭제에 대한 동작 판단 작업을 수행함 개인적으로 작업시 로컬 환경에 json 형태로 terraform.tfstate 파일이 저장된다 팀단위로 작업시 공동 관리를 위해 원격 저장소에 저장해서 공유 (참고문서: remote) 5.1 State의 목적과 의미 State | Terraform | HashiCorp Developer An introduction to state, information that Terraform uses to map resources to a conf..

[T1012] 3주차 - 테라폼 기본 사용 3/3 (프로바이더 구성)

해당 내용은 T1012 스터디에 나온 내용과 '테라폼으로 시작하는 IaC' 책을 기준으로 정리 했습니다 프로바이더란? 프로바이더가 제공하는 API를 호출해 상호작용을 한다. 여기서 테라폼이 대상과의 상호작용을 할 수 있도록 하는 것이 '프로바이더' aws를 예로 들면 우리는 aws-cli를 사용하거나 aws-sdk등을 사용하여 aws 서비스를 조작할수 있는데 이때 awscli 같은, aws-sdk 같이 terraform 에서 특정 대상과의 중간다리 해주는 역할이 프로바이더 라고 생각한다 악분의 블로그에 테라폼 동작원리에 대한 설명이 쉽게 정리되어 있다 테라폼으로 EKS만들기 프로젝트 3-2편 - 테라폼 동작원리 이 글은 테라폼이 어떻게 동작하는지 설명합니다. 3편에서 실행했던 hello world예제를 ..

[T1012] 3주차 - 테라폼 기본 사용 3/3 (terraform_data, moved, 환경변수)

해당 내용은 T1012 스터디에 나온 내용과 '테라폼으로 시작하는 IaC' 책을 기준으로 정리 했습니다 3.13 null_resource와 terraform_data 테라폼 프로비저닝 동작을 설계하면서 사용자가 의도적으로 프로비저닝하는 동작을 조율해야 하는 상황이 발생하는데, 프로바이더가 제공하는 리소스 수명주기 관리만으로는 이를 해결하기 어렵기 때문에 해당 리소스가 필요하다 1.3 까지는 null_resource 에 대한 소개가 1.4 부터는 terraform_data 에 대한 소개로 변경되었음을 확인 할수 있습니다 하지만 1.4 이후 소개가 바뀌었을뿐 null_resource 사용 가능 null_resource 대체로 terraform_data에 대한 사용 방법 예제 도 따로 있습니다 null_res..

[T1012] 3주차 - 테라폼 기본 사용 3/3 (조건문,함수,프로비저너)

해당 내용은 T1012 스터디에 나온 내용과 '테라폼으로 시작하는 IaC' 책을 기준으로 정리 했습니다 3.10 조건문 테라폼에서의 조건식은 3항 연산자 형태를 갖는다. 조건은 true 또는 false 로 확인되는 모든 표현식을 사용할 수 있다 Conditional Expressions - Configuration Language | Terraform | HashiCorp Developer Conditional expressions select one of two values. You can use them to define defaults to replace invalid values. developer.hashicorp.com 일반적으로 비교, 논리 연산자를 사용해 조건을 확인 조건식은 "?" 기호를..

[T1012] 2주차 - 테라폼 기본 사용 2/3 (반복문 + 실습)

해당 내용은 T1012 스터디에 나온 내용과 '테라폼으로 시작하는 IaC' 책을 기준으로 정리 했습니다 3.9 반복문 list 형태의 값 목록이나 Key-Value 형태의 문자열 집합인 데이터가 있는 경우 동일한 내용에 대해 테라폼 구성 정의를 반복적으로 하지 않고 관리할 수 있다. count 반복문, 정수 값만큼 리소스나 모듈을 생성 리소스 또는 모듈 블록에 count 값이 정수인 인수가 포함된 경우 선언된 정수 값만큼 리소스나 모듈을 생성하게 된다. count에서 생성되는 참조값은 count.index이며, 반복하는 경우 0부터 1씩 증가해 인덱스가 부여된다. # 실습 환경 구성 mkdir 3.9 && cd 3.9 # main.tf 생성 resource "local_file" "abc" { count..

[T1012] 2주차 - 테라폼 기본 사용 2/3 (출력 output)

해당 내용은 T1012 스터디에 나온 내용과 '테라폼으로 시작하는 IaC' 책을 기준으로 정리 했습니다 3.8 출력 output 출력 값은 주로 테라폼 코드의 프로비저닝 수행 후의 결과 속성 값을 확인하는 용도로 사용된다. 또한 프로그래밍 언어에서 코드 내 요소 간에 제한된 노출을 지원하듯 테라폼 모듈 간, 워크스페이스 간 데이터 접근 요소로도 활용할 수 있다. 루트 모듈에서 사용자가 확인하고자 하는 특정 속성 출력 자식 모듈의 특정 값을 정의하고 루트 모듈에서 결과를 참조 서로 다른 루트 모듈의 결과를 원격으로 읽기 위한 접근 요소 output 선언 모듈 내에서 생성되는 속성 값들은 outout 블록에 정의된다 output "instance_ip_addr" { value = "http://${aws_i..

[T1012] 2주차 - 테라폼 기본 사용 2/3 (local 지역 값 + 실습)

해당 내용은 T1012 스터디에 나온 내용과 '테라폼으로 시작하는 IaC' 책을 기준으로 정리 했습니다 3.7 local 지역 값 코드 내에서 사용자가 지정한 값 또는 속성 값을 가공해 참조 가능한 local (지역 값)은 외부에서 입력되지 않고, 코드 내에서만 가공되어 동작 하는 값을 선언한다. local은 입력 변수와 달리 선언된 모듈 내에서만 접근 가능 변수처럼 실행시 입력받을수 없음! local은 사용자가 테라폼 코드를 구현할때 값이나 표현식을 반복적으로 사용할수 있는 편의를 제공 단점으로는 무차별하게 사용할경우 값에 대한 추적이 어려워짐 (유지관리 측면에서 부담) local 선언 로컬이 선언되는 블록은 locals로 시작한다. 선언되는 인수에 표현되는 값은 상수만이 아닌 리소스의 속성, 변수의 ..