이 포스팅은 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 입력
'DevOps > Terraform' 카테고리의 다른 글
Terraform 기본 사용 (5) - 종합 실습 1 (0) | 2023.07.10 |
---|---|
Terraform 기본 사용 (4) - Local & Output & 반복문 (2) | 2023.07.10 |
Terraform 기본 사용 (3) - Data Sources & Variable (0) | 2023.07.10 |
Terraform 기본 사용 (2) (0) | 2023.07.09 |
Terraform 기본 사용 (1) (0) | 2023.07.09 |