0. IaC(Infra as a Code)의 사용 이유 사람은 한정적인데 운영해야 할 서버가 많아짐 → 반복되는 일이 늘어남 버전 관리 가능 리뷰 및 테스트 가능 휴먼 에러 감소 테라폼 사용에 대한 공부와 기존 인프라가 이미 있을 경우 통합시키는 수고 필요 1. 기본 동작 방식 1.1 Init: 실행을 위한 준비 작업(초기 setting) 테라폼 상태 파일 확인 provider 플러그인 다운로드 모듈 다운로드 1.2 apply: 작성된 코드를 기반으로 인프라 구성 테라폼이 자동으로 의존성(dependency)을 구성하고 병렬로 인프라를 구성한다. 수동으로 의존성을 걸 수 있지만 테라폼이 의존성을 구성하는 과정에서 꼬일 수 있어 사용하지 않는 것을 권장 어떤 리소스가 생성/수정/삭제 되는지 확인하는 pla..
terraform
테라폼으로 Bastion Server를 생성하겠습니다. 서버 생성 자체는 어렵지 않았으나 모듈화 할 때 생각할 것이 많아보입니다. 윈도우와 맥을 모두 사용해서 로컬호스트의 이름이 섞여있을 수 있습니다. 서버 접속을 위한 키 생성 hh@DESKTOP-4UIU15G:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hh/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hh/.ssh/id_rs..
구성에 맞추어 아래 네트워크 구성을 작성하겠습니다. VPC Public Subnet 1, 2 Private Subnet 1, 2, 3, 4, 5 NAT Gateway Internet Gateway Route Table 환경 세팅 테라폼 버전입니다. aws configure 되어있는 상태입니다. 코드 작성 기본 설정 terraform { required_providers { aws = { source = "hashicorp/aws" version = "~>4.0" } } } provider "aws" { region = "ap-northeast-2" default_tags { tags = { Name = "terraform-frog" } } } aws 버전과 태그를 지정하지 않았을 때 자동으로 설정될 기본..
Terraform 스터디 프로젝트로 이전에 AWS 3Tier를 구축했던 걸 Terraform을 활용해 다시 구축해 보기로 했습니다. 전체 아키텍쳐 구상(진행하며 변경 사항 추가할 예정)입니다. 주제 Terraform을 이용한 AWS 3-Tier 구성 중점 과제 인스턴스 모듈화 및 쉘 스크립트 작성 내용 WEB-WAS-DB 구조 인스턴스 모듈화 컴파일 설치로 진행 Terraform 코드를 Git에 push하면 GitAction을 이용해 AWS에 프로비저닝 되는 방식 수동으로 관리하는 부분 없이 Terraform으로 프로비저닝 했을 때 DB에서 불러온 내용을 웹에서 확인할 수 있어야 함 state 파일은 Terraform Cloud 사용 생각해 볼 내용 1. prod/dev을 어떻게 구분해서 쓸지? 일단 d..
의도 [테라폼으로 시작하는 IaC] 책의 246페이지 실습에 대한 내용이다. 한 가지 변수 값만 다른 instance를 반복문을 사용해 3개 생성해야 한다. 모듈을 쓰자니 너무 복잡하고 count를 쓰자니 instance 참조 방식을 인덱스로 하는게 맘에 안 들어서 for_each를 택했다. # aws_instance.hashicat["kitten"] will be created + resource "aws_instance" "hashicat" { 이런 식으로 aws_instance.hashicat["kitten"] 형태로 참조하고 싶었다. count를 사용하면 aws_instance.hashicat[0] 의 형태로 참조해야 한다. 결과 코드 locals { map_placeholder = { "kitt..
AWS AK/SK를 EXPORT로 사용하거나, 파일에 저장하거나, 코드에 직접 넣기엔 보안적으로 너무나 안 좋다고 생각한다. 그래서 찾은 방법이 AWS의 profile을 사용하는 것이다. hh@DESKTOP-4UIU15G:~$ aws configure --profile hh AWS Access Key ID [None]: ****** AWS Secret Access Key [None]: ****** Default region name [None]: ap-northeast-2 Default output format [None]: hh@DESKTOP-4UIU15G:~$ aws s3 ls --profile hh aws configure --profile [profile_name] 명령으로 profile을 등록한..
윈도우에 테라폼을 직접 설치하면 설정이 조금 불편해져서 WSL에 설치하려고 한다. 모든 사항은 테라폼 공식 문서를 따라간다. https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli Install Terraform | Terraform | HashiCorp Developer Install Terraform on Mac, Linux, or Windows by downloading the binary or using a package manager (Homebrew or Chocolatey). Then create a Docker container locally by following a quick-start tutoria..