๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿ’ป Lab - Terraform in Action

์•ฝ 11 ๋ถ„ncloudncpterraformworkshop

๐Ÿ’ป Lab - Terraform in Action

ํŽธ์ง‘๊ธฐ์—์„œ ์—ด๊ธฐ

  • VSCode๋ฅผ ์‹คํ–‰ํ•˜๊ณ  File(ํŒŒ์ผ) ๋ฉ”๋‰ด์—์„œ Open Folder... ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  • ์•ž์„œ ๋ฐ›์€ ๋””๋ ‰ํ† ๋ฆฌ๋‚ด์˜ lab02์„ ์—ด์–ด์ค๋‹ˆ๋‹ค.

๐Ÿ“ˆ Terraform Graph

@slidestart blood

Terraform Graph๋Š” ๋ชจ๋“  ์ธํ”„๋ผ์— ๋Œ€ํ•œ ์‹œ๊ฐ์  ํ‘œํ˜„์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ด๋Š” ๋ณ€๊ฒฝ์˜ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ข…์†์„ฑ ๋ฌธ์ œ ๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

@slideend

๐Ÿ’ป ๋‹ค์Œ terraform graph๋ช…๋ น์„ ์‹คํ–‰ํ•ด ๋ณด์„ธ์š”.

์ƒˆ๋กœ์šด Workspace ์ด๋ฏ€๋กœ, terraform init์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

terraform init

terraform graph๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

terraform graph

๊ทธ๋Ÿฌ๋ฉด digraph๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ธํ”„๋ผ์˜ ์‹œ๊ฐ์  ๋งต์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋Š” DOT ๊ทธ๋ž˜ํ”„ ์„ค๋ช… ์–ธ์–ด ํ˜•์‹ ์ž…๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ Blast Radius ๋„๊ตฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ทธ๋ž˜ํ”„ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Blast Radiusopen in new window๋Š” ์„ค์น˜ํ˜• ํˆด์ž…๋‹ˆ๋‹ค.
  • Graphviz๋Š” DOT ๊ทธ๋ž˜ํ”„ ์„ค๋ช… ์–ธ์–ด๋ฅผ ํ‘œ์‹œํ•ด์ฃผ๋Š” ํˆด์ž…๋‹ˆ๋‹ค.
    • https://dreampuf.github.io/GraphvizOnline/open in new window ์— ์•ž์„œ digraph๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ณ  ์–ด๋–ค ๊ทธ๋ฆผ์ด ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•ด ๋ด…๋‹ˆ๋‹ค.
    • ์ธํ”„๋ผ์— ๋Œ€ํ•œ Terraform ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ์ข…์†์„ฑ์ด ์ž๋™์œผ๋กœ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

์˜จ๋ผ์ธ์— Terraform์˜ ์ž‘์—…์„ ์‹œ๊ฐํ™”ํ•ด์ฃผ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํˆด์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„ํ˜น plan ํŒŒ์ผ์„ ์š”๊ตฌํ•˜๋Š” ํˆด์ด ์žˆ๋‹ค๋ฉด ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค. ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ํฌํ•œ๋œ plan์˜ ๊ฒฝ์šฐ ๋ณด์•ˆ์ ์œผ๋กœ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜์„ธ์š”.

๊ฒฝ๊ณ 

plan ์ •๋ณด์—๋Š” ์ธ์ฆํ‚ค, ํŒจ์Šค์›Œ๋“œ๊ฐ™์€ ๋…ธ์ถœํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ‘จโ€๐Ÿ’ป Terraform Plan & Terraform Apply

@slidestart blood

๊ธฐ๋ณธ์ ์œผ๋กœ terraform apply ๋ช…๋ น์€ Terraform Plan์„ ์‹คํ–‰ํ•˜์—ฌ ์›ํ•˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.


์ด๋Š” ๋ณ€๊ฒฝ์˜ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ข…์†์„ฑ ๋ฌธ์ œ ๋˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

@slideend

๐Ÿ’ป ํ•„์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ๊ตฌ์„ฑํ–ˆ์œผ๋ฏ€๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ์ง€ ๋ณด๋ ค๋ฉด ๋จผ์ € terraform plan ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค .

terraform plan

๊ณ„ํš ์ถœ๋ ฅ์— ์ ์ ˆํ•œ prefix, subnet cidr์ด ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์›ํ•œ๋‹ค๋ฉด terraform.tfvars ํ˜น์€ variables.tf์— ์ •์˜๋œ default๊ฐ’์„ ๋ณ€๊ฒฝํ•ด๋ณด์„ธ์š”.

๊ทธ๋Ÿฐ ๋‹ค์Œ terraform apply๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ตฌ์ถ•๋˜๋Š” ๊ฒƒ์„ ์ง€์ผœ๋ณด์‹ญ์‹œ์˜ค.

terraform apply

Terraform์—์„œ "Do you want to perform these actions?"๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด yes ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Apply complete! Resources: 1 added, 0 changed, 0 destroyed. ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๊นŒ? ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค๋ฉด ๋ฌด์—‡์ด ๋ฌธ์ œ์ธ์ง€ ์ฐพ์•„๋ณด์„ธ์š”.

์ง€๊ธˆ ์šฐ๋ฆฌ ์ฝ”๋“œ๋Š” VPC๋งŒ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ง„ํ–‰๋˜๋Š” ์‹ค์Šต์—์„œ ์ด ์ฝ”๋“œ์™€ ํ”„๋กœ๋น„์ €๋‹๋œ ์ƒํƒœ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ์ž‘ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

NCP Consulopen in new window ํ™”๋ฉด์— ์ ‘์†ํ•ด ๋ณด์„ธ์š”. ๊ตฌ์„ฑํ•œ ์ž์›์ด ์ƒ์„ฑ๋œ ๊ฒƒ์ด ํ™•์ธ๋˜๋‚˜์š”?

1. Products & Services

๐Ÿ‘ฉโ€๐Ÿ’ป Test and Repair

@slidestart blood

Terraform์€ ๋ฉฑ๋“ฑ์„ฑ(idempotent)์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.


๋ฉฑ๋“ฑ์€ ์ˆ˜ํ•™ ๋ฐ ์ปดํ“จํ„ฐ ๊ณผํ•™์˜ ํŠน์ • ์—ฐ์‚ฐ์˜ ์†์„ฑ์œผ๋กœ, ์ดˆ๊ธฐ ์ ์šฉ์„ ๋„˜์–ด ๋™์ผํ•˜๋‹ค๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ๋ฒˆ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ  : https://en.wikipedia.org/wiki/Idempotenceopen in new window

@slideend

๐Ÿ’ป ๋ฉฑ๋“ฑ์„ฑ์˜ ๊ฒ€์ฆ์„ ํ•ด๋ด…๋‹ˆ๋‹ค.

์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ์ง€ ๋ณด๋ ค๋ฉด ๋จผ์ € terraform plan ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.

terraform plan

VPC๊ฐ€ ์ด๋ฏธ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฏ€๋กœ Terraform์€ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์ •์ƒ์ ์ด๋ฉฐ ์˜ˆ์ƒ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค๋ฅธ ๋ช…๋ น์ธ terraform apply๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ง€์ผœ๋ณด์‹ญ์‹œ์˜ค.

terraform apply

์ด๋ฏธ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ”„๋กœ๋น„์ €๋‹๋œ ๊ฒฝ์šฐ VPC๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

๐Ÿ›ซ Change Your Prefix

@slidestart blood

Terraform์€ ์ธํ”„๋ผ๋ฅผ Create, Destroy, Update, re-Create ํ•ฉ๋‹ˆ๋‹ค.


๋ฆฌ์†Œ์Šค ๋‚ด์šฉ ๋ณ€๊ฒฝ ์‹œ

  • ์ผ๋ถ€ ์œ ํ˜•์˜ ๋ฆฌ์†Œ์Šค๋Š” ๋‚ด์šฉ ๋ณ€๊ฒฝ ์‹œ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ ์–ด๋–ค ๊ฒฝ์šฐ๋Š” Destroy ํ›„ Create ๋˜๋Š” ๊ณผ์ •์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Terraform์€ ํ•ญ์ƒ ํ˜„์žฌ ์ธํ”„๋ผ๋ฅผ ์ฝ”๋“œ์— ์ •์˜๋œ ๊ฒƒ๊ณผ ์ผ์น˜์‹œํ‚ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

@slideend

๐Ÿ’ป terraform.tfvars๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

terraform.tfvars ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜์—ฌ prefix๋ฅผ ๊ธฐ์กด๊ณผ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ํ›„ terraform apply๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ง€์ผœ๋ณด์‹ญ์‹œ์˜ค.

terraform plan

VPC๊ฐ€ ์ด๋ฏธ ๊ตฌ์ถ•๋˜์—ˆ์œผ๋ฏ€๋กœ Terraform์€ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ์ •์ƒ์ ์ด๋ฉฐ ์˜ˆ์ƒ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค๋ฅธ ๋ช…๋ น์ธ terraform apply๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ง€์ผœ๋ณด์‹ญ์‹œ์˜ค.

terraform apply

Terraform์—์„œ "Do you want to perform these actions?"๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด yes๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ถœ๋ ฅ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์–ด๋–ค๊ฐ€์š”?

VPC Update

2021๋…„ 10์›” 20์ผ ๊ธฐ์ค€์œผ๋กœ, VPC์˜ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜๋ฉด NCP์—์„œ๋Š” ์ด ์ž์›์„ ์žฌ์ƒ์„ฑ ํ•ฉ๋‹ˆ๋‹ค.
๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ตฌ์„ฑ๊ฐ’์˜ ๋ณ€๊ฒฝ์ด ์œ ์ง€๋œ ์ฑ„๋กœ ๋ณ€๊ฒฝ๋˜๊ธฐ๋„ ํ•˜์ง€๋งŒ, ๋•Œ์— ๋”ฐ๋ผ์„œ๋Š” ์‚ญ์ œ ํ›„ ์žฌ์ƒ์„ฑ ํ•ฉ๋‹ˆ๋‹ค.

$ terraform apply
ncloud_vpc.hashicat: Refreshing state... [id=13888]

Terraform used the selected providers to generate the following execution plan.
Resource actions are indicated with the following symbols:
-/+ destroy and then create replacement

Terraform will perform the following actions:

  # ncloud_vpc.hashicat must be replaced
-/+ resource "ncloud_vpc" "hashicat" {
      ~ default_access_control_group_no = "26594" -> (known after apply)
      ~ default_network_acl_no          = "19325" -> (known after apply)
      ~ default_private_route_table_no  = "25834" -> (known after apply)
      ~ default_public_route_table_no   = "25833" -> (known after apply)
      ~ id                              = "13888" -> (known after apply)
      ~ name                            = "yourname-vpc-kr" -> "hashicat-vpc-kr" # forces replacement
      ~ vpc_no                          = "13888" -> (known after apply)
        # (1 unchanged attribute hidden)
    }

Plan: 1 to add, 0 to change, 1 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

ncloud_vpc.hashicat: Destroying... [id=13888]
ncloud_vpc.hashicat: Still destroying... [id=13888, 10s elapsed]
ncloud_vpc.hashicat: Still destroying... [id=13888, 20s elapsed]
ncloud_vpc.hashicat: Destruction complete after 23s
ncloud_vpc.hashicat: Creating...
ncloud_vpc.hashicat: Still creating... [10s elapsed]
ncloud_vpc.hashicat: Still creating... [20s elapsed]
ncloud_vpc.hashicat: Creation complete after 23s [id=13902]

Apply complete! Resources: 1 added, 0 changed, 1 destroyed.
ย 







































๐Ÿ›ซ Create and Change ACL

@slidestart blood

Terraform์€ ์ธํ”„๋ผ๋ฅผ Create, Destroy, Update, re-Create ํ•ฉ๋‹ˆ๋‹ค.


๋ฆฌ์†Œ์Šค ๋‚ด์šฉ ๋ณ€๊ฒฝ ์‹œ

  • ์ผ๋ถ€ ์œ ํ˜•์˜ ๋ฆฌ์†Œ์Šค๋Š” ๋‚ด์šฉ ๋ณ€๊ฒฝ ์‹œ ์‚ญ์ œํ•˜์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ ์–ด๋–ค ๊ฒฝ์šฐ๋Š” Destroy ํ›„ Create ๋˜๋Š” ๊ณผ์ •์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Terraform์€ ํ•ญ์ƒ ํ˜„์žฌ ์ธํ”„๋ผ๋ฅผ ์ฝ”๋“œ์— ์ •์˜๋œ ๊ฒƒ๊ณผ ์ผ์น˜์‹œํ‚ค๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.


Terraform ์ฝ”๋“œ๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ์ง„์ ์œผ๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@slideend

๐Ÿ’ป ncloud_network_acl์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

main.tf ํŒŒ์ผ์„ ์—ด๊ณ  ๋ฆฌ์†Œ์Šค ๋ธ”๋ก์˜ ์ฃผ์„์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๋ฆฌ์†Œ์Šค ์œ ํ˜•์€ ncloud_network_acl์ด๊ณ  ์ด๋ฆ„์€ public ์ž…๋‹ˆ๋‹ค.

  • ๊ฐ ์ค„์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ # ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์ฝ”๋“œ์˜ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  • ์ฝ”๋“œํŽธ์ง‘๊ธฐ์—์„œ๋Š” ์ฃผ์„์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ํ•ด๋‹น ๋ผ์ธ์„ ์„ ํƒํ•˜๊ณ  ํ™œ์„ฑ/๋น„ํ™œ์„ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • Mac : โŒ˜ + /

    • Win : Ctrl + /

  • ์ฃผ์„ ์ œ๊ฑฐ ํ›„ ํŒŒ์ผ์„ ์ €์žฅํ•˜์„ธ์š”.

๋ณ€๊ฒฝ ํ›„ terraform apply๋ฅผ ์‹คํ–‰ํ•˜๊ณ  yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ถ”๊ฐ€๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

ncloud_network_acl๋ฆฌ์†Œ์Šค ๋‚ด๋ถ€์˜ vpc_no ํŒŒ๋ผ๋ฉ”ํ„ฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ฐ€๋ฅดํ‚ค๊ณ  ์žˆ๋‚˜์š”?

ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋Š” VPC์˜ ์„ค์ •์„ ์ƒ์† ๋ฐ›์Šต๋‹ˆ๋‹ค.

Terraform์€ ์ˆ˜๋ฐฑ๊ฐœ์˜ ์ƒํ˜ธ ์—ฐ๊ฒฐ๋˜ ๋ฆฌ์†Œ์Šค ๊ฐ„์˜ ๋ณต์žกํ•œ ์ข…์†ก์„์„ ๋งตํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ป ncloud_network_acl์„ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

ncloud_network_aclํ•ญ๋ชฉ์— ๋Œ€ํ•ด description ์˜ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•ด ๋ณด์„ธ์š”.

resource "ncloud_network_acl" "public" {
  vpc_no      = ncloud_vpc.hashicat.id
  name        = "${var.prefix}-acl-public"
  description = "for Public"
}



ย 

๋ณ€๊ฒฝ ํ›„ terraform apply๋ฅผ ์‹คํ–‰ํ•˜๊ณ  yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋ฆฌ์†Œ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ”„๋กœ๋น„์ €๋‹๋œ ๊ฒฝ์šฐ ncloud_network_acl๋ฅผ ์‚ญ์ œ ํ›„ ๋‹ค์‹œ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Apply complete! Resources: 0 added, 1 changed, 0 destroyed.


๐Ÿ—๏ธ Complete the Build

@slidestart blood

-auto-approve ํ”Œ๋ž˜๊ทธ

ํ•ด๋‹น ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "Do you want to perform these actions?" ์— ํ•œ ์งˆ๋ฌธ์„ ์˜ค๋ฒ„๋ผ์ด๋“œ(Override) ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์‚ฌ์šฉ์— ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ˆ๋‹ค.

๊ฒ€ํ†  ๋‹จ๊ณ„์ธ Plan์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋ฐ”๋กœ Create/Update/Destroy ํ•ฉ๋‹ˆ๋‹ค.

@slideend

๐Ÿ’ป ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•ด๋ณด์„ธ์š”.

  • main.tf์˜ ๋ชจ๋“  ์ฃผ์„์„ ์ œ๊ฑฐํ•˜์„ธ์š”.
  • outputs.tf์˜ ๋ชจ๋“  ์ฃผ์„์„ ์ œ๊ฑฐํ•˜์„ธ์š”.

terraform plan๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ตฌ์„ฑํ•  ๋ฆฌ์†Œ์Šค ํ•ญ๋ชฉ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

terraform plan

์ด์ œ Apply๋ฅผ ์‹คํ–‰ํ•˜์—ฌ HashiCat ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.

terraform apply -auto-approve

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐฐํฌ๋ฅผ ์™„๋ฃŒํ•˜๋Š”๋ฐ 5~10๋ถ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰์ด ๋๋‚  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ URL์ด ํฌํ•จ๋œ Terraform ์ถœ๋ ฅ์„ ๋ณด๋ฉด ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

catapp_url ์ถœ๋ ฅ ์—์„œ URL์„ ํด๋ฆญํ•˜์—ฌ ์ƒˆ ๋ธŒ๋ผ์šฐ์ € ํƒญ์—์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฝ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋กœ๋“œ๋˜์ง€ ์•Š์œผ๋ฉด terraform apply ๋‹ค์‹œ ์‹คํ–‰ ํ•˜์‹ญ์‹œ์˜ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์›น ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์„ค์น˜ํ•˜๊ณ  ์‹คํ–‰ ์ค‘์ด ์•„๋‹Œ ๊ฒฝ์šฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ป ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ž˜ํ”„๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

terraform graph๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

terraform graph

https://dreampuf.github.io/GraphvizOnline/open in new window์— ์•ž์„œ digraph๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ณ  ์–ด๋–ค ๊ทธ๋ฆผ์ด ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•ด ๋ด…๋‹ˆ๋‹ค.

์ธํ”„๋ผ์— ๋Œ€ํ•œ Terraform ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ์ข…์†์„ฑ์ด ์ž๋™์œผ๋กœ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

Terraform์€ ์ด ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ๋Œ€ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด ๋ณ‘๋ ฌ๋กœ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ˜ฑ Quiz Time 3. Terraform Apply

Q. Plan ํŒŒ์ผ์„ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  terraform apply๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ?

๋‹ต

์ด ์žฅ์—์„œ ์šฐ๋ฆฌ๋Š” :

  • Terraform ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.
  • Terraform Plan, Graph, Apply, Destory
  • ์ข…์†์„ฑ์— ๋Œ€ํ•ด ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.
  • ์‹ค์Šต์—์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ํ™•์ธํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
  • main.tfopen in new window, variables.tfopen in new window, outputs.tf๋ฅผ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
  • Meow World ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค.