๐Ÿ“‚ IaC/Terraform

TF 101 Study 3์ฃผ์ฐจ ์ •๋ฆฌ - ์กฐ๊ฑด์‹, ํ•จ์ˆ˜, ํ”„๋กœ๋น„์ €๋„ˆ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ํ”„๋กœ๋ฐ”์ด๋”

dhyuck 2023. 7. 22. 02:58
๋ฐ˜์‘ํ˜•
  • CloudNeta์˜ ๊ฐ€์‹œ๋‹ค๋‹˜์ด ์ง„ํ–‰ํ•˜์‹œ๋Š” Terraform 101 Study์— ์ฐธ๊ฐ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
  • ์Šคํ„ฐ๋”” ๊ต์žฌ โ†’ ํ…Œ๋ผํผ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” IaC

CH3. ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ• - 3


3-10. ์กฐ๊ฑด์‹


3-11. ํ•จ์ˆ˜


3-12. ํ”„๋กœ๋น„์ €๋„ˆ


  • ํ”„๋กœ๋น„์ €๋„ˆ โ†’ ํ”„๋กœ๋ฐ”์ด๋”๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ์ปค๋งจ๋“œ์™€ ํŒŒ์ผ ๋ณต์‚ฌ ๊ฐ™์€ ์—ญํ• ์„ ์ˆ˜ํ–‰
  • ํ”„๋กœ๋น„์ €๋„ˆ๋กœ ์‹คํ–‰๋œ ๊ฒฐ๊ณผ๋Š” ํ…Œ๋ผํผ์˜ ์ƒํƒœ ํŒŒ์ผ๊ณผ ๋™๊ธฐํ™”๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”„๋กœ๋น„์ €๋‹์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ํ•ญ์ƒ ๊ฐ™๋‹ค๊ณ  ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.
    โ†’ ๋”ฐ๋ผ์„œ ํ”„๋กœ๋น„์ €๋„ˆ ์‚ฌ์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

ํ”„๋กœ๋น„์ €๋„ˆ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  • ํ”„๋กœ๋น„์ €๋„ˆ์˜ ๊ฒฝ์šฐ ๋ฆฌ์†Œ์Šค ํ”„๋กœ๋น„์ €๋‹ ์ดํ›„ ๋™์ž‘ํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ”„๋กœ๋น„์ €๋„ˆ๋Š” ์„ ์–ธ๋œ ๋ฆฌ์†Œ์Šค ๋ธ”๋ก์˜ ์ž‘์—…์ด ์ข…๋ฃŒ๋˜๊ณ  ๋‚˜์„œ ์ง€์ •ํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๋‹ค์ˆ˜์˜ ํ”„๋กœ๋น„์ €๋„ˆ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์„ ์–ธ๋„ ๊ฐ€๋Šฅํ•˜๋ฉฐ ์ด๋Ÿฐ ๊ฒฝ์šฐ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.
  • ํ”„๋กœ๋น„์ €๋„ˆ๋Š” self๋ฅผ ํ†ตํ•ด ํ”„๋กœ๋น„์ €๋‹ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด๋‹น ์†์„ฑ์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

local-exec ํ”„๋กœ๋น„์ €๋„ˆ

  • local-exec โ†’ ํ…Œ๋ผํผ์ด ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ์—์„œ ์ˆ˜ํ–‰ํ•  ์ปค๋งจ๋“œ๋ฅผ ์ •์˜

resource "local_file" "provisioner_test" {
  content  = "for provisioner test"
  filename = "provisioner_test.txt"

  # local-exec ํ”„๋กœ๋น„์ €๋„ˆ -> ํ…Œ๋ผํผ์ด ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ์—์„œ ์ˆ˜ํ–‰
  provisioner "local-exec" {
    command = "echo The content is ${self.content}"
  }
}

# ์‹คํ–‰ ๊ฒฐ๊ณผ
# 1. terraform apply ๋‹จ๊ณ„์—์„œ ๋กœ์ปฌ ๋จธ์‹ ์— "echo The content is ${self.content}" ๋ผ๋Š” ์ปค๋งจ๋“œ๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค.
# 2. provisioner_test.txt๋ผ๋Š” ํŒŒ์ผ์ด ํ”„๋กœ๋น„์ €๋‹ ๋œ๋‹ค.

