์ด์ ํฌ์คํ
์์ Terraform์ local์ ์ค์นํ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด AWS์ ์ฐ๋์ ํด์ผํฉ๋๋ค.
์ด ์๊ฒฉ ์ฆ๋ช ์ AWS ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ ๋ฐ ํ์ํ ์ก์ธ์ค ํค์ ๋น๋ฐ ํค๋ฅผ ํฌํจํฉ๋๋ค.
๋จผ์ AWS CLI๋ฅผ ์ค์นํ๊ณ , ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ์๊ฒฉ ์ฆ๋ช ์ ์ค์นํฉ๋๋ค.
aws configure
์ด ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด AWS Access Key ID, Secret Access Key, ๊ธฐ๋ณธ ๋ฆฌ์ ๋ฑ์ ์ ๋ ฅํ๋ผ๋ ๋ฉ์์ง๊ฐ ๋น๋๋ค. ์๋์ ๊ฐ์ด ์ ๋ ฅํฉ๋๋ค.
### ์์ ###
AWS Access Key ID [None]: YOUR_AWS_ACCESS_KEY
AWS Secret Access Key [None]: YOUR_AWS_SECRET_KEY
Default region name [None]: us-west-2 # ์ฌ์ฉํ๋ ค๋ ๋ฆฌ์ ์ ํ
Default output format [None]: json
์ฌ๊ธฐ์ KEY๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค. AWS ์ฝ์ -> ๋ณด์ ์๊ฒฉ์ฆ๋ช (์ฐ์ธก ์๋จ ํ๋กํ) -> Access Keys ์น์ -> "Create access key" ๋ฒํผ ํด๋ฆญ -> AWS CLI ์ฐ๋์ฉ
- ํค๋ฅผ ์ฒ์ ์์ฑํ ๋๋ง Secret Access Key๋ฅผ ํ์ธ ํ ์ ์์ต๋๋ค
- ๋ฐ๋์ ๋ฉ๋ชจํ๊ฑฐ๋
.csv
๋ก ๋ค์ด๋ก๋ ๋ฐ์ผ์ธ์- ๋ฃจํธ ์ฌ์ฉ์ ๋ณด๋ค๋ ๊ถํ์ด ์ ํ์ ์ธ IAM์ ๊ถ์ฅํฉ๋๋ค(๋น์ฉ ํญํ ๋ฐฉ์ง)
EC2์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํ Terraform ์ค์ ํ์ผ์ ์์ฑํด์ผ ํฉ๋๋ค.
์ ๋ main.tf
๋ผ๋ ์ด๋ฆ์ ํ์ผ์ ๋ง๋ค์ด์ ์ด ํ์ผ์ AWS EC2 ์ธ์คํด์ค๋ฅผ ๋ฐฐํฌํ๋ ์ค์ ์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.
๋ค์์ main.tf
ํ์ผ์ ์์์
๋๋ค. ์ด ํ์ผ์์๋ AWS ์ ๊ณต์ ์ค์ ๊ณผ ํจ๊ป EC2 ์ธ์คํด์ค ์์ฑํ๋ ๋ฆฌ์์ค๋ฅผ ์ ์ํฉ๋๋ค.
# Terraform์ AWS ์ ๊ณต์ ์ค์
provider "aws" {
region = "us-west-2" #์ํ๋ ๋ฆฌ์ ์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ
}
# EC2 ์ธ์คํด์ค๋ฅผ ์ํ ๋ฆฌ์์ค ์ค์
resource "aws_instance" "example" {
ami = "ami-0892d3c7ee96c0bf7" # ์ฌ์ฉํ AMI ID๋ฅผ ์ ํํ์ธ์
instance_type = "t2.micro" # EC2 ์ธ์คํด์ค ์ ํ
tags = {
Name = "myEC2Instance"
}
# EC2์ ๋ณด์ ๊ทธ๋ฃน ์ค์ (๊ธฐ๋ณธ์ ์ธ SSH ํฌํธ 22 ์ด๊ธฐ)
security_groups = ["default"]
# ํค ํ์ด ์ค์ (EC2์ ์ ๊ทผํ๊ธฐ ์ํ SSH ํค ํ์)
key_name = [์์ ์ ํค ํ์ด ์ด๋ฆ]
}
์ด์ EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด Terraform์ ์คํํ ์ค๋น๊ฐ ๋์์ต๋๋ค.
์๋ ๋จ๊ณ์ ๋ฐ๋ผ ๋ช
๋ น์ด๋ฅผ ์คํํด ๋ด
์๋ค.
๋จผ์ Terraform ์์ ์ ์์ํ๊ธฐ ์ ์ ์ด๊ธฐํ๋ฅผ ํด์ผํฉ๋๋ค.
terraform init
terraform plan
๋ช
๋ น์ด๋ฅผ ํตํด ์์ฑํ ๋ฆฌ์์ค์ ๋ํ ๊ณํ์ ํ์ธํฉ๋๋ค.
์ด ๋ช
๋ น์ด๋ ์ค์ ๋ก ์ด๋ค ๋ฆฌ์์ค๋ฅผ ๋ง๋ค์ง ์๋ฎฌ๋ ์ด์
ํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.
terraform plan
๋ฆฌ์์ค ์์ฑ ๊ณํ์ด ๊ด์ฐฎ๋ค๋ฉด, ์๋ ๋ช
๋ น์ด๋ก ์ค์ ๋ก EC2 ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค. ๋ช
๋ น์ด ์คํํ "yes"
๋ฅผ ์
๋ ฅํ์ฌ EC2 ์ธ์คํด์ค๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
terraform apply
์ฑ๊ณต !
terraform destroy
์ฒ์์๋ "์ฝ๋ ํ ์ค๋ง ์ ๋ ฅํ๋ฉด EC2๊ฐ ๋ง๋ค์ด์ง๋ค"๋ ๋ง์ ๋ค์์ง๋ง, ์ค์ ๋ก๋ ํฌ๊ณ ์์ ๋ฌธ๋ฒ ์ค๋ฅ๋ค์ด ์์ฃผ ๋ฐ์ํ์ต๋๋ค.
๊ฐ๋จํ ์ค์ต ์ฉ๋๋ก๋ ์๋์ผ๋ก EC2๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋ ๋น ๋ฅผ ์๋ ์์ต๋๋ค. ํ์ง๋ง ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์์ฑํ๊ฑฐ๋, ์ธํ๋ผ๋ฅผ ์ผ๊ด์ฑ ์๊ฒ ๊ด๋ฆฌํ๊ณ ์ ํ๋ค๋ฉด Terraform์ ํ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์ฒด๊ณ์ ์ด๊ณ ํ์ฅ์ฑ ์๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋๊ผ์ต๋๋ค.
main.tf
์์ฑ (HCL ์ธ์ด๋ก EC2 ์ธ์คํด์ค๋ฅผ ์ ์)terraform init
โ plan
โ apply
โ destroy
๋ก ์ธํ๋ผ๋ฅผ ์์ฑํ๊ณ ์ ๊ฑฐ