āĻŽā§āϞ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ
- āĻā§āϰāĻžāĻĢāϰā§āĻŽ-āϏā§āĻāĻžāĻāϞ āĻŦā§āϞāĻ, āĻ ā§āϝāĻžāĻā§āϰāĻŋāĻŦāĻŋāĻāĻ, āϞāĻŋāϏā§āĻ/āĻŽā§āϝāĻžāĻĒ āĻāĻŦāĻ āĻšā§āϰā§āĻĄāĻā§āϰ āĻāύā§āϝ HCL2-āϏāĻā§āϤāύ āĻĢāϰāĻŽā§āϝāĻžāĻāĻŋāĻ
- =, āĻāĻŽāĻž, āĻŦā§āϰā§āϏ āĻāĻŦāĻ āύā§āϏā§āĻā§āĻĄ āĻŦā§āϞāĻā§āϰ āĻāĻžāϰāĻĒāĻžāĻļā§ āϏāĻžāĻŽāĻā§āĻāϏā§āϝāĻĒā§āϰā§āĻŖ āĻāύā§āĻĄā§āύā§āĻā§āĻļāύ āĻāĻŦāĻ āϏā§āĻĒā§āϏāĻŋāĻ
- āĻĒāĻĄāĻŧāĻžāϰ āϏā§āĻŦāĻŋāϧāĻžāϰ āĻāύā§āϝ āϝā§āĻāĻžāύ⧠āϏāĻŽā§āĻāĻŦ āĻāĻŽā§āύā§āĻ āĻāĻŦāĻ āĻāĻā§āĻāĻžāĻā§āϤ āĻŦā§āϞā§āϝāĻžāĻāĻ āϞāĻžāĻāύ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§
- .tf, .hcl, HCL-āĻāĻŋāϤā§āϤāĻŋāĻ .tfvars āĻāĻŦāĻ āĻĒā§āϝāĻžāĻāĻžāϰ .pkr.hcl āĻĢāĻžāĻāϞā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰā§
- āĻāĻĄā§āĻŽā§āĻĒā§āĻā§āύā§āĻ āĻāĻāĻāĻĒā§āĻ: āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ āĻāĻŦāĻžāϰ āĻāĻžāϞāĻžāϞ⧠āĻāĻāĻ āĻĢāϞāĻžāĻĢāϞ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ
- āύā§āϝā§āύāϤāĻŽ āϏāĻžāϰāĻĢā§āϏ āĻāϰāĻŋāϝāĻŧāĻž: āĻāĻāĻāĻŋ āĻāĻāĻ "āĻĢāϰāĻŽā§āϝāĻžāĻ" āĻ ā§āϝāĻžāĻāĻļāύ, āϤāϰā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻā§āύ⧠āϏā§āĻāĻžāĻāϞ āύāĻŦ āύā§āĻ
- āĻĢāϰāĻŽā§āϝāĻžāĻ āĻāϰāĻž āĻĢāϞāĻžāĻĢāϞ āĻāĻĄāĻŋāĻāϰ āĻĨā§āĻā§ āĻāĻ-āĻā§āϞāĻŋāĻ āĻāĻĒāĻŋ āĻŦāĻž āĻĄāĻžāĻāύāϞā§āĻĄ
- āĻāĻāĻāĻŋ āϏā§āϰāĻā§āώāĻŋāϤ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāĻžāϰā§āĻāĻžāϰ-āĻŦā§āϝāĻžāĻāĻĄ āĻĒā§āϰāϏā§āϏāĻŋāĻ â āĻĻā§āϰā§āϤ āĻĢāĻŋāĻā§āϏā§āϰ āĻāύā§āϝ āĻĻā§āϰā§āĻĻāĻžāύā§āϤ; āĻ āϤā§āϝāύā§āϤ āϏāĻāĻŦā§āĻĻāύāĻļā§āϞ āĻā§āĻĄā§āϰ āĻāύā§āϝ āϞā§āĻāĻžāϞ CLI āĻĒāĻāύā§āĻĻ āĻāϰā§āύ
đ§ āĻāĻŋāĻāĻžāĻŦā§ HCL āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ for hcl-formatter
ā§§. āĻāĻĒāύāĻžāϰ āĻā§āĻĄ āĻĒā§āϏā§āĻ āĻŦāĻž āĻĄā§āϰāĻĒ āĻāϰā§āύ
āĻāĻĒāύāĻžāϰ HCL/Terraform āĻĢāĻžāĻāϞ (.tf, HCL-āĻāĻŋāϤā§āϤāĻŋāĻ .tfvars, .hcl, .pkr.hcl, āĻāϤā§āϝāĻžāĻĻāĻŋ) āĻā§āϞ⧠āĻāĻĄāĻŋāĻāϰ⧠āĻāύā§āĻā§āύā§āĻ āĻĒā§āϏā§āĻ āĻāϰā§āύ, āĻ āĻĨāĻŦāĻž āĻāĻĒāύāĻžāϰ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āϏāĻžāĻĒā§āϰā§āĻ āĻāϰāϞ⧠āĻĢāĻžāĻāϞāĻāĻŋ āĻĄā§āϰāĻĒ āĻāϰā§āύāĨ¤
⧍. "āĻĢāϰāĻŽā§āϝāĻžāĻ" āĻā§āϞāĻŋāĻ āĻāϰā§āύ
āĻĢāϰāĻŽā§āϝāĻžāĻ āĻŦāĻžāĻāύ⧠āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤ āĻāĻĒāύāĻžāϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāĻāĻāĻŋ āϏā§āϰāĻā§āώāĻŋāϤ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄā§ āĻĒā§āϰā§āϰāĻŋāϤ āĻšāϝāĻŧ āϝāĻž āĻāύā§āĻĄā§āύā§āĻā§āĻļāύ, āϏā§āĻĒā§āϏāĻŋāĻ āĻāĻŦāĻ āϞā§āĻāĻāĻā§ terraform fmt-āϏā§āĻāĻžāĻāϞ āύāĻŋāϝāĻŧāĻŽ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰā§, āϤāĻžāϰāĻĒāϰ āĻĢāϰāĻŽā§āϝāĻžāĻ āĻāϰāĻž HCL2 āĻĢā§āϰāϤ āĻĻā§āϝāĻŧāĨ¤
ā§Š. āĻĒāϰā§āϝāĻžāϞā§āĻāύāĻž, āĻāĻĒāĻŋ āĻŦāĻž āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰā§āύ
āĻāĻĄāĻŋāĻāϰ⧠āĻĢāϞāĻžāĻĢāϞ āĻĒāϰā§āĻā§āώāĻž āĻāϰā§āύ, āϤāĻžāϰāĻĒāϰ āĻāĻāĻŋāĻā§ āĻāĻĒāύāĻžāϰ IDE-āϤ⧠āĻāĻĒāĻŋ āĻāϰā§āύ āĻ āĻĨāĻŦāĻž āĻĢāϰāĻŽā§āϝāĻžāĻ āĻāϰāĻž āĻĢāĻžāĻāϞ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϤ⧠āĻāĻŽāĻŋāĻ āĻāϰā§āύāĨ¤
āĻĒā§āϰāϝā§āĻā§āϤāĻŋāĻāϤ āĻŦāĻŋāĻŦāϰāĻŖ
āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύ āĻŽāĻĄā§āϞ
āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰ-āĻŦā§āϝāĻžāĻāĻĄ āĻāĻŦāĻ HCL2-āĻāϰ āĻāύā§āϝ terraform fmt-āϏā§āĻāĻžāĻāϞ āϞā§āĻāĻāĻ āύāϰāĻŽāĻžāϞāĻžāĻāĻā§āĻļāύ āĻ āύā§āĻāϰāĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
| āĻĻāĻŋāĻ | āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ |
|---|---|
| āĻŽā§āĻĄ | āϏāĻžāϰā§āĻāĻžāϰ-āĻŦā§āϝāĻžāĻāĻĄ (āĻŦā§āϰāĻžāĻāĻāĻžāϰ⧠WASM āύā§āĻ) |
| āϏā§āĻā§āĻĒ | āĻšā§āϝāĻŧāĻžāĻāĻāϏā§āĻĒā§āϏ, āĻāύā§āĻĄā§āύā§āĻā§āĻļāύ, āϏā§āĻĒā§āϏāĻŋāĻ, āĻŦā§āϏāĻŋāĻ āϞā§āĻāĻāĻ |
| āĻĒā§āύāϰā§āĻŦāĻŋāύā§āϝāĻžāϏ | āϰāĻŋāϏā§āϰā§āϏ āĻŦāĻž āĻŦā§āϞāĻā§āϰ āϏāĻŋāĻŽā§āϝāĻžāύā§āĻāĻŋāĻ āĻĒā§āύāϰā§āĻŦāĻŋāύā§āϝāĻžāϏ āύā§āĻ |
| āĻ āĻĒāĻļāύ | āĻā§āύā§āĻāĻŋāĻ āύāϝāĻŧ â āĻĒā§āϰā§āĻŦāĻžāĻāĻžāϏāϝā§āĻā§āϝ āĻāĻāĻāĻĒā§āĻā§āϰ āĻāύā§āϝ āĻāĻāĻ āĻĢāϰāĻŽā§āϝāĻžāĻ āĻ ā§āϝāĻžāĻāĻļāύ |
| āϏā§āĻŽāĻž | āĻĒā§āϰāĻžāϝāĻŧ ā§§-⧍ MB āĻāύāĻĒā§āĻ, ~⧍ā§ĢāϏā§āĻā§āύā§āĻĄ āϏāĻžāϰā§āĻāĻžāϰ āĻāĻžāĻāĻŽāĻāĻāĻ (āĻāĻŋāĻāύāĻŋāĻāϝāĻŧā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰāĻļā§āϞ) |
| āϧāĻžāϰāĻŖ | āĻ āϏā§āĻĨāĻžāϝāĻŧā§ āĻĒā§āϰāϏā§āϏāĻŋāĻ â āĻĢāϰāĻŽā§āϝāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ āĻāύāĻĒā§āĻ āĻŦāĻžāϤāĻŋāϞ āĻāϰāĻž āĻšāϝāĻŧ |
āĻāĻžāώāĻž āĻāĻāĻžāϰā§āĻ
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 āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰ⧠āĻāĻŦāĻ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĢāϰāĻŽā§āϝāĻžāĻāĻŋāĻ āĻāĻŽāĻŋāĻ āĻŦā§āϰāĻžāĻā§āĻā§ āĻĢāĻŋāϰ⧠āĻĒā§āĻļ āĻāϰā§āĨ¤
āĻŦā§āϝāĻŦāĻšāĻžāϰāĻŋāĻ āĻĒā§āϰāϝāĻŧā§āĻ
PR āĻĒāϰāĻŋāĻā§āĻāύā§āύāϤāĻž āĻ āϰāĻŋāĻāĻŋāĻ
āĻšā§āϝāĻŧāĻžāĻāĻāϏā§āĻĒā§āϏ āĻāĻŦāĻ āĻāύā§āĻĄā§āύā§āĻā§āĻļāύ āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāϰā§āύ āϝāĻžāϤ⧠āϰāĻŋāĻāĻŋāĻāϝāĻŧāĻžāϰāϰāĻž āĻĒā§āϰāĻā§āϤ āĻāύāĻĢā§āϰāĻžāϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ⧠āĻĢā§āĻāĻžāϏ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
- āĻĒā§āϞ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻā§āϞāĻžāϰ āĻāĻā§ āĻĢāϰāĻŽā§āϝāĻžāĻāĻŋāĻ āĻāĻžāϞāĻžāύ
- Terraform āϰāĻŋāĻāĻŋāĻāϤ⧠āĻā§āĻāĻāĻžāĻā§ āϏā§āĻāĻžāĻāϞ āĻāĻŽā§āύā§āĻ āĻšā§āϰāĻžāϏ āĻāϰā§āύ
- git diffs āĻā§āĻ āĻāĻŦāĻ āĻ āϰā§āĻĨāĻĒā§āϰā§āĻŖ āϰāĻžāĻā§āύ
Terraform āĻŽāĻĄāĻŋāĻāϞ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻ
āĻĻāϞ, āϰāĻŋāĻĒā§ āĻāĻŦāĻ āϰā§āĻāĻŋāϏā§āĻā§āϰāĻŋ āĻā§āĻĄāĻŧā§ āĻŽāĻĄāĻŋāĻāϞāĻā§āϞāĻŋ āϏāĻžāĻŽāĻā§āĻāϏā§āϝāĻĒā§āϰā§āĻŖ āϰāĻžāĻā§āύāĨ¤
- āĻļā§āϝāĻŧāĻžāϰā§āĻĄ āĻŽāĻĄāĻŋāĻāϞ⧠āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻāĻŦāĻ āĻāĻāĻāĻĒā§āĻ āĻŦā§āϞāĻ āϏāĻžāϰāĻŋāĻŦāĻĻā§āϧ āĻāϰā§āύ
- āĻāĻĻāĻžāĻšāϰāĻŖ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāĻāĻāĻŋ āĻāĻāĻ āĻšāĻžāĻāϏ āϏā§āĻāĻžāĻāϞā§āϰ āϏāĻžāĻĨā§ āĻŽā§āϞ⧠āϤāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ
CI āĻā§āĻāĻāĻŋāĻĒāĻŋāĻ
āϏāĻŽāϝāĻŧā§āϰ āϏāĻžāĻĨā§ āϏā§āĻāĻžāĻāϞ āĻĄā§āϰāĻŋāĻĢā§āĻ āĻĒā§āϰāϤāĻŋāϰā§āϧ āĻāϰāϤ⧠CI-āϤ⧠terraform fmt āĻā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
- `terraform fmt -check -recursive` āĻāĻāĻāĻŋ āĻŦāĻžāϧā§āϝāϤāĻžāĻŽā§āϞāĻ āĻĒāĻžāĻāĻĒāϞāĻžāĻāύ āϧāĻžāĻĒ āĻšāĻŋāϏāĻžāĻŦā§ āϝā§āĻ āĻāϰā§āύ
- āϏāĻŽāϏā§āϤ .tf āĻĢāĻžāĻāϞ āĻĢāϰāĻŽā§āϝāĻžāĻ āύāĻž āĻšāĻāϝāĻŧāĻž āĻĒāϰā§āϝāύā§āϤ āĻŽāĻžāϰā§āĻ āĻŦā§āϞāĻ āĻāϰā§āύ
āĻ āύāĻŦā§āϰā§āĻĄāĻŋāĻ āĻ āĻĄāĻā§āϏ
āĻĒāĻžāĻ āϝā§āĻā§āϝ āĻāĻĻāĻžāĻšāϰāĻŖ āύāϤā§āύ āĻĻāϞā§āϰ āϏāĻĻāϏā§āϝāĻĻā§āϰ āĻĻā§āϰā§āϤ Terraform āĻāĻŦāĻ āĻšāĻžāĻāϏ āϏā§āĻāĻžāĻāϞ āĻāĻāϝāĻŧāĻ āĻļāĻŋāĻāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤
- README-āϤ⧠āϏāĻžāĻŽāĻā§āĻāϏā§āϝāĻĒā§āϰā§āĻŖāĻāĻžāĻŦā§ āĻĢāϰāĻŽā§āϝāĻžāĻ āĻāϰāĻž āϏā§āύāĻŋāĻĒā§āĻ āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§āύ
- āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ Terraform āĻĒā§āϰāĻļāĻŋāĻā§āώāĻŖ āϏā§āĻļāύ⧠āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ
â Frequently Asked Questions
đāĻāĻŽāĻžāϰ āĻā§āĻĄ āĻāĻŋ āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāĻžāĻŦā§ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāĻž āĻšāϝāĻŧ?
đĄī¸āĻāĻŽāĻŋ āĻāĻŋ āĻāĻāĻžāύ⧠āĻā§āĻĒāύ āϤāĻĨā§āϝ āĻĒā§āϏā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ?
đ§ŠāĻĢāϰāĻŽā§āϝāĻžāĻāĻŋāĻ āĻāĻŋ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāĻāϰāĻŖ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§?
đāĻāĻŽāĻŋ āĻāĻŋ .tfvars āĻĢāĻžāĻāϞ āĻĢāϰāĻŽā§āϝāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ?
JSON-āĻāĻŋāϤā§āϤāĻŋāĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻ āϏāĻŽāϰā§āĻĨāύ āĻāϰā§; āϏā§āĻā§āϞ⧠JSON āύāĻŋāϝāĻŧāĻŽ āĻ
āύā§āϏāϰāĻŖ āĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻāĻŋ JSON āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ āĻŦāĻž `terraform fmt` āύāĻŋāĻā§āĻ āĻĻā§āĻŦāĻžāϰāĻž āĻāĻžāϞā§āĻāĻžāĻŦā§ āĻšā§āϝāĻžāύā§āĻĄā§āϞ āĻāϰāĻž āĻšāϝāĻŧāĨ¤âī¸āĻāĻāĻŋ `terraform fmt` āĻĨā§āĻā§ āĻā§āĻāĻžāĻŦā§ āĻāϞāĻžāĻĻāĻž?
đ§¯āĻĢāϰāĻŽā§āϝāĻžāĻāĻŋāĻ āĻā§āύ āĻŦā§āϝāϰā§āĻĨ āĻšāϞā§?
JSON-āϏā§āĻāĻžāĻāϞ tfvars āĻāϰ āϏāĻžāĻĨā§ HCL āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ āĻŽāĻŋāĻļā§āϰāĻŖāĨ¤ āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰāĻžāϞ āĻāϏā§āϝ⧠āĻ āĻŋāĻ āĻāϰā§āύ (āĻŦāĻž āϏāĻ āĻŋāĻ āĻĄāĻžāϝāĻŧāĻžāϞā§āĻā§āĻ/āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ) āĻāĻŦāĻ āĻāĻŦāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āύāĨ¤Pro Tips
āĻŦāĻĄāĻŧ āĻāύāĻĢā§āϰāĻžāϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϤ⧠āĻĢāϰāĻŽā§āϝāĻžāĻāĻŋāĻ āĻĄā§āϰāĻŋāĻĢā§āĻ āĻĒā§āϰāϤāĻŋāϰā§āϧ āĻāϰāϤ⧠CI-āϤ⧠`terraform fmt -check -recursive` āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰā§āύāĨ¤
āĻ āύāϞāĻžāĻāύ āĻā§āϞ⧠āϏāĻŋāĻā§āϰā§āĻ āĻŦāĻž āϏā§āĻā§āĻ-āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āĻĄā§āĻāĻž āĻĒā§āϏā§āĻ āĻāϰāĻž āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āĻāϞā§āύ; āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻāĻĻāĻžāĻšāϰāĻŖ āϏā§āϝāĻžāύāĻŋāĻāĻžāĻāĻāĻĄ āϰāĻžāĻā§āύ āĻāĻŦāĻ āĻāϏāϞ āĻāύāĻĢā§āϰāĻžāϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āĻā§āĻĄā§āϰ āĻāύā§āϝ āϏā§āĻĨāĻžāύā§āϝāĻŧ CLI āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ āĻāĻžāϞāĻžāύāĨ¤
āĻāĻĒāύāĻžāϰ āĻāĻĄāĻŋāĻāϰ⧠āĻā§āϰā§āĻāϞāĻŋāĻ āύāĻŋāĻāϞāĻžāĻāύ āĻāĻŦāĻ āĻāύā§āĻĄā§āύā§āĻā§āĻļāύ āύāϰāĻŽāĻžāϞāĻžāĻāĻ āĻāϰā§āύ āϝāĻžāϤ⧠Terraform āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻā§āĻĄāĻŧā§ āĻā§āϞāĻŋāύ, āϏā§āĻā§āĻŦāϞ āĻĄāĻŋāĻĢ āϤā§āϰāĻŋ āĻāϰā§āĨ¤
āĻāĻāĻāĻŋ āĻĒā§āϰāĻŋ-āĻāĻŽāĻŋāĻ āĻšā§āĻ āϝā§āĻ āĻāϰā§āύ āϝāĻž `terraform fmt` āĻāĻžāϞāĻžāϝāĻŧ āϝāĻžāϤ⧠āĻĒā§āϞ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻāĻā§ āĻĨā§āĻā§āĻ āĻĢāϰāĻŽā§āϝāĻžāĻā§āĻĄ āĻāϏ⧠āĻāĻŦāĻ āϰāĻŋāĻāĻŋāĻ āĻāĻĨā§āĻĒāĻāĻĨāύ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āĻāĻŦāĻ āĻā§āĻāĻāĻŋāϤ⧠āĻĢā§āĻāĻžāϏ āϰāĻžāĻāϤ⧠āĻĒāĻžāϰā§āĨ¤
Additional Resources
Other Tools
- āϏāĻŋāĻāϏāĻāϏ āϏā§āύā§āĻĻāϰā§āϝāĻŦāϰā§āϧāĻ
- āĻāĻāĻāĻāĻŋāĻāĻŽāĻāϞ āϏā§āύā§āĻĻāϰā§āϝāĻŦāϰā§āϧāĻ
- āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϏā§āύā§āĻĻāϰā§āϝāĻŦāϰā§āϧāĻ
- āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āϏā§āύā§āĻĻāϰā§āϝāĻŦāϰā§āϧāĻ
- āϰāĻ āύāĻŋāϰā§āĻŦāĻžāĻāĻ
- āϏā§āĻĒā§āϰāĻžāĻāĻ āĻāĻā§āϏāĻā§āϰā§āϝāĻžāĻā§āĻāϰ
- āĻŦā§āϏā§Ŧā§Ē āĻĄāĻŋāĻā§āĻĄāĻžāϰ
- āĻŦā§āϏā§Ŧā§Ē āĻāύāĻā§āĻĄāĻžāϰ
- āϏāĻŋ-āĻļāĻžāϰā§āĻĒ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āϏāĻŋāĻāϏāĻāĻŋ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- Dockerfile Formatter
- āĻāϞāĻŽ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āĻāĻāύāĻāĻŋ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āĻā§ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āĻā§āϰāĻžāĻĢāĻāĻŋāĻāĻāϞ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āĻāĻāĻāύāĻāĻ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āĻā§āϏāύ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āϞā§āϝāĻžāĻā§āĻ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āĻŽāĻžāϰā§āĻāĻĄāĻžāĻāύ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āĻ āĻŦāĻā§āĻā§āĻāĻŋāĻāϏāĻŋ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- Php Formatter
- āĻĒā§āϰā§āĻā§ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āĻĒāĻžāĻāĻĨāύ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āϰā§āĻŦāĻŋ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āϰāĻžāϏā§āĻ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āϏā§āĻāĻžāϞāĻž āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āĻļā§āϞ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āĻāϏāĻāĻŋāĻāĻāϞ āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- SVG āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- Swift āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- TOML āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- Typescript Formatter
- XML āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- YAML āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- Yarn āĻĢāϰāĻŽā§āϝāĻžāĻāĻžāϰ
- āϏāĻŋāĻāϏāĻāϏ āĻŽāĻŋāύāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ
- Html Minifier
- Javascript Minifier
- āĻā§āϏāύ āĻŽāĻŋāύāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ
- XML āĻŽāĻŋāύāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ
- āĻāĻāĻāĻāĻŋāĻāĻŋāĻĒāĻŋ āĻšā§āĻĄāĻžāϰ āĻāĻŋāĻāϝāĻŧāĻžāϰ
- āĻĒāĻŋāĻĄāĻŋāĻāĻĢ āĻĨā§āĻā§ āĻā§āĻā§āϏāĻ
- āϰā§āĻā§āĻā§āϏ āĻā§āϏā§āĻāĻžāϰ
- āϏāĻžāϰā§āĻĒ āϰā§āϝāĻžāĻāĻ āĻā§āĻāĻžāϰ
- Whois āϞā§āĻāĻāĻĒ