์›๊ฒฉ์ง€ ์—ฐ๊ฒฐ

  • file ํ”„๋กœ๋น„์ €๋„ˆ์™€ remote-exec ํ”„๋กœ๋น„์ €๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์›๊ฒฉ์ง€์— ์—ฐ๊ฒฐํ•  SSH, WinRM ์—ฐ๊ฒฐ ์ •์˜๊ฐ€ ํ•„์š”

file ํ”„๋กœ๋น„์ €๋„ˆ

  • file โ†’ ํ…Œ๋ผํผ์„ ์‹คํ–‰ํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ์—ฐ๊ฒฐ ๋Œ€์ƒ์œผ๋กœ ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
  • ๋กœ์ปฌ์—์„œ ํ…Œ๋ผํผ์„ ์‹คํ–‰ํ•˜์—ฌ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์›๊ฒฉ์ง€ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๋กœ์ปฌ์˜ ํŒŒ์ผ์„ EC2๋กœ ์—…๋กœ๋“œํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ

remote-exec ํ”„๋กœ๋น„์ €๋„ˆ

  • remote-exec โ†’ ์›๊ฒฉ์ง€ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•  ์ปค๋งจ๋“œ์™€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ •์˜
  • EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  VM์—์„œ ์‹คํ–‰ํ•  ๋ช…๋ น ๋“ฑ์„ ์ •์˜
resource "aws_instance" "file_ec2" {
  ami           = "ami-0c9c942bd7bf113a2"
  instance_type = "t3.micro"

  # ์›๊ฒฉ์ง€ ์—ฐ๊ฒฐ
  # 1.2.3.4์˜ IP๋ฅผ ๊ฐ€์ง€๋Š” EC2 ์ธ์Šคํ„ด์Šค์— ssh๋กœ ์—ฐ๊ฒฐ
  connection {
    type     = "ssh"
    user     = "root"
    password = "Password"
    host     = "1.2.3.4"
  }

  # file ํ”„๋กœ๋น„์ €๋„ˆ
  # ํ…Œ๋ผํผ ์‹คํ–‰ ํ™˜๊ฒฝ์— ์žˆ๋Š” 'install_script.sh'๋ฅผ EC2 ์ธ์Šคํ„ด์Šค์— ์—…๋กœ๋“œ
  provisioner "file" {
    source      = "install_script.sh"
    destination = "/etc/install_script.sh"
  }

  # remote-exec ํ”„๋กœ๋น„์ €๋„ˆ
  # EC2์—์„œ inline์— ์žˆ๋Š” ์ปค๋งจ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ง€์‹œ
  provisioner "remote-exec" {
    inline = [
      "chmod +x /ect/install_script.sh",
      "/bin/bash /etc/install_script.sh"
    ]
  }
}

3-13. null_resources์™€ terraform_data


  • ํ…Œ๋ผํผ 1.4 ๋ฒ„์ „์ด ๋ฆด๋ฆฌ์Šค ๋˜๋ฉด์„œ ๊ธฐ์กด null_resource ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒดํ•˜๋Š” terraform_data ๋ฆฌ์†Œ์Šค๊ฐ€ ์ถ”๊ฐ€

null_resource

  • ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ตฌํ˜„
  • ์‚ฌ์šฉ์ž๊ฐ€ ์˜๋„์ ์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ํ•˜๋Š” ๋™์ž‘์„ ์กฐ์œจํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ
    โ†’ ํ”„๋กœ๋ฐ”์ด๋”๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์ˆ˜๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ๋กœ๋งŒ์€ ํ•ด๊ฒฐํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ

terraform_data

  • ๊ธฐ์กด null_resource์˜ ๊ธฐ๋Šฅ์ ์ธ ์š”์†Œ๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ โ†’ null_resource๋Š” ๋ณ„๋„์˜ ํ”„๋กœ๋ฐ”์ด๋”๊ตฌ์„ฑ์ด ํ•„์š”
  • terraform_data์™€ null_resource์˜ ์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๊ฐ™๋‹ค.
  • ๊ฐ•์ œ ์žฌ์‹คํ–‰ โ†’ triggers_replace
  • ์ƒํƒœ ์ €์žฅ โ†’ input ์ธ์ˆ˜
  • input์— ์ €์žฅ๋œ ๊ฐ’์„ ์ถœ๋ ฅ โ†’ output ์†์„ฑ

3-14. moved ๋ธ”๋ก


  • ํ…Œ๋ผํผ State์— ๊ธฐ๋ก๋˜๋Š” ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๊ธฐ์กด ๋ฆฌ์†Œ์Šค๋Š” ์‚ญ์ œ๋˜๊ณ  ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

    โ†’ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์€ ๋ณ€๊ฒฝ๋˜์ง€๋งŒ ํ…Œ๋ผํผ์œผ๋กœ ํ”„๋กœ๋น„์ €๋‹ํ•œ ํ™˜๊ฒฝ์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ moved๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

  • ํ…Œ๋ผํผ 1.1 ๋ฒ„์ „๋ถ€ํ„ฐ moved๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด์ „์—๋Š” terraform state mv ๋ช…๋ น์œผ๋กœ State๋ฅผ ์กฐ์ž‘ํ•ด์•ผํ•˜๋Š” ๋ถ€๋‹ด์ด ์žˆ์—ˆ๋‹ค.

  • A๋ผ๋Š” ๋ฆฌ์†Œ์Šค์˜ ์ด๋ฆ„์„ B๋กœ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ moved ๋ธ”๋ก์„ ์ž‘์„ฑํ•˜๊ณ  apply ํ•˜๊ณ  moved ๋ธ”๋ก์„ ์‚ญ์ œํ•˜๋ฉด ๋œ๋‹ค.

# A๋ผ๋Š” ์ด๋ฆ„์˜ local_file ๋ฆฌ์†Œ์Šค๋ฅผ B๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝ
moved {
  from = local_file.A
  to   = local_file.B
}

