해당 내용은 cloudNet@ 팀의 가시다 님이 진행하는 테라폼 스터디 T101 4기에서 다룬 내용과 "테라폼으로 시작하는 IaC" (한빛미디어) 저서 내용을 정리한 것입니다.
1. Terraform 실행 환경 구성 (macOS)
- brew 를 사용하여 terraform 설치
brew install hashicorp/tap/terraform
terraform --version (잘 설치됐는지 확인)
- IDE 설정
Visual Studio Code(VSCode) mac 설치 및 Terraform 관련 Extension (HashiCorp에서 릴리즈한 HashiCorp HCL) 설치
2. 실습 (EC2 한대 배포하기)
- AWS CLI 설치 및 자격증명
brew install awscli
aws configure
https://www.youtube.com/watch?v=9nBq6PxDvp4
위 강의에서 생성한 Free Tier 계정의 Access Key 와 Secret Access Key 입력
- 작업 디렉토리 생성 및 이동
mkdir workspace
cd workspace
- Amazon linux 2 최신 ami ID 찾기
aws ec2 describe-images --owners amazon --filters "Name=name,Values=amzn2-ami-hvm-2.0.*-x86_64-gp2" "Name=state,Values=available" --query 'Images|sort_by(@, &CreationDate)[-1].[ImageId]' --output text
ami-0ebb3f23647161078
export AL2ID=ami-0ebb3f23647161078
- 코드파일 작성
- provider - Terraform 으로 정의할 Infrastructure의 Provider
- resource - 실제로 정의할 인프라 자원의 속성을 정의
cat <<EOT > main.tf
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_instance" "example" {
ami = "$AL2ID"
instance_type = "t2.micro"
}
EOT
VSCode 에서 main.tf 파일을 만들어서 <<EOT > EOT 사이에 있는 내용을 직접 입력해도 된다.
- 코드 실행
terraform init
ls -al
tree .terraform
# plan 확인
terraform plan
# apply 실행
terraform apply
Enter a value: yes 입력
# ec2 생성 확인 : aws 웹 관리 콘솔에서도 확인 - 서울 리전 선택
export AWS_PAGER=""
aws ec2 describe-instances --output table
- EC2 태그 정보 수정
위 파일 내용 수정, VSCode 에서 직접 편집해도 된다.
cat <<EOT > main.tf
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_instance" "example" {
ami = "$AL2ID"
instance_type = "t2.micro"
tags = {
Name = "t101-study"
}
}
EOT
- 배포 실행
# plan 실행 시 아래와 같은 정보가 출력
terraform plan
# aws_instance.example will be updated in-place
~ resource "aws_instance" "example" {
id = "ami-0a0064415cdedc552"
~ tags = {
+ "Name" = "t101-study"
}
~ tags_all = {
+ "Name" = "t101-study"
}
# (29 unchanged attributes hidden)
# (7 unchanged blocks hidden)
}
Plan: 0 to add, 1 to change, 0 to destroy.
# apply 실행
terraform apply
Enter a value: yes 입력
- 배포한 EC2 삭제
# 리소스 삭제
terraform destroy
Enter a value: yes 입력
# 또는
terraform destroy -auto-approve
'DevOps' 카테고리의 다른 글
[T1014-이론] 3장 기본 사용법 (4) (0) | 2024.06.22 |
---|---|
[T1014-이론] 3장 기본 사용법 (3) (0) | 2024.06.20 |
[T1014-이론] 3장 기본 사용법 (2) (0) | 2024.06.19 |
[T1014-이론] 3장 기본 사용법 (1) (1) | 2024.06.16 |
[T1014-이론] 1장 IaC와 테라폼 (1) | 2024.06.13 |