DDetB.Log
article thumbnail
이 포스팅은 CloudNet@ 팀이 진행하는 테라폼 기초 입문 스터디에 참여하며 ‘테라폼으로 시작하는 IaC’ 책을 기준하여 정리한 글입니다.

IaC & 테라폼

코드형 인프라(IaC; Infrastructure as Code)는 영문 그대로 '코드로서의 인프라'이며, 코드로 대상을 관리한다. 테라폼은 프로비저닝을 지원하는 도구로서, 실제 서비스가 실행되기 위한 인프라를 다지는 역할을 수행한다. terraform apply와 같이 명령으로 구현된 동작으로 만들어진 코드를 실행하고 배포하는 방식을 취한다. 테라폼 단독으로는 다양한 인프라와 서비스를 프로비저닝 하는 것은 불가능하며, 다양한 프로바이더와 조합해 다중 클라우드와 하이브리드 인프라를 지원한다.

 

설치 & 환경 구성

윈도우 PC에서 VSCode 설치 후 우분투 서버로 원격접속하여 실습을 진행했다.

Ubuntu

wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform

설치 확인

$ terraform version
Terraform v1.5.2
on linux_amd64

 

 

VSCode Extentions

HashiCorp HCL - HCL 문법 하이라이팅 익스텐션

HashiCorp Terraform - 테라폼 문법 하이라이팅 & 작성을 도와주는 익스텐션. Ctrl+space 입력 시 aurgument 힌트를 얻을 수 있다.

 

AWS CLI

AWS CLI 설치(Linux)

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

설치 확인

$ aws --version
aws-cli/2.12.6 Python/3.11.4 Linux/5.4.0-152-generic exe/x86_64.ubuntu.20 prompt/off

aws cli 테스트

실행 불가 -> 자격 증명 필요

$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".

자격 증명

$ aws configure

or

# 환경 변수로 자격증명(서울 리전)
export AWS_ACCESS_KEY_ID=[AWS_ACCESS_KEY_ID]
export AWS_SECRET_ACCESS_KEY=[AWS_SECRET_ACCESS_KEY]
export AWS_DEFAULT_REGION=ap-northeast-2

# 페이저 사용 비활성화
export AWS_PAGER=""

Etc.

실습에 편리하게 사용할 수 있는 툴 설치

$ sudo apt install -y tree jq

 

배포 테스트

Amazon Linux

Amazon Linux 2 최신 ami id 찾기

aws ec2 describe-images --owners self amazon --query 'Images[*].[ImageId]' --output text

EC2 1대 배포

EC2 생성 모니터링 (별도의 터미널에서)

export AWS_PAGER=""
while true; do aws ec2 describe-instances --query "Reservations[*].Instances[*].{PublicIPAdd:PublicIpAddress,InstanceName:Tags[?Key=='Name']|[0].Value,Status:State.Name}" --filters Name=instance-state-name,Values=running --output text ; echo "------------------------------" ; sleep 1; done

main.tf 생성

provider "aws" {
  region = "ap-northeast-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0a0064415cdedc552"
  instance_type = "t2.micro"
}

실행

# 초기화
terraform init

# plan 확인
terraform plan

# apply 실행
terraform apply
 Enter a value: yes 입력
profile

DDetB.Log

@DDetMok

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!