3-15. CLI๋ฅผ ์œ„ํ•œ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜


  • ํ…Œ๋ผํผ์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์‹คํ–‰ ๋ฐฉ์‹๊ณผ ์ถœ๋ ฅ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์˜ต์…˜์„ ์กฐ์ ˆ`ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋ฉด, ์˜๊ตฌ์ ์œผ๋กœ ๋กœ์ปฌ ํ™˜๊ฒฝ์— ์ ์šฉ๋˜๋Š” ์˜ต์…˜์ด๋‚˜ ๋ณ„๋„ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์˜ต์…˜์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    โ†’ ์ด๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ ์ž‘์—… ํ™˜๊ฒฝ๊ณผ ๋‹ค๋ฅธ

TF_LOG

  • stderr ๋กœ๊ทธ ๋ ˆ๋ฒจ ์ •์˜ โ†’ trace, debug, info, warn, error, off
  • TF_LOG : ๋กœ๊น… ๋ ˆ๋ฒจ ์ง€์ •
  • TF_LOG_PATH : ๋กœ๊ทธ ํŒŒ์ผ ์œ„์น˜ ์ง€์ •
  • TF_LOG_CORE : ํ…Œ๋ผํผ ์ฝ”์–ด์˜ ๋กœ๊น… ๋ ˆ๋ฒจ ์ง€์ •
  • TF_LOG_PROVIDER : ํ”„๋กœ๋ฐ”์ด๋”์˜ ๋กœ๊น… ๋ ˆ๋ฒจ ์ง€์ •

TF_INPUT

  • TF_INPUT์œผ๋กœ 0 ๋˜๋Š” false๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ โ†’ ์ž…๋ ฅ๋ฐ›๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Œ

TF_VAR_name

  • default๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜

TF_CLI_ARGS / TF_CLI_ARGS_subcommand

  • ํ…Œ๋ผํผ ์‹คํ–‰ ์‹œ ์ถ”๊ฐ€ํ•  ์ธ์ˆ˜๋ฅผ ์ •์˜

TF_DATA_DIR

  • ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ณ„ ๋ฐ์ดํ„ฐ(state ์ €์žฅ ๋ฐฑ์—”๋“œ, ๋ชจ๋“ˆ, ์•„ํ‹ฐํŒฉํŠธ ๋“ฑ)๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ์œ„์น˜๋ฅผ ์ง€์ •
    โ†’ init ์ดํ›„์— TF_DATA_DIR ๊ฒฝ๋กœ๋ฅผ ์žฌ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ์ถœ๋ ฅ

CH4. ํ”„๋กœ๋ฐ”์ด๋”


  • ํ…Œ๋ผํผ์€ ์ฝ”๋“œ๋กœ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋Œ€์ƒ์„ ํ˜ธ์ถœ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰
  • ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋Œ€์ƒ๋“ค์˜ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์€ ๋ชจ๋‘ ๋‹ค๋ฅด์ง€๋งŒ ์ผ๊ด€๋˜๊ฒŒ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ  โ†’ ํ”„๋กœ๋ฐ”์ด๋”
  • ํ”„๋กœ๋ฐ”์ด๋”๋Š” ํ…Œ๋ผํผ์ด ๊ด€๋ฆฌํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์œ ํ˜•๊ณผ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐ
  • ํ…Œ๋ผํผ์€ ํ”„๋กœ๋ฐ”์ด๋” ์—†์ด๋Š” ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ธํ”„๋ผ์™€ ์„œ๋น„์Šค๋„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค

4-1. ํ”„๋กœ๋ฐ”์ด๋” ๊ตฌ์„ฑ


  • ํ”„๋กœ๋ฐ”์ด๋”์—๋Š” Tier๊ฐ€ ์กด์žฌ
    โ†’ Official (hashicorp๊ฐ€ ๊ด€๋ฆฌ) / Partner (ํŒŒํŠธ๋„ˆ๊ฐ€ ๊ด€๋ฆฌ) / Community (๊ฐœ์ธ) / Archived (๊ด€๋ฆฌ๋˜์ง€ ์•Š์Œ)

๋‹จ์ผ ํ”„๋กœ๋ฐ”์ด๋”์˜ ๋‹ค์ค‘ ์ •์˜

  • ๋‹จ์ผ ํ”„๋กœ๋ฐ”์ด๋”๋ฅผ ๋‹ค์ค‘ ์ •์˜ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ โ†’ ํ”„๋กœ๋ฐ”์ด๋”์— alias๋ฅผ ์„ ์–ธ`
provider "aws" {
  region = "us-west-1"
}

provider "aws" {
  alias  = "seoul"
  region = "ap-northeast-2"
}

resource "aws_instance" "app_server" {
  provider      = aws.seoul
  ami           = "ami-0c9c942bd7bf113a2"
  instance_type = "t3.micro"
}

ํ”„๋กœ๋ฐ”์ด๋” ์„ค์น˜ ๋ฐ ์š”๊ตฌ์‚ฌํ•ญ ์ •์˜

  • terraform init ๋ช…๋ น์„ ํ†ตํ•ด ์ •์˜๋œ ํ”„๋กœ๋ฐ”์ด๋”๋ฅผ ์„ค์น˜ํ•˜๊ฒŒ ๋œ๋‹ค.
  • ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•œ ์ธํ”„๋ผ๋ฅผ ํ•ญ์ƒ ๋™์ผํ•œ ํ”„๋กœ๋ฐ”์ด๋”๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•
    โ†’ terraform ๋ธ”๋Ÿญ์— ํ”„๋กœ๋ฐ”์ด๋” ๋ฒ„์ „์„ ๋ช…์‹œ
    โ†’ .terraform.lock.hcl์„ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ๊ณต์œ 
  • terraform ๋ธ”๋Ÿญ์˜ required_providers ๋ธ”๋Ÿญ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ๋ฐ”์ด๋”๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • required_providers ๋ธ”๋Ÿญ์˜ source์—๋Š” ํ”„๋กœ๋ฐ”์ด๋” ๋‹ค์šด๋กœ๋“œ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜๊ณ , version์—๋Š” ๋ฒ„์ „ ์ œ์•ฝ์„ ๋ช…์‹œํ•œ๋‹ค.

4-2. ํ”„๋กœ๋ฐ”์ด๋” ์—์ฝ”์‹œ์Šคํ…œ


  • ์—์ฝ”์‹œ์Šคํ…œ์„ ์œ„ํ•œ ํ…Œ๋ผํผ ํ†ตํ•ฉ โ†’ ์›Œํฌํ”Œ๋กœ ํŒŒํŠธ๋„ˆ์™€ ์ธํ”„๋ผ ํŒŒํŠธ๋„ˆ
  • ์›Œํฌํ”Œ๋กœ ํŒŒํŠธ๋„ˆ โ†’ ํ…Œ๋ผํผ ์‹คํ–‰๊ณผ ์—ฐ๊ณ„ํ•˜์—ฌ ๋™์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต
  • ์ธํ”„๋ผ ํŒŒํŠธ๋„ˆ โ†’ ์‚ฌ์šฉ์ž๊ฐ€ ๋Œ€์ƒ ํ”Œ๋žซํผ์˜ API๋กœ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ

4-3. ํ”„๋กœ๋ฐ”์ด๋” ๊ฒฝํ—˜ํ•ด๋ณด๊ธฐ


AWS

  • ํšŒ์› ๊ฐ€์ž… โ†’ IAM ์ฝ˜์†” โ†’ ์•ก์„ธ์Šค ํ‚ค ๋ฐœ๊ธ‰ โ†’ ํ…Œ๋ผํผ ์ฝ”๋“œ ์ž‘์„ฑ

Azure

  • UI(์ฝ˜์†”)๋กœ ID์™€ ์‹œํฌ๋ฆฟ ์ทจ๋“ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ํšŒ์› ๊ฐ€์ž… โ†’ Azure Active Directory โ†’ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ๋ก โ†’ client_id์™€ tenant_id ํ™•์ธ
    โ†’ ํด๋ผ์ด์–ธํŠธ ์•”ํ˜ธ ์„ค์ • โ†’ client_secret ํ™•์ธ โ†’ subscription_id ํ™•์ธ โ†’ ์•ก์„ธ์Šค ์ œ์–ด(IAM)์—์„œ ์—ญํ•  ํ• ๋‹น โ†’ ๊ตฌ์„ฑ์›์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋“ฑ๋ก
    โ†’ ํ…Œ๋ผํผ ์ฝ”๋“œ ์ž‘์„ฑ

GCP

  • UI(์ฝ˜์†”)๋กœ ID์™€ ์‹œํฌ๋ฆฟ ์ทจ๋“ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ํšŒ์›๊ฐ€์ž… โ†’ IAM ๋ฐ ๊ด€๋ฆฌ์ž์—์„œ ํ”„๋กœ์ ํŠธ ์„ ํƒ ๋˜๋Š” ์ƒ์„ฑ โ†’ JSON ์œ ํ˜•์˜ ํ‚ค๋ฅผ ๋‹ค์šด๋กœ๋“œ โ†’ ํ…Œ๋ผํผ ์ฝ”๋“œ ์ž‘์„ฑ

Alibaba Cloud

  • UI(์ฝ˜์†”)๋กœ ID์™€ ์‹œํฌ๋ฆฟ ์ทจ๋“ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ํšŒ์›๊ฐ€์ž… โ†’ RAM(Resource Access Management)์—์„œ ์„œ๋ธŒ User ์ƒ์„ฑ โ†’ ์„œ๋ธŒ User์— ๋ฆฌ์†Œ์Šค ๊ด€๋ จ ๊ถŒํ•œ ๋ถ€์—ฌ
    โ†’ RAM์—์„œ AccessKey ID์™€ AccessKey Secret ํ™•์ธ โ†’ ํ…Œ๋ผํผ ์ฝ”๋“œ ์ž‘์„ฑ
๋ฐ˜์‘ํ˜•