Loadingâ€Ļ

āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ…āύāϞāĻžāχāύ HCL / āĻŸā§‡āϰāĻžāĻĢāĻ°ā§āĻŽ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ

āĻŸā§‡āϰāĻžāĻĢāĻ°ā§āĻŽ, āĻĒā§āϝāĻžāĻ•āĻžāϰ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻšāĻžāĻļāĻŋāĻ•āĻ°ā§āĻĒ āϟ⧁āϞāϏ āϏāĻŦāĻžāχ HCL2 āĻ­āĻžāώāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āĻ°ā§‡â€”āĻāĻŦāĻ‚ āϤāĻžāϰāĻž āϏāĻŦāĻžāχ āφāϰāĻ“ āĻ­āĻžāϞ āĻĻ⧇āĻ–āĻžāϝāĻŧ āϝāĻ–āύ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖāĻ­āĻžāĻŦ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāχ HCL āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āφāĻĒāύāĻžāϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻāĻ•āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ āĻĒāĻžāĻ āĻžāϝāĻŧ āϝāĻž āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ, āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚ āĻāĻŦāĻ‚ āϞ⧇āφāωāĻŸā§‡ terraform fmt–āĻ¸ā§āϟāĻžāχāϞ āύāĻŋāϝāĻŧāĻŽ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇, āϤāĻžāϰāĻĒāϰ āϏ⧇āĻŽāĻžāĻ¨ā§āϟāĻŋāĻ•ā§āϏ āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āϰ⧇āϖ⧇ āύāϰāĻŽāĻžāϞāĻžāχāϜāĻĄ HCL2 āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰ⧇āĨ¤

āĻŽā§‚āϞ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • āĻŸā§‡āϰāĻžāĻĢāĻ°ā§āĻŽ-āĻ¸ā§āϟāĻžāχāϞ āĻŦā§āϞāĻ•, āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ, āϞāĻŋāĻ¸ā§āϟ/āĻŽā§āϝāĻžāĻĒ āĻāĻŦāĻ‚ āĻšā§‡āϰ⧇āĻĄāϕ⧇āϰ āϜāĻ¨ā§āϝ HCL2-āϏāĻšā§‡āϤāύ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚
  • =, āĻ•āĻŽāĻž, āĻŦā§āϰ⧇āϏ āĻāĻŦāĻ‚ āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āĻŦā§āϞāϕ⧇āϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻāĻŦāĻ‚ āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚
  • āĻĒāĻĄāĻŧāĻžāϰ āϏ⧁āĻŦāĻŋāϧāĻžāϰ āϜāĻ¨ā§āϝ āϝ⧇āĻ–āĻžāύ⧇ āϏāĻŽā§āĻ­āĻŦ āĻ•āĻŽā§‡āĻ¨ā§āϟ āĻāĻŦāĻ‚ āχāĻšā§āĻ›āĻžāĻ•ā§ƒāϤ āĻŦā§āĻ˛ā§āϝāĻžāĻ‚āĻ• āϞāĻžāχāύ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇
  • .tf, .hcl, HCL-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• .tfvars āĻāĻŦāĻ‚ āĻĒā§āϝāĻžāĻ•āĻžāϰ .pkr.hcl āĻĢāĻžāχāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇
  • āχāĻĄā§‡āĻŽā§āĻĒā§‹āĻŸā§‡āĻ¨ā§āϟ āφāωāϟāĻĒ⧁āϟ: āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āφāĻŦāĻžāϰ āϚāĻžāϞāĻžāϞ⧇ āĻāĻ•āχ āĻĢāϞāĻžāĻĢāϞ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ
  • āĻ¨ā§āϝ⧂āύāϤāĻŽ āϏāĻžāϰāĻĢ⧇āϏ āĻāϰāĻŋāϝāĻŧāĻž: āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• "āĻĢāϰāĻŽā§āϝāĻžāϟ" āĻ…ā§āϝāĻžāĻ•āĻļāύ, āϤāĻ°ā§āĻ• āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϕ⧋āύ⧋ āĻ¸ā§āϟāĻžāχāϞ āύāĻŦ āύ⧇āχ
  • āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāĻž āĻĢāϞāĻžāĻĢāϞ āĻāĻĄāĻŋāϟāϰ āĻĨ⧇āϕ⧇ āĻāĻ•-āĻ•ā§āϞāĻŋāĻ• āĻ•āĻĒāĻŋ āĻŦāĻž āĻĄāĻžāωāύāϞ⧋āĻĄ
  • āĻāĻ•āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϏāĻžāĻ°ā§āĻ­āĻžāϰ-āĻŦā§āϝāĻžāĻ•āĻĄ āĻĒā§āϰāϏ⧇āϏāĻŋāĻ‚ — āĻĻā§āϰ⧁āϤ āĻĢāĻŋāĻ•ā§āϏ⧇āϰ āϜāĻ¨ā§āϝ āĻĻ⧁āĻ°ā§āĻĻāĻžāĻ¨ā§āϤ; āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āϕ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āϞ⧋āĻ•āĻžāϞ CLI āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧁āύ

🔧 āĻ•āĻŋāĻ­āĻžāĻŦ⧇ HCL āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ for hcl-formatter

1

ā§§. āφāĻĒāύāĻžāϰ āϕ⧋āĻĄ āĻĒ⧇āĻ¸ā§āϟ āĻŦāĻž āĻĄā§āϰāĻĒ āĻ•āϰ⧁āύ

āφāĻĒāύāĻžāϰ HCL/Terraform āĻĢāĻžāχāϞ (.tf, HCL-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• .tfvars, .hcl, .pkr.hcl, āχāĻ¤ā§āϝāĻžāĻĻāĻŋ) āϖ⧁āϞ⧇ āĻāĻĄāĻŋāϟāϰ⧇ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰ⧁āύ, āĻ…āĻĨāĻŦāĻž āφāĻĒāύāĻžāϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ āϏāĻžāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāϞ⧇ āĻĢāĻžāχāϞāϟāĻŋ āĻĄā§āϰāĻĒ āĻ•āϰ⧁āύāĨ¤

2

⧍. "āĻĢāϰāĻŽā§āϝāĻžāϟ" āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύ

āĻĢāϰāĻŽā§āϝāĻžāϟ āĻŦāĻžāϟāύ⧇ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧁āύāĨ¤ āφāĻĒāύāĻžāϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻāĻ•āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡ āĻĒā§āϰ⧇āϰāĻŋāϤ āĻšāϝāĻŧ āϝāĻž āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ, āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚ āĻāĻŦāĻ‚ āϞ⧇āφāωāĻŸā§‡ terraform fmt-āĻ¸ā§āϟāĻžāχāϞ āύāĻŋāϝāĻŧāĻŽ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇, āϤāĻžāϰāĻĒāϰ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāĻž HCL2 āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤

3

ā§Š. āĻĒāĻ°ā§āϝāĻžāϞ⧋āϚāύāĻž, āĻ•āĻĒāĻŋ āĻŦāĻž āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧁āύ

āĻāĻĄāĻŋāϟāϰ⧇ āĻĢāϞāĻžāĻĢāϞ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ, āϤāĻžāϰāĻĒāϰ āĻāϟāĻŋāϕ⧇ āφāĻĒāύāĻžāϰ IDE-āϤ⧇ āĻ•āĻĒāĻŋ āĻ•āϰ⧁āύ āĻ…āĻĨāĻŦāĻž āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāĻž āĻĢāĻžāχāϞ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧇ āφāĻĒāύāĻžāϰ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋāϤ⧇ āĻ•āĻŽāĻŋāϟ āĻ•āϰ⧁āύāĨ¤

āĻĒā§āϰāϝ⧁āĻ•ā§āϤāĻŋāĻ—āϤ āĻŦāĻŋāĻŦāϰāĻŖ

āĻāĻ•ā§āϏāĻŋāĻ•āĻŋāωāĻļāύ āĻŽāĻĄā§‡āϞ

āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰāϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ-āĻŦā§āϝāĻžāĻ•āĻĄ āĻāĻŦāĻ‚ HCL2-āĻāϰ āϜāĻ¨ā§āϝ terraform fmt-āĻ¸ā§āϟāĻžāχāϞ āϞ⧇āφāωāϟ āύāϰāĻŽāĻžāϞāĻžāχāĻœā§‡āĻļāύ āĻ…āύ⧁āĻ•āϰāĻŖ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āĻĻāĻŋāĻ•āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ
āĻŽā§‹āĻĄāϏāĻžāĻ°ā§āĻ­āĻžāϰ-āĻŦā§āϝāĻžāĻ•āĻĄ (āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ WASM āύ⧇āχ)
āĻ¸ā§āϕ⧋āĻĒāĻšā§‹āϝāĻŧāĻžāχāϟāĻ¸ā§āĻĒ⧇āϏ, āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ, āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚, āĻŦ⧇āϏāĻŋāĻ• āϞ⧇āφāωāϟ
āĻĒ⧁āύāĻ°ā§āĻŦāĻŋāĻ¨ā§āϝāĻžāϏāϰāĻŋāϏ⧋āĻ°ā§āϏ āĻŦāĻž āĻŦā§āϞāϕ⧇āϰ āϏāĻŋāĻŽā§āϝāĻžāĻ¨ā§āϟāĻŋāĻ• āĻĒ⧁āύāĻ°ā§āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ āύ⧇āχ
āĻ…āĻĒāĻļāύāϕ⧋āύ⧋āϟāĻŋāχ āύāϝāĻŧ — āĻĒā§‚āĻ°ā§āĻŦāĻžāĻ­āĻžāϏāϝ⧋āĻ—ā§āϝ āφāωāϟāĻĒ⧁āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āĻ• āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ…ā§āϝāĻžāĻ•āĻļāύ
āϏ⧀āĻŽāĻžāĻĒā§āϰāĻžāϝāĻŧ ā§§-⧍ MB āχāύāĻĒ⧁āϟ, ~⧍ā§ĢāϏ⧇āϕ⧇āĻ¨ā§āĻĄ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϟāĻžāχāĻŽāφāωāϟ (āϟāĻŋāωāύāĻŋāĻ‚āϝāĻŧ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞ)
āϧāĻžāϰāĻŖāĻ…āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻĒā§āϰāϏ⧇āϏāĻŋāĻ‚ — āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāĻžāϰ āĻĒāϰ āχāύāĻĒ⧁āϟ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰāĻž āĻšāϝāĻŧ
āϝ⧇āϕ⧋āύ⧋ āĻ…āύāϞāĻžāχāύ āϟ⧁āϞ⧇āϰ āĻŽāϤ⧋, āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āϏāĻŋāĻ•ā§āϰ⧇āϟ āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰāĻž āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϚāϞ⧁āύāĨ¤ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āϕ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ terraform fmt āĻŦāĻž packer fmt āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤

āĻ­āĻžāώāĻž āĻ•āĻ­āĻžāϰ⧇āϜ

Terraform āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ HashiCorp āϟ⧁āϞ āϜ⧁āĻĄāĻŧ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āϏāĻžāϧāĻžāϰāĻŖ HCL2 āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāωāĻĻāĻžāĻšāϰāĻŖāύ⧋āϟ
āĻŦā§āϞāĻ•resource, variable, output, module, locals, job, taskāύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āĻŦā§āϞāĻ• āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ
āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟname = "web", count = 2= āĻāϰ āϚāĻžāϰāĻĒāĻžāĻļ⧇ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟāϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚ āύāϰāĻŽāĻžāϞāĻžāχāϜ āĻ•āϰāĻž āĻšāϝāĻŧ
āĻ•āĻžāϞ⧇āĻ•āĻļāύ[1, 2, 3], { key = value }āϤāĻžāϞāĻŋāĻ•āĻž āĻāĻŦāĻ‚ āĻŽāĻžāύāϚāĻŋāĻ¤ā§āϰ/āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻ…āĻ­āĻŋāĻ¨ā§āύ āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ
āĻšā§‡āϰ⧇āĻĄāĻ•ā§āϏ<<-EOF ... EOFāĻŽāĻžāĻ°ā§āĻ•āĻžāϰ āϏāĻ‚āϰāĻ•ā§āώāĻŋāϤ; āϏāĻŽā§āĻ­āĻŦ āĻšāϞ⧇ āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
āĻŽāĻ¨ā§āϤāĻŦā§āϝ# āĻāĻŦāĻ‚ // āĻ¸ā§āϟāĻžāχāϞ⧇āϰ āĻŽāĻ¨ā§āϤāĻŦā§āϝāωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻāĻŦāĻ‚ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āϏāĻŽā§āĻ­āĻŦ āĻšāϞ⧇ āϰāĻžāĻ–āĻž āĻšāϝāĻŧ⧇āϛ⧇

āĻ•ā§āώ⧁āĻĻā§āϰ āĻĒā§‚āĻ°ā§āĻŦāĻžāĻĒāϰ

āĻāĻ•āϟāĻŋ āĻŸā§‡āϰāĻžāĻĢāĻ°ā§āĻŽ āϰāĻŋāϏ⧋āĻ°ā§āϏ⧇ āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻāĻŦāĻ‚ āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚ āĻ•ā§āϞāĻŋāύāφāĻĒ⧇āϰ āĻāĻ•āϟāĻŋ āϛ⧋āϟ āωāĻĻāĻžāĻšāϰāĻŖāĨ¤

# āĻĒā§‚āĻ°ā§āĻŦ⧇
resource "aws_s3_bucket" "b"{bucket="demo"
  tags={Name="demo"}}

# āĻĒāϰ⧇
resource "aws_s3_bucket" "b" {
  bucket = "demo"

  tags = {
    Name = "demo"
  }
}
āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ: āφāχāĻĄā§‡āĻ¨ā§āϟāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ, āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ āĻāĻŦāĻ‚ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻĨāĻžāϕ⧇āĨ¤

āĻ¤ā§āϰ⧁āϟāĻŋ āĻ“ āĻĒā§āϰāĻžāĻ¨ā§āϤāĻŋāĻ• āĻ•ā§āώ⧇āĻ¤ā§āϰ

āϝāĻĻāĻŋ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϝāĻŧ āĻŦāĻž āĻ¤ā§āϰ⧁āϟāĻŋ āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ, āϤāĻŦ⧇ āĻāϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ HCL2 āχāύāĻĒ⧁āĻŸā§‡ āĻĒāĻžāĻ°ā§āϏāĻŋāĻ‚ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āĻ•āĻžāϰāϪ⧇ āĻšāϝāĻŧāĨ¤

āϞāĻ•ā§āώāĻŖāϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āĻ•āĻžāϰāĻŖāĻ•āĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŦ⧇āύ
āϕ⧋āύ āφāωāϟāĻĒ⧁āϟ āύ⧇āχ / āĻĒāĻžāĻ°ā§āϏ āĻ¤ā§āϰ⧁āϟāĻŋāĻ…āĻŦāĻ¨ā§āϧ āĻŦāĻ¨ā§āϧāύ⧀, āĻŦāĻ¨ā§āϧāĻ• āĻŦāĻž āĻĒā§āϰāĻĨāĻŽ āĻŦāĻ¨ā§āϧāύ⧀āĻŽāĻŋāϞ⧇ āϝāĻžāĻ“āϝāĻŧāĻž { }, [ ], ( ) āĻœā§‹āĻĄāĻŧāĻž āĻ—āĻŖāύāĻž āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϏāĻŽāĻ¸ā§āϤ āĻŦā§āϞāĻ• āĻŦāĻ¨ā§āϧ āĻ•āϰ⧁āύ
āĻšā§‡āϰ⧇āĻĄāĻ•ā§āϏ āϏāĻŽāĻ¸ā§āϝāĻžāĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻŦāĻž āĻŽāĻŋāϞāĻŦāĻŋāĻšā§€āύ āϟāĻžāϰāĻŽāĻŋāύ⧇āϟāϰāύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇ EOF-āĻāϰ āĻŽāϤ⧋ āĻŽāĻžāĻ°ā§āĻ•āĻžāϰ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āϞāĻžāχāύ⧇ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āϰāϝāĻŧ⧇āϛ⧇
āĻŽāĻŋāĻļā§āϰ āĻļ⧈āϞ⧀āĻŸā§āϝāĻžāĻŦ/āĻ¸ā§āĻĒ⧇āϏ āĻŦāĻž āωāĻĻāĻ­ā§āϰāĻžāĻ¨ā§āϤ āĻ…āĻ•ā§āώāϰāχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻ•āϰ⧁āύ, āωāĻĻāĻ­ā§āϰāĻžāĻ¨ā§āϤ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻ…āĻ•ā§āώāϰ āϏāϰāĻžāύ
.tfvars āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤāĻŋJSON āĻŦāύāĻžāĻŽ HCL āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ*.tfvars.json āĻĢāĻžāχāϞ⧇āϰ āϜāĻ¨ā§āϝ JSON āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āĻŦāĻž terraform fmt āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ

āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϞāĻžāχāύ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ

āĻĻ⧈āύāĻ¨ā§āĻĻāĻŋāύ āχāύāĻĢā§āϰāĻžāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āĻ…ā§āϝāĻžāϜ āϕ⧋āĻĄ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋āϰ āϜāĻ¨ā§āϝ, āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āĻāĻŦāĻ‚ CI-āϤ⧇ āĻ…āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ, āĻāĻŦāĻ‚ āĻĻā§āϰ⧁āϤ āĻ…ā§āϝāĻžāĻĄ-āĻšāĻ• āĻ•ā§āϞāĻŋāύāφāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻāχ āĻ…āύāϞāĻžāχāύ āϟ⧁āϞāϟāĻŋ āϰāĻžāϖ⧁āύāĨ¤

macOS / Linux

āĻŸā§‡āϰāĻžāĻĢāĻ°ā§āĻŽ: āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰ⧁āύ

terraform fmt

āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ .tf āĻāĻŦāĻ‚ HCL-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• .tfvars āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϞāĻŋāϖ⧇āĨ¤

āĻŸā§‡āϰāĻžāĻĢāĻ°ā§āĻŽ: āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋāĻŽā§‚āϞāĻ• CI āĻšā§‡āĻ• (āϞāĻŋāĻ–āĻŦ⧇āύ āύāĻž)

terraform fmt -check -recursive

āϝāĻĻāĻŋ āϕ⧋āύ⧋ āĻĢāĻžāχāϞ⧇āϰ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϝāĻŧ āϤāĻŦ⧇ āύāύ-āϜāĻŋāϰ⧋ āĻĨ⧇āϕ⧇ āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ āĻ•āϰ⧇ — CI āĻāĻŦāĻ‚ āĻĒā§āϰāĻŋ-āĻ•āĻŽāĻŋāϟ āĻšā§āϕ⧇āϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧁āĻ•ā§āϤāĨ¤

āĻĒā§āϝāĻžāĻ•āĻžāϰ: āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰ⧁āύ

packer fmt path/to/template.pkr.hcl

āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒā§āϝāĻžāĻ•āĻžāϰ HCL āĻĢāĻžāχāϞāϟāĻŋ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰ⧇āĨ¤

āωāχāĻ¨ā§āĻĄā§‹āϜ (PowerShell)

āϏāĻŽāĻ¸ā§āϤ Terraform āĻĢāĻžāχāϞ āĻĒ⧁āύāϰāĻžāĻŦ⧃āĻ¤ā§āϤāĻŋāĻŽā§‚āϞāĻ•āĻ­āĻžāĻŦ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰ⧁āύ

Get-ChildItem -Recurse -Filter *.tf | ForEach-Object { terraform fmt $_.FullName }

āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϰ āĻ…āϧ⧀āύ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻž āĻĒā§āϰāϤāĻŋāϟāĻŋ .tf āĻĢāĻžāχāϞ⧇ terraform fmt āϚāĻžāϞāĻžāϝāĻŧāĨ¤

CI-āĻ¸ā§āϟāĻžāχāϞ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻšā§‡āĻ•

terraform fmt -check -recursive

āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻĒ⧁āϰāύ⧋ āĻšāϝāĻŧ⧇ āϗ⧇āϞ⧇ āĻŦāĻŋāĻ˛ā§āĻĄ āĻĒāĻžāχāĻĒāϞāĻžāχāύ⧇ āĻŦā§āϝāĻ°ā§āĻĨ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤

GitHub Actions

āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϞ⧇ āĻŦāĻŋāĻ˛ā§āĻĄ āĻŦā§āϝāĻ°ā§āĻĨ āĻ•āϰ⧁āύ

steps:
  - uses: hashicorp/setup-terraform@v3
  - run: terraform fmt -check -recursive

āϕ⧋āύ⧋ Terraform āĻĢāĻžāχāϞ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟ āύāĻž āĻšāϞ⧇ āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻĢā§āϞ⧋ āĻŦāĻ¨ā§āϧ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤

āĻĒ⧁āϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āĻŸā§‡ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ (āϐāĻšā§āĻ›āĻŋāĻ•)

steps:
  - run: terraform fmt -recursive
  - run: git diff --quiet || (git config user.name "bot" && git config user.email "bot@example" && git commit -am "chore: terraform fmt" && git push)

terraform fmt āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻ•āĻŽāĻŋāϟ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻĢāĻŋāϰ⧇ āĻĒ⧁āĻļ āĻ•āϰ⧇āĨ¤

āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŋāϤ āĻŦāĻž āĻ—ā§‹āĻĒāύ⧀āϝāĻŧ āχāύāĻĢā§āϰāĻžāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āϕ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ, āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ CLI āϟ⧁āϞāϏ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻ…āύāϞāĻžāχāύ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ⧇ āĻĢāĻžāχāϞ āĻĒāĻžāĻ āĻžāύ⧋āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ CI-āϤ⧇ `terraform fmt -check -recursive` āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύāĨ¤

āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ• āĻĒā§āϰāϝāĻŧā§‹āĻ—

PR āĻĒāϰāĻŋāĻšā§āĻ›āĻ¨ā§āύāϤāĻž āĻ“ āϰāĻŋāĻ­āĻŋāω

āĻšā§‹āϝāĻŧāĻžāχāϟāĻ¸ā§āĻĒ⧇āϏ āĻāĻŦāĻ‚ āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ• āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āϰāĻŋāĻ­āĻŋāωāϝāĻŧāĻžāϰāϰāĻž āĻĒā§āϰāĻ•ā§ƒāϤ āχāύāĻĢā§āϰāĻžāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

  • āĻĒ⧁āϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āĻ–ā§‹āϞāĻžāϰ āφāϗ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āϚāĻžāϞāĻžāύ
  • Terraform āϰāĻŋāĻ­āĻŋāωāϤ⧇ āϛ⧋āϟāĻ–āĻžāĻŸā§‹ āĻ¸ā§āϟāĻžāχāϞ āĻ•āĻŽā§‡āĻ¨ā§āϟ āĻšā§āϰāĻžāϏ āĻ•āϰ⧁āύ
  • git diffs āϛ⧋āϟ āĻāĻŦāĻ‚ āĻ…āĻ°ā§āĻĨāĻĒā§‚āĻ°ā§āĻŖ āϰāĻžāϖ⧁āύ

Terraform āĻŽāĻĄāĻŋāωāϞ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ

āĻĻāϞ, āϰāĻŋāĻĒā§‹ āĻāĻŦāĻ‚ āϰ⧇āϜāĻŋāĻ¸ā§āĻŸā§āϰāĻŋ āϜ⧁āĻĄāĻŧ⧇ āĻŽāĻĄāĻŋāωāϞāϗ⧁āϞāĻŋ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āϰāĻžāϖ⧁āύāĨ¤

  • āĻļ⧇āϝāĻŧāĻžāĻ°ā§āĻĄ āĻŽāĻĄāĻŋāωāϞ⧇ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻāĻŦāĻ‚ āφāωāϟāĻĒ⧁āϟ āĻŦā§āϞāĻ• āϏāĻžāϰāĻŋāĻŦāĻĻā§āϧ āĻ•āϰ⧁āύ
  • āωāĻĻāĻžāĻšāϰāĻŖ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• āĻšāĻžāωāϏ āĻ¸ā§āϟāĻžāχāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻŽā§‡āϞ⧇ āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ

CI āϗ⧇āϟāĻ•āĻŋāĻĒāĻŋāĻ‚

āϏāĻŽāϝāĻŧ⧇āϰ āϏāĻžāĻĨ⧇ āĻ¸ā§āϟāĻžāχāϞ āĻĄā§āϰāĻŋāĻĢā§āϟ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰāϤ⧇ CI-āϤ⧇ terraform fmt āĻšā§‡āĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤

  • `terraform fmt -check -recursive` āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ§ā§āϝāϤāĻžāĻŽā§‚āϞāĻ• āĻĒāĻžāχāĻĒāϞāĻžāχāύ āϧāĻžāĻĒ āĻšāĻŋāϏāĻžāĻŦ⧇ āϝ⧋āĻ— āĻ•āϰ⧁āύ
  • āϏāĻŽāĻ¸ā§āϤ .tf āĻĢāĻžāχāϞ āĻĢāϰāĻŽā§āϝāĻžāϟ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻŽāĻžāĻ°ā§āϜ āĻŦā§āϞāĻ• āĻ•āϰ⧁āύ

āĻ…āύāĻŦā§‹āĻ°ā§āĻĄāĻŋāĻ‚ āĻ“ āĻĄāĻ•ā§āϏ

āĻĒāĻžāĻ āϝ⧋āĻ—ā§āϝ āωāĻĻāĻžāĻšāϰāĻŖ āύāϤ⧁āύ āĻĻāϞ⧇āϰ āϏāĻĻāĻ¸ā§āϝāĻĻ⧇āϰ āĻĻā§āϰ⧁āϤ Terraform āĻāĻŦāĻ‚ āĻšāĻžāωāϏ āĻ¸ā§āϟāĻžāχāϞ āωāĻ­āϝāĻŧāχ āĻļāĻŋāĻ–āϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇āĨ¤

  • README-āϤ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖāĻ­āĻžāĻŦ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāĻž āĻ¸ā§āύāĻŋāĻĒ⧇āϟ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧁āύ
  • āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ Terraform āĻĒā§āϰāĻļāĻŋāĻ•ā§āώāĻŖ āϏ⧇āĻļāύ⧇ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ

❓ Frequently Asked Questions

🔒āφāĻŽāĻžāϰ āϕ⧋āĻĄ āĻ•āĻŋ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāĻž āĻšāϝāĻŧ?

āύāĻžāĨ¤ āĻāχ HCL āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰ-āĻŦā§āϝāĻžāĻ•āĻĄ: āφāĻĒāύāĻžāϰ āχāύāĻĒ⧁āϟ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻāĻ¨ā§āĻĄāĻĒāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡ āĻĒāĻžāĻ āĻžāύ⧋ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻĢāϞāĻžāĻĢāϞ HCL āφāĻĒāύāĻžāϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āĻĢ⧇āϰāϤ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āĻŦāĻž āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŋāϤ āχāύāĻĢā§āϰāĻžāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āϕ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ, āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ `terraform fmt` (āĻŦāĻž `packer fmt`) āϚāĻžāϞāĻžāύ⧋ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧁āύāĨ¤

đŸ›Ąī¸āφāĻŽāĻŋ āĻ•āĻŋ āĻāĻ–āĻžāύ⧇ āĻ—ā§‹āĻĒāύ āϤāĻĨā§āϝ āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ?

āφāĻŽāϰāĻž āĻĻ⧃āĻĸāĻŧāĻ­āĻžāĻŦ⧇ āϏ⧁āĻĒāĻžāϰāĻŋāĻļ āĻ•āϰāĻŋ āϝ⧇ āφāĻĒāύāĻŋ āϕ⧋āύ⧋ āĻ…āύāϞāĻžāχāύ āϟ⧁āϞ⧇ āĻĒā§āϰ⧋āĻĄāĻžāĻ•āĻļāύ āϏāĻŋāĻ•ā§āϰ⧇āϟ āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰāĻŦ⧇āύ āύāĻžāĨ¤ āϝāĻĻāĻŋāĻ“ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϟāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻāĻŦāĻ‚ āĻ•ā§āώāĻŖāĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻĻā§€āĻ°ā§āϘāĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻŦāĻž āĻ…āĻ¤ā§āϝāĻ¨ā§āϤ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āĻ•ā§āϰ⧇āĻĄā§‡āύāĻļāĻŋāϝāĻŧāĻžāϞāϗ⧁āϞāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻĢāĻžāχāϞ, āϏāĻŋāĻ•ā§āϰ⧇āϟ āĻ¸ā§āĻŸā§‹āϰ āĻŦāĻž CI āĻ­āĻ˛ā§āĻŸā§‡ āϰāĻžāĻ–āĻž āωāϚāĻŋāϤ — āĻŦā§āϰāĻžāωāϜāĻžāϰ āϟ⧁āϞ⧇ āύāϝāĻŧāĨ¤

🧩āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻ•āĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āφāϚāϰāĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇?

āύāĻžāĨ¤ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰāϟāĻŋ āϞ⧇āφāωāĻŸā§‡ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰ⧇: āĻšā§‹āϝāĻŧāĻžāχāϟāĻ¸ā§āĻĒ⧇āϏ, āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻāĻŦāĻ‚ āĻ¸ā§āĻĒ⧇āϏāĻŋāĻ‚āĨ¤ āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻŦā§āϞāĻ•, āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ, āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ āĻāĻŦāĻ‚ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻāĻ•āχ āĻĨāĻžāϕ⧇, āϧāϰ⧇ āύ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ āϝ⧇ āĻŽā§‚āϞ HCL āĻŦ⧈āϧ āĻ›āĻŋāϞāĨ¤

📄āφāĻŽāĻŋ āĻ•āĻŋ .tfvars āĻĢāĻžāχāϞ āĻĢāϰāĻŽā§āϝāĻžāϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ?

āĻšā§āϝāĻžāρ, āϝāϤāĻ•ā§āώāĻŖ .tfvars āĻĢāĻžāχāϞ HCL āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ Terraform `.tfvars.json` āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ JSON-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāĻ“ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇; āϏ⧇āϗ⧁āϞ⧋ JSON āύāĻŋāϝāĻŧāĻŽ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ JSON āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āĻŦāĻž `terraform fmt` āύāĻŋāĻœā§‡āχ āĻĻā§āĻŦāĻžāϰāĻž āĻ­āĻžāϞ⧋āĻ­āĻžāĻŦ⧇ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

âš™ī¸āĻāϟāĻŋ `terraform fmt` āĻĨ⧇āϕ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āφāϞāĻžāĻĻāĻž?

`terraform fmt` āĻšāϞ Terraform āĻāϰ āϏāĻžāĻĨ⧇ āĻļāĻŋāĻĒ āĻ•āϰāĻž āĻ•ā§āϝāĻžāύ⧋āύāĻŋāĻ•ā§āϝāĻžāϞ āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ āĻāĻŦāĻ‚ CI-āĻāϰ āϜāĻ¨ā§āϝ āφāĻĻāĻ°ā§āĻļāĨ¤ āĻāχ āĻ“āϝāĻŧ⧇āĻŦ āϟ⧁āϞāϟāĻŋ āĻĻā§āϰ⧁āϤ, āĻ…ā§āϝāĻžāĻĄ-āĻšāĻ• āĻ•ā§āϞāĻŋāύāφāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āϝāĻ–āύ āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ CLI āĻšāĻžāϤ⧇ āύāĻž āĻĨāĻžāϕ⧇ āĻŦāĻž āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āĻāĻ•āϟāĻŋ āϛ⧋āϟ āĻ¸ā§āύāĻŋāĻĒ⧇āϟ āϟāĻŋāĻĄāĻŋ āφāĻĒ āĻ•āϰāϤ⧇ āϚāĻžāύāĨ¤

đŸ§¯āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āϕ⧇āύ āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϞ⧋?

āĻ…āϧāĻŋāĻ•āĻžāĻ‚āĻļ āĻŦā§āϝāĻ°ā§āĻĨāϤāĻž āĻĒāĻžāĻ°ā§āϏ āĻ¤ā§āϰ⧁āϟāĻŋ: āφāύāĻ•ā§āϞ⧋āϜāĻĄ āĻŦā§āϰ⧇āϏ āĻŦāĻž āĻŦā§āĻ°ā§āϝāĻžāϕ⧇āϟ, āĻŦāĻŋāĻ•ā§ƒāϤ āĻšā§‡āϰ⧇āĻĄāĻ•ā§āϏ, āĻŦāĻž JSON-āĻ¸ā§āϟāĻžāχāϞ tfvars āĻāϰ āϏāĻžāĻĨ⧇ HCL āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āĻŽāĻŋāĻļā§āϰāĻŖāĨ¤ āĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰāĻžāϞ āχāĻ¸ā§āϝ⧁ āĻ āĻŋāĻ• āĻ•āϰ⧁āύ (āĻŦāĻž āϏāĻ āĻŋāĻ• āĻĄāĻžāϝāĻŧāĻžāϞ⧇āĻ•ā§āϟ/āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ) āĻāĻŦāĻ‚ āφāĻŦāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧁āύāĨ¤

Pro Tips

CI Tip

āĻŦāĻĄāĻŧ āχāύāĻĢā§āϰāĻžāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋāϤ⧇ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻĄā§āϰāĻŋāĻĢā§āϟ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰāϤ⧇ CI-āϤ⧇ `terraform fmt -check -recursive` āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύāĨ¤

Best Practice

āĻ…āύāϞāĻžāχāύ āϟ⧁āϞ⧇ āϏāĻŋāĻ•ā§āϰ⧇āϟ āĻŦāĻž āĻ¸ā§āĻŸā§‡āϟ-āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻĄā§‡āϟāĻž āĻĒ⧇āĻ¸ā§āϟ āĻ•āϰāĻž āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϚāϞ⧁āύ; āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āωāĻĻāĻžāĻšāϰāĻŖ āĻ¸ā§āϝāĻžāύāĻŋāϟāĻžāχāϜāĻĄ āϰāĻžāϖ⧁āύ āĻāĻŦāĻ‚ āφāϏāϞ āχāύāĻĢā§āϰāĻžāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āϕ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ CLI āĻĢāϰāĻŽā§āϝāĻžāϟāĻžāϰ āϚāĻžāϞāĻžāύāĨ¤

Best Practice

āφāĻĒāύāĻžāϰ āĻāĻĄāĻŋāϟāϰ⧇ āĻŸā§āϰ⧇āχāϞāĻŋāĻ‚ āύāĻŋāωāϞāĻžāχāύ āĻāĻŦāĻ‚ āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āύāϰāĻŽāĻžāϞāĻžāχāϜ āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ Terraform āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āϜ⧁āĻĄāĻŧ⧇ āĻ•ā§āϞāĻŋāύ, āĻ¸ā§āĻŸā§‡āĻŦāϞ āĻĄāĻŋāĻĢ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤

Best Practice

āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻŋ-āĻ•āĻŽāĻŋāϟ āĻšā§āĻ• āϝ⧋āĻ— āĻ•āϰ⧁āύ āϝāĻž `terraform fmt` āϚāĻžāϞāĻžāϝāĻŧ āϝāĻžāϤ⧇ āĻĒ⧁āϞ āϰāĻŋāϕ⧋āϝāĻŧ⧇āĻ¸ā§āϟ āφāϗ⧇ āĻĨ⧇āϕ⧇āχ āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡āĻĄ āφāϏ⧇ āĻāĻŦāĻ‚ āϰāĻŋāĻ­āĻŋāω āĻ•āĻĨā§‹āĻĒāĻ•āĻĨāύ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ āĻāĻŦāĻ‚ āĻā§āρāĻ•āĻŋāϤ⧇ āĻĢā§‹āĻ•āĻžāϏ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

Additional Resources

Other Tools