DevOps 34

AWS VPC 기초

AWS 기초와 VPC AWS VPC? Amazon Virtual Private Cloud(Amazon VPC)를 이용하게 되면, 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있다. 이 가상 네트워크로 AWS 리소스를 시작할 수 있다. 이 가상 네트워크는 AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센테에서 운영하는 기존 네트워크와 매우 유사하다. VPC 의 특징 계정 생성 시 default VPC를 만들어준다 EC2, RDS, S3 등의 서비스 활용 가능 서브넷 구성 보안 설정(IP block, inbound outbound 설정) VPC Peering(VPC 간의 연결) IP 대역 지정 가능 VPC는 하나의 Region 에만 속할 수 있다(다른 Region으로..

DevOps/AWS 2023.08.05

Packer HCL 문법

개요 Packer by HashiCorp 위 사이트를 들어가게 되면, 기본적으로 HCL은 block 단위로 코드가 돌아간다. 그리고, Terraform과 차이점이 있다면, 사용하는 문법에 대한 차이점이다. 위 사이트에서는 terraform과 유사한 언어로써는 locals, variable, packer, data가 있다. 이중에서 packer는 terraform에서 terraform문법에 속한다. 옆의 build 아래에 있는 4가지의 요소인 source, provisioner, post-processor, post-processors 도 매우 중요한 역할을 한다. local # locals.pkr.hcl locals { # locals can be bare values like: wee = local.b..

DevOps/Packer 2023.08.05

Packer 개요

Packer 공식 사이트 Packer by HashiCorp Packer는 machine 이미지를 뜻한다 → AWS, Docker 모두 이미지 라는 파일이 필요하다. 이에 Packer는 이를 통합적으로 관리할 수 있게끔 설정해주는 것을 의미한다. 왜 IMAGE를 사용하는가? 현재까지 사용해보았듯이, Terraform은 초반에 환경을 셋팅하는데 매우 오랜 시간이 걸린다. 이를 통념적으로는 Warm Up이라고 부른다. 이 Warm Up은 보통 EC2머신이 만들어지고 난 이후에나 작동 되기 때문에 더 오래 걸리는 점도 있다. 하지만, AIM 이미지는 이미 초기에 셋팅이 완료된 상태로 구워져있기 때문에, 이런 웜업 시간이 없다고 봐도 무방하다. 현업에서는 이 Docs페이지를 참고하면서 문제를 풀어나아가면 된다...

DevOps/Packer 2023.08.05

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