๐ป Lab - Setup and Basic Usage
๐ป Lab - Setup and Basic Usage
๐ก Moving in - Explore Your Workspace
@slidestart blood
Terraform ๋ช ๋ น์ค ๋๊ตฌ๋ MacOS, FreeBSD, OpenBSD, Windows, Solaris ๋ฐ Linux์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Terraform ์ธ์ด๋ ์ฌ๋๊ณผ ๊ธฐ๊ณ๊ฐ ์ฝ์ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค.
๋๋ถ๋ถ์ ์ต์ ์ฝ๋ ํธ์ง๊ธฐ๋ Terraform ๊ตฌ๋ฌธ ๊ฐ์กฐ ํ์๋ฅผ ์ง์ํฉ๋๋ค.
@slideend
ํ ๋ผํผ ์ค์น ๋ฐ ๊ตฌ์ฑ
ํ ๋ผํผ ๋ค์ด๋ก๋ ์ฌ์ดํธ https://www.terraform.io/downloads.html ๋ก ์ ์ํ์ฌ, ์์ ์ ํ๊ฒฝ์ ๋ง๋ Terraform์ ๋ค์ด๋ก๋ ๋ฐ์ต๋๋ค.
์์ถ์ ํด์ ํ์ฌ terraform ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ํ์ธํฉ๋๋ค.
- Linux/Mac :
terraform
- Windows :
terraform.exe
- ํ์ผ์ ์ ์ ํ ์์น์ ๋ฃ๊ณ PATH๋ก ์ง์ ํฉ๋๋ค.
mkdir ~/hashicorp/bin
mv terraform ~/hashicorp/bin
cd ~/hashicorp/bin
echo $(pwd) >> ~/.bash_profile
source ~/.bash_profile
mkdir ~/hashicorp/bin
mv terraform ~/hashicorp/bin
cd ~/hashicorp/bin
echo $(pwd) >> ~/.zshrc
source ~/.zshrc
ํธ์ง๊ธฐ ๊ตฌ์ฑ
VSCode ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ ์ค๋น๊ฐ ๋์๋ค๋ฉด, ์ฝ๋์ ์์ธ์ฑ์ ์ํด extension์ ์ค์น ํฉ๋๋ค.
- ์ข์ธก ์ฌ์ด๋ ๋ฉ๋ด์์ Extentions ๋ฅผ ํด๋ฆญํ์ฌ
Terraform
์ ๊ฒ์ํฉ๋๋ค. HashiCorp Terraform
์ ์ค์นํฉ๋๋ค.
- ์ค์น๊ฐ ์๋ฃ๋๋ฉด ์ฝ๋์ ์์ธ์ฑ์ด ํฅ์๋จ์ ํ์ดํ ์ ์์ต๋๋ค.
- ์ด ์ธ์๋ ์๋ง์ ํ์ฅ ๋ชจ๋๋ก ์์ฐ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ค์ต์ ์ํ ์ฝ๋ ๋ฐ๊ธฐ
์ด ์ค์ต์์๋ Terraform์ ์คํํ๊ธฐ ์ํ IDE ์ค์ ๊ณผ Terraform CLI๋ฅผ ์ฌ์ฉํ๊ณ , NCP๋ฅผ ์ํ ๊ธฐ๋ณธ ๊ตฌ์ฑ์ ์ํํฉ๋๋ค.
์ค์ต์์ ์ฌ์ฉํ ์ฝ๋๋ github์์ ๋ฐ์ต๋๋ค.
๋งํฌ : https://github.com/ncp-hc/workshop-oss
git ์ด ์ค์น๋์ด์๋ ๊ฒฝ์ฐ
git clone
์ ํตํด ์ฝ๋๋ฅผ ๋ฐ์ต๋๋ค.$ git clone https://github.com/ncp-hc/workshop-oss.git
Download๋ง์ ์ํ๋ ๊ฒฝ์ฐ ์๋
Download ZIP
์ ์ ํํฉ๋๋ค.
ํธ์ง๊ธฐ์์ ์ด๊ธฐ
- VSCode๋ฅผ ์คํํ๊ณ File(ํ์ผ) ๋ฉ๋ด์์
Open Folder...
๋ฅผ ํด๋ฆญํฉ๋๋ค. - ์์ ๋ฐ์ ๋๋ ํ ๋ฆฌ๋ด์
lab01
์ ์ด์ด์ค๋๋ค.
๐ Getting to Know Terraform
@slidestart blood
Terraform ์คํ ์์ค๋ ๋ฉํฑ ๋๋ ๊ฐ์ ์ํฌ์คํ ์ด์ ์์ ๋ค์ด๋ก๋ํ์ฌ ์คํํ ์ ์๋ ๋ช ๋ น์ค ์์ฉ ํ๋ก๊ทธ๋จ์ ๋๋ค.
Go๋ก ์์ฑ๋์์ผ๋ฉฐ macOS, Linux ๋๋ Windows์์ ์คํ๋ฉ๋๋ค.
https://www.terraform.io/downloads.html ์์ ํญ์ ์ต์ ๋ฒ์ ์ Terraform์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
๋ ธํธ๋ถ์ด๋ ์ํฌ์คํ ์ด์ ์ Terraform์ ์ค์นํ๋ ๊ฒ์ ์ฝ์ต๋๋ค. zip ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ ์์ถ์ ํ๊ณ PATH์ ์ด๋๊ฐ์ ๋ฐฐ์นํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๋จ๊ณ๋ณ ์ง์นจ์ ์ด ํํ ๋ฆฌ์ผ์ ํ์ธํ์ธ์. https://learn.hashicorp.com/terraform/getting-started/install.html
@slideend
ํธ์ง๊ธฐ๊ฐ ์ค๋น๊ฐ ๋์์ผ๋ฉด ํฐ๋ฏธ๋์ ์ด๊ณ ๋ช๊ฐ์ง ๊ธฐ๋ณธ์ ์ธ Terraform ๋ช ๋ น์ ์ํํฉ๋๋ค.
Linux/Mac์ ๊ฒฝ์ฐ
ํฐ๋ฏธ๋
์์ ์ํํ๊ฑฐ๋ Windows์ ๊ฒฝ์ฐ๋ช ๋ น ํ๋กฌํํธ
์์ ์คํํ๊ฒ ๋ฉ๋๋ค.VSCode ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด, ํธ์ง๊ธฐ์ ํฐ๋ฏธ๋(Terminal) ๊ธฐ๋ฅ์ผ๋ก ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ป ์ปดํจํฐ์์ Terraform์ ๋ฒ์ ์ ํ์ธ ํ์ธ์.
terraform version
๐ป ๋ช ๋ น ๊ตฌ๋ฌธ์ด ๊ถ๊ธํ๋ฉด ์ธ์ ๋ ์ง ๋์์ ๋ฐ์ ์ ์์ต๋๋ค.
terraform help
๐ Terraform์ NCP์ ์ฐ๊ฒฐํ๊ธฐ
@slidestart blood
HCL์ด
"HashiCorp Configuration Language"
์ ์ฝ์๋ผ๋ ๊ฒ์ ์๊ณ ๊ณ์ ๊ฐ์?
@slideend
NCP ์๊ฒฉ์ฆ๋ช ๋ฐ๊ธฐ
NCP์ ์ธ์ฆํ๊ณ ๋ฆฌ์์ค๋ฅผ ๋น๋ํ๊ธฐ ์ํด Terraform์ ์ ์ ํ ์๊ฒฉ ์ฆ๋ช ์ธํธ๋ฅผ ์ ๊ณตํ๋๋ก ์๊ตฌํฉ๋๋ค.
๐ป Terraform์์ ์ฌ์ฉํ NCP์ ์๊ฒฉ์ฆ๋ช ์ ์ป๊ธฐ์ํด ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
- https://www.ncloud.com/์ ๋ก๊ทธ์ธํ์ฌ ๋ง์ดํ์ด์ง ๋ฉ๋ด์์
์ธ์ฆํค ๊ด๋ฆฌ
๋ฅผ ์ ํํฉ๋๋ค. - ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ฌ์ฉ์ ํจ์ค์๋๋ฅผ ์๊ตฌํ ์ ์์ต๋๋ค.
- Terraform์ NCP์ API ์ธ์ฆํค๋ฅผ ํตํด ์๊ฒฉ์ฆ๋ช
์ ์ทจ๋ํฉ๋๋ค.
์ ๊ท API ์ธ์ฆํค ์์ฑ
๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. API ์ธ์ฆํค๊ฐ ์์ฑ ๋์์ต๋๋ค.
๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ธํฉ๋๋ค.
- ์์ฑ๋ API์ธ์ฆํค์
Secret Key
ํญ๋ชฉ์๋ณด๊ธฐ
๋ฒํผ์ ํด๋ฆญํ์ฌSecret Key
๋ฅผ ํ์ธํฉ๋๋ค. - Terraform์ ์ํ ํ๊ฒฝ๋ณ์ ์ค์ ์ ์ํด
Access Key ID
,Secret Key
๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
NCP ์๊ฒฉ์ฆ๋ช ํ๊ฒฝ๋ณ์๋ก ์ ์ฅํ๊ธฐ
์ด ๊ต์ก ํ๊ฒฝ์ ์ํด NCP์ ์๊ฒฉ ์ฆ๋ช ์ ์ค๋นํ์ฌ ํ๊ฒฝ ๋ณ์๋ก ์ ์ฅํฉ๋๋ค. Terraform์ ์ ํ๊ฒฝ์ ๊ตฌ์ฑ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์๋์ผ๋ก ์ฝ๊ณ ์ฌ์ฉํฉ๋๋ค.
๐ป ํฐ๋ฏธ๋์์ ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
NCLOUD_ACCESS_KEY
NCLOUD_SECRET_KEY
NCLOUD_REGION
๋ฅผ ํ๊ฒฝ๋ณ์๋ก ๋ฑ๋กํฉ๋๋ค.
export NCLOUD_ACCESS_KEY="XXXXXXXXXXXXX"
export NCLOUD_SECRET_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXX"
set NCLOUD_ACCESS_KEY="XXXXXXXXXXXXX"
set NCLOUD_SECRET_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXX"
$Env:NCLOUD_ACCESS_KEY="XXXXXXXXXXXXX"
$Env:NCLOUD_SECRET_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXX"
์ํ
API ์๊ฒฉ์ฆ๋ช
์ ๋ณด๋ ์ค์๋ก ๊ณต๊ฐ๋ ์ ์ฅ์์ ๋
ธ์ถ๋๊ฑฐ๋ ๋ณต์ฌ๋๋ฉด ์ํํฉ๋๋ค.
์๊ฒฉ์ฆ๋ช
(API ์ธ์ฆํค)๋ฅผ ์ฝ๋์ ์ ์ฅํ์ง ์๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๐จโ๐ป Terraform ์ฝ๋๋ ์ด๋ป๊ฒ ์๊ฒผ๋์?
@slidestart blood
Terraform์ ํ์ฌ ๋๋ ํ ๋ฆฌ์์ *.tf
๋๋ *.tfvars
๋ก ๋๋๋ ๋ชจ๋ ๊ฒ์ ์ฝ์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก Terraform Workspace๋ main.tf
, variables.tf
, outputs.tf
ํ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
Terraform ์ฝ๋๋ฅผ ๋ชฉ์ ์ ๋ฐ๋ผ ํ์ผ๋ก ๊ทธ๋ฃนํํ ์๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ชจ๋ ๋ก๋ ๋ฐธ๋ฐ์ ๊ตฌ์ฑ ์ฝ๋๋ฅผ load_balancer.tf
์ ๊ตฌ์ฑํ๊ธฐ
@slideend
์ฝ๋ ํธ์ง๊ธฐ์ ํ์ผ ๋ชฉ๋ก์ด ๋ณด์ด์ญ๋๊น?
Terraform ์ฝ๋๋ ํญ์ .tf
ํ์ฅ์๋ก ๋๋ฉ๋๋ค. ์ํ๋ ๋งํผ Terraform ํ์ผ์ ๊ฐ์ง ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ์ธ ๊ฐ์ง๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
main.tf
- ๋๋ถ๋ถ์ Terraform ์ฝ๋๊ฐ ์ ์ฅ๋๋ ์์น์ ๋๋ค. ์ด๊ฒ์ ์์์ ๊ตฌ์ถํ๋ ๋ถ๋ถ์ ๋๋ค.variables.tf
- ์ด ํ์ผ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ ์ ์๋ ๋ณ์๋ฅผ ์ ์ํฉ๋๋ค.output.tf
- ์ด ํ์ผ์๋ ์ฑ๊ณต์ ์ธ Terraform ์คํ์ด ๋๋ ๋ ํ์๋ ์ถ๋ ฅ์ด ํฌํจ๋์ด ์์ต๋๋ค.
Terraform์์ *.tf
์ *.tfvars
๋ก ๋๋์ง ์๋ ํ์ผ์ ๋ฌด์๋ฉ๋๋ค.
๐ก Terraform Init - Provider ์ค์น
@slidestart blood
Terraform Core ํ๋ก๊ทธ๋จ์ ๊ทธ ์์ฒด๋ก๋ ๊ทธ๋ค์ง ์ ์ฉํ์ง ์์ต๋๋ค.
Terraform์ ํด๋ผ์ฐ๋ API์ ํต์ ํ ์ ์๋๋ก Provider(๊ณต๊ธ์) ์ ๋์์ด ํ์ํฉ๋๋ค.
Terraform์๋ ์๋ฐฑ ๊ฐ์ ๋ค์ํ Provider๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์์ Provider ๋ชฉ๋ก์ ์ฐพ์๋ณผ ์ ์์ต๋๋ค.
https://registry.terraform.io/browse/providers
์ค๋ ์ฐ๋ฆฌ๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ Provider๋ฅผ ์ฌ์ฉํ ๊ฒ์ด์ง๋ง ์ฃผ์ Provider๋ ncloud
provider ์
๋๋ค.
@slideend
์ฐ๋ฆฌ๋ ์ด ์ค์ต์์ ์ฌ์ฉํ Terraform ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ ํ์ต๋๋ค. ๋๋จธ์ง ์ค์ต์์ ์ด ์์ค์ฝ๋๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
Terraform์ผ๋ก ๋ฌด์์ด๋ ํ๊ธฐ ์ ์ Workspace๋ฅผ ์ด๊ธฐํ ํด์ผ ํฉ๋๋ค.
๐ป ํฐ๋ฏธ๋์์ init
๋ช
๋ น์ ์ํํฉ๋๋ค.
terraform init
...
Terraform has been successfully initialized!
`terraform init ๋ช ๋ น์ Terraform ์ฝ๋๋ฅผ ์ค์บํ๊ณ ํ์ํ Provider๋ฅผ ์๋ณํ๊ณ ๋ค์ด๋ก๋ํฉ๋๋ค.
๐ป ncloud provider๊ฐ .terraform
๋๋ ํ ๋ฆฌ์ ์ค์น๋์๋์ง ํ์ธํฉ๋๋ค.
ls .terraform/providers/registry.terraform.io/navercloudplatform
dir .terraform/providers/registry.terraform.io/navercloudplatform
์ด ์จ๊ฒจ์ง ๋๋ ํ ๋ฆฌ๋ ๋ชจ๋ ๋ชจ๋๊ณผ ํ๋ฌ๊ทธ์ธ์ด ์ ์ฅ๋๋ ๊ณณ์ ๋๋ค.
๐ฑ Quiz Time 1. Provider์ Module
Q. Terraform์ ๋ชจ๋๊ณผ ๊ณต๊ธ์๋ฅผ ์ด๋์ ์ ์ฅํฉ๋๊น?
๋ต
๐ฉโโ๏ธ Terraform Validate - ์ฝ๋ ํ ์คํธ
@slidestart blood
Terraform์๋ ๊ตฌ๋ฌธ ๊ฒ์ฌ๊ธฐ๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค.
terraform validate
๋ช
๋ น์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
@slideend
Terraform์๋ validate
๋ผ๋ ํ์ ๋ช
๋ น์ด ๋ด์ฅ๋์ด ์์ต๋๋ค. ์ด๊ฒ์ ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ๋ฌธ ๋ถ์๋๋์ง ํ์ธํ๊ธฐ ์ํด ์ฝ๋์ ๋น ๋ฅธ ๊ตฌ๋ฌธ ๊ฒ์ฌ๋ฅผ ์ํํ๋ ค๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
๐ป main.tf ํ์ผ์ ํธ์งํฉ๋๋ค.
main.tf
16๋ฒ์งธ ํ์ ์ฌ์ด์ ํฐ ๋ฐ์ดํ๋ฅผ ์ ๊ฑฐ ncloud_vpc
์ hashicat
์ฌ์ด์ ํฐ ๋ฐ์ดํ๋ฅผ ์ ๊ฑฐํ๊ณ ์ ์ฅํฉ๋๋ค.
terraform {
required_providers {
ncloud = {
source = "NaverCloudPlatform/ncloud"
version = ">= 2.1.2"
}
}
}
provider "ncloud" {
region = var.region
site = var.site
support_vpc = true
}
resource "ncloud_vpc" "hashicat" { โ resource "ncloud_vpc" hashicat" {
ipv4_cidr_block = "10.0.0.0/16"
name = lower("${var.prefix}-vpc-${var.region}")
}
...์๋ต...
terraform validate
๋ช
๋ น์ ํฐ๋ฏธ๋์์ ์คํํฉ๋๋ค.
terraform validate
๋ค์ ๋ฐ์ดํ ํ๊ธฐ๋ฅผ ๋ฃ๊ณ ์ ์ฅํ ๋ค์ terraform validate
๋ช
๋ น์ ์คํํฉ๋๋ค. ์ด๋ฒ์๋ ๊ฒ์ฆ์ ํต๊ณผํด์ผ ํฉ๋๋ค.
terraform validate
๋ช
๋ น์ ์๋ํ๋ CI/CD ํ
์คํธ ํ์ดํ๋ผ์ธ์์ ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ๋ค๋ฅธ ๋จ๊ณ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ฝ๋์์ ์ค๋ฅ๋ฅผ ๋น ๋ฅด๊ฒ ํฌ์ฐฉํ ์ ์์ต๋๋ค.
๐ค Terraform Plan - Dry run mode
@slidestart blood
terraform plan
์ ํตํด ํ๊ฒฝ์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์์ ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฏธ๋ฆฌ ๋ณผ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ด๋ฏธ ๋น๋๋ ํ๊ฐ ์๋๋ผ ๋ฐฐํฌํ๊ธฐ ์ ์ ์๊ธฐ์น ์์ ๋ณ๊ฒฝ ์ฌํญ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
@slideend
๐ป terraform plan
๋ช
๋ น์ ์คํํฉ๋๋ค.
$ terraform plan
var.prefix
This prefix will be included in the name of most resources.
Enter a value:
์ด ๋ช
๋ น์ ์คํํ๋ฉด Terraform์์ prefix
๋ณ์ ๋ฅผ ์
๋ ฅํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ ํฉ๋๋ค.
์๋ฌธ์ ๋๋ ์ซ์์ ์งง์ ๋ฌธ์์ด์ ์ ๋ ฅํฉ๋๋ค. ์๋ฌธ ์ด๋์ ์๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
prefix
๋ ํ์ฌ Terraform ์ฝ๋ ๊ตฌ์ฑ์์ VPC, ์๋ธ๋ท, ์๋ฒ ๋ฑ์ ๋ฆฌ์์ค ์ด๋ฆ์ ์ผ๋ถ๊ฐ ๋ฉ๋๋ค.
๐๏ธ Terraform ๋ณ์๋ก ์์ ํ๊ธฐ
@slidestart blood
terraform.tfvars
ํ์ผ์ ์ฌ์ฉ์๊ฐ ๋ณ์๋ฅผ ๊ตฌ์ฑํ ์ ์๋ ํธ๋ฆฌํ ์์น์
๋๋ค.
@slideend
Terraform์์ ๋ชจ๋ ๋ณ์๋ ์ฌ์ฉํ๊ธฐ ์ ์ ์ ์ธ๋์ด์ผ ํฉ๋๋ค. ๋ณ์๋ ๋ค๋ฅธ *.tf
ํ์ผ์์๋ ์ ์ธ๋ ์ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก variables.tf
ํ์ผ์์ ์ ์ธ๋ฉ๋๋ค. (default)
variable "address_space" {
description = "The address space that is used by the virtual network. You can supply more than one address space. Changing this forces a new resource to be created."
default = "10.0.0.0/8"
}
ํด๋น ๊ฐ์ terraform.tfvars
ํ์ผ ๋ฐ ๋์ค์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค.
๐ป terraform.tfvars
ํ์ผ์ ์์ ํฉ๋๋ค.
terraform.tfvars
ํ์ผ์ ์ด๊ณ prefix
์ ์ค ์์ ๋ถ๋ถ์ ์ฃผ์ ๊ธฐํธ #
๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
yourname
์ ์ํ๋ ์๋ฌธ์ ๋๋ ์ซ์์ ์งง์ ๋ฌธ์์ด์ ์
๋ ฅํฉ๋๋ค.
# terraform.tfvars
prefix = "yourname"
์ด์ terraform plan
์ ๋ค์ ์คํ ํฉ๋๋ค. ์ด๋ฒ์๋ prefix
๋ฅผ ์๋์ผ๋ก ์
๋ ฅํ ํ์๊ฐ ์์ต๋๋ค.
๐ผ cidr_block ๋ณ๊ฒฝ
@slidestart blood
๊ฐ๊ฐ์ธ์ terraform.tfvars
ํ์ผ์ ์ค์ ํ์ฌ variables.tf
ํ์ผ์ ์ ์๋ ๋ชจ๋ ๋ณ์๋ฅผ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
์ด๋ฒ ์ค์ต์์๋ ncloud ๋ฆฌ์์ค๋ฅผ ๋ฐฐํฌํ๋ ์์น๋ฅผ ์ง์ ํฉ๋๋ค.
@slideend
์ด์ ์ค์ต์์ prefix
๋ฅผ terraform.tfvars
ํ์ผ์์ ๋ณ์๋ฅผ ์ค์ ํ์ต๋๋ค. ncloud ์ธํ๋ผ๊ฐ ๋ฐฐํฌ๋ vpc์ cidr๋ฅผ ๊ฒฐ์ ํ ๋ ๋ค๋ฅธ ๋ณ์๋ฅผ ์ค์ ํด ๋ณด๊ฒ ์ต๋๋ค.
๋จผ์ ๋ค๋ฅธ ๊ณํ์ ์คํํ์ฌ ์์น๋ฅผ ๋ณ๊ฒฝํ ํ ์ด๋ป๊ฒ ๋๋์ง ๋น๊ตํ ์ ์์ต๋๋ค.
terraform plan
๐ป ๊ธฐ๋ณธ address_space
์ ๋ณด๋ฅผ ์์ ํฉ๋๋ค.
default๋ก ์ ์ธ๋์ด์๋ ๊ฐ ์ธ์ ์ฌ์ฉ์ ์ง์ ๋ณ์๋ก ๋ณ๊ฒฝํด๋ด
๋๋ค. terraform.tfvars
ํ์ผ์ ์ด์ด address_space
์ ์ถ๊ฐํ๊ณ ๋ค์ terraform plan
์ ์คํํด ๋ด
๋๋ค. ์ด๋ฒ์ ๋ฌด์์ด ๋ค๋ฅธ๊ฐ์?
# terraform.tfvars
prefix = "yourname"
address_space = "10.0.0.0/16"
terraform.tfvars
ํ์ผ์ variables.tf
ํ์ผ์ ์ ์ธ๋ ๋ชจ๋ ๋ณ์์ ๋ํ ๊ฐ์ ์ค์ ํ ์ ์์์ ๊ธฐ์ตํ์ญ์์ค.
๐ฑ Quiz Time 2. Variables
Q. Terraform ๋ณ์๋ ์ผ๋ฐ์ ์ผ๋ก ์ด๋์ ์ ์ธ ๋ฉ๋๊น?
๋ต
์ด ์ฅ์์ ์ฐ๋ฆฌ๋ :
- terraform init ๋ช ๋ น์ ํ์ธํ์ต๋๋ค.
- terraform plan ๋ช ๋ น์ ํ์ธํ์ต๋๋ค.
- ๋ณ์์ ๋ํด ๋ฐฐ์ ์ต๋๋ค.
- prefix(์ ๋์ฌ) ์ค์ ์ ํ์ต๋๋ค.