DevOps/Terraform 8

Terraform Provisioner와 Userdata

Terraform Provisioner → terraform에서 제공해주는 syntex라고 보면 된다. 이는 3개의 문법이 존재한다. file provisoner 이는 로컬에서 remote를 통해 파일을 복사하는 행위를 말하는 것이다. local_exec provisioner 로컬에서 명령을 수행하는 문법이다. remote_exec provisioner remote 환경에서 명령을 수행하는 문법이다. 예시 - Userdata ################################################### # Userdata ################################################### resource "aws_instance" "userdata" { ami = ..

DevOps/Terraform 2023.08.05

Terraform AWS Provider

AWS Provider를 사용하기 전에 해야할 셋팅 #터미널에서 이 명령어를 작성했을 때 에러가 난다면 아래의 셋팅 과정을 거치고 시작해야한다. aws sts get-caller-identity MacOS brew install awscli AWS CLI 자격 증명 : AWS 액세스 키 발급 위의 두 페이지를 차례 대로 접속 합니다. 액세스 키를 만들게 된다면, 아래와 같이 액세스 키에 대한 정보가 뜨게 됩니다. AWS CLI 자격 증명 설정 AWS CLI 자격 증명 설정 우선 순위 CLI 명령어 옵션 환경 변수 CLI 자격 증명 파일 - ~/.aws/credentials CLI 설정 파일 - ~/.aws/config 컨테이너 자격 증명 (ECS의 경우) 인스턴스 프로파일 자격 증명(EC2의 경우) 하지..

DevOps/Terraform 2023.08.05

Terraform Cloud

Execution Mode Remote 테라폼 클라우드에서 자제적으로 관리한다. terraform runner를 활용해서 apply를 진행하다보니, 인프라에 apply에 대한 ip를 확보한 후에 그 ip로 인프라를 돌아가게끔 하는 작업이 필요하다. 조금 번거롭기도 하기 때문에 굳이 추천하진 않는다. Local 작업자의 pc에서 apply를 진행하는 것 terraform 클라우드에서는 state 만을 저장하는 방식 terraform module 작성 방법 terraform 모듈은 이런식으로 작성하면 된다. root module인 main.tf, account 폴더 안에 존재하는 terraform 모듈인 나머지 모듈들이 child가 되어서 root 모듈을 Terraform Remote State Terraf..

DevOps/Terraform 2023.08.05

TerraForm WorkSpace && Terraform Local Provider

Terraform WorkSpace 개념 인프라를 정의하기 위한 Terraform 하나의 프로젝트 단위 Terraform의 기능 - 변경 사항 추적 Terraform은 인프라를 코드로 관리할 때 변경 사항을 추적하는 기능을 제공한다. 변경사항을 알기 위해서 상태 관리라는 것을 한다. → .terraform.tfstate → workspace 단위로 상태를 관리한다. Terraform 실습 Terraform을 실습할 프로젝트 파일로 이동 후에 Terraform provider에서 Local을 누른 후 이 Provider를 이용할 것입니다. Terraform provider에서 terraform{} 에 대한 구문은 version 에 대한 명시가 있습니다. 하지만, 이 명시는 굳이 사용하지 않아도 됩니다(명시..

DevOps/Terraform 2023.08.05

Terraform State

Terraform Backend 상태 관리를 위해서는 그 상태관리를 한 파일들을 보관해야하는 곳이 있어야한다. 이를 Terraform에서는 Backend라고 칭한다. 종류에 따라서 Local서버에서 저장하는 방식과 그 외에 저장하는 방식이 나뉘어지며, 종류는 다양하게 있다 종류 Local Backend Remote Backend(Terraform Cloud) → 최근에 나왔지만, 기능이 파워풀 하다 AWS S3 Backend(with/without DynamoDB) → DynamoDB가 있을 땐 Locking 기능이 있다(없으면 없다) kubernetes Backend를 고려를 할 때 가장 중요한 고려 대상은 Locking이라는 기술이 들어가있냐 아니냐 이다. Locking? 테라폼 상태 파일을 원격으로..

DevOps/Terraform 2023.08.05

HCL 문법

공식 Langauge documentation Terraform by HashiCorp 기초 HCL 문법 # 기본 사용 방법 "" "" { # Block body = # Argument } # 예제 resource "aws_vpc" "main" { cidr_block = var.base_cidr_block } Terraform에 파일 구조 파일 확장자 기본적으로 .tf 는 HCL 문법을 사용합니다. 하지만, 사용자의 편의상 JSON이 편하다고 느끼면, .tf.json 이라고 확장자 명을 변경하면 된다. ⇒ HCL문법보다 장점이 많은 방식은 아니기 때문에 그렇게 추천 하진 않는 방식이다. Terraform은 현 디렉토리에 존재하는 .tf 파일만 파싱하고 하위 디렉토리에 존재하는 .tf 파일은 파징 하지 않..

DevOps/Terraform 2023.08.05

Terraform && Packer 설치

TerraForm 설치 Downloads | Terraform by HashiCorp 우선 TerraForm 설치하려면 위의 사이트에 접속하여서 TerraForm을 설치한다. MacOS 기준 brew tap hashicorp/tap brew install hashicorp/tap/terraform 성공적으로 terraform이 설치가 된 것을 확인하려면 terraform version 만약 버전이 성공적이라면, 정상적으로 설치가 완료 된 것이다. 자동 완성 기능 추가 Terraform에 자동 완성 기능을 추가하기 위해서는 Enable tab completion 탭을 가면 된다 저는 Zsh 를 이용하기 때문에 Zsh 기준으로 작성하겠습니다. touch ~/.zshrc terraform -install-au..

DevOps/Terraform 2023.08.05

Terraform 개요

TerraForm TerraForm은 Write, Plan, Apply에 대한 개념을 강조하고 있다. Write TerraForm을 만든 HashiCorp는 다양한 인프라 언어들을 만들었습니다. 그 중에서 YAML 언어와 비슷한 HashiCorp Configuration Language(HCL) 을 통해서 인프라 코드를 작성할 수 있다. ← AWS EC2 서버를 정의하는 HCL이다. Plan plan을 통해서 해당 인프라 코드가 어떤 변화를 가져올 지 확인이 가능하다. 맨 하단에 있는 Plan 결과가 가장 중요하다는 것을 알 수 있습니다. Plan : 1 to add, 0 to change, 0 to destory 라고 하단에 적혀 있는데 이는 인프라 리소스가 1개 추가 될 예정이고, 변경점은 없고, 삭..

DevOps/Terraform 2023.08.05