рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
- рдЯреЗрд░рд╛рдлреЙрд░реНрдо-рд╕реНрдЯрд╛рдЗрд▓ рдмреНрд▓реЙрдХреНрд╕, рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕, рд▓рд┐рд╕реНрдЯреНрд╕/рдореИрдкреНрд╕ рдФрд░ рд╣реЗрд░реЗрдбреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП 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 рдирд╣реАрдВ) |
| рджрд╛рдпрд░рд╛ | рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕, рдЗрдВрдбреЗрдВрдЯреЗрд╢рди, рд╕реНрдкреЗрд╕рд┐рдВрдЧ, рдмреБрдирд┐рдпрд╛рджреА рд▓реЗрдЖрдЙрдЯ |
| рдкреБрдирдГрдХреНрд░рдордг | рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдпрд╛ рдмреНрд▓реЙрдХреЛрдВ рдХрд╛ рдХреЛрдИ рд╢рдмреНрджрд╛рд░реНрде рдкреБрдирдГрдХреНрд░рдордг рдирд╣реАрдВ |
| рд╡рд┐рдХрд▓реНрдк | рдХреЛрдИ рдирд╣реАрдВ тАФ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдирд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдлреЙрд░реНрдореЗрдЯ рдХреНрд░рд┐рдпрд╛ |
| рд╕реАрдорд╛рдПрдБ | рд▓рдЧрднрдЧ 1тАУ2 MB рдЗрдирдкреБрдЯ, ~25s рд╕рд░реНрд╡рд░ рдЯрд╛рдЗрдордЖрдЙрдЯ (рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рдЕрдзреАрди) |
| рдкреНрд░рддрд┐рдзрд╛рд░рдг | рдХреНрд╖рдгрд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг тАФ рдЗрдирдкреБрдЯ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ |
рднрд╛рд╖рд╛ рдХрд╡рд░реЗрдЬ
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: рдЬрдЧрд╣ рдореЗрдВ рдлреЙрд░реНрдореЗрдЯ рдХрд░реЗрдВ
terraform fmtрд╡рд░реНрддрдорд╛рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ .tf рдФрд░ HCL-рдЖрдзрд╛рд░рд┐рдд .tfvars рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИред
Terraform: рдкреБрдирд░рд╛рд╡рд░реНрддреА CI рдЬрд╛рдБрдЪ (рдХреЛрдИ рд▓реЗрдЦрди рдирд╣реАрдВ)
terraform fmt -check -recursiveрдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдиреЙрди-рдЬрд╝реАрд░реЛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ тАФ CI рдФрд░ рдкреНрд░реА-рдХрдорд┐рдЯ рд╣реБрдХ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ред
Packer: рдЯреЗрдореНрдкрд▓реЗрдЯ рдлреЙрд░реНрдореЗрдЯ рдХрд░реЗрдВ
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 рдбрд┐рдлреНрд╕ рдХреЛ рдЫреЛрдЯрд╛ рдФрд░ рд╕рд╛рд░реНрдердХ рд░рдЦреЗрдВ
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
- рд╕реАрдПрд╕рдПрд╕ рд╕реБрдВрджрд░реАрдХрд░рдг
- рдПрдЪрдЯреАрдПрдордПрд▓ рд╕реБрдВрджрд░реАрдХрд░рдг
- рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реБрдВрджрд░реАрдХрд░рдг
- рдкреАрдПрдЪрдкреА рд╕реБрдВрджрд░реАрдХрд░рдг
- рд░рдВрдЧ рдЪрдпрдирдХрд░реНрддрд╛
- рд╕реНрдкреНрд░рд╛рдЗрдЯ рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯрд░
- рдмреЗрд╕64 рдбрд┐рдХреЛрдбрд░
- рдмреЗрд╕64 рдПрдирдХреЛрдбрд░
- рд╕реАрд╢рд╛рд░реНрдк рдлреЙрд░реНрдореЗрдЯрд░
- рд╕реАрдПрд╕рд╡реА рдлреЙрд░реНрдореЗрдЯрд░
- Dockerfile Formatter
- рдПрд▓реНрдо рдлреЙрд░реНрдореЗрдЯрд░
- рдИрдПрдирд╡реА рдлреЙрд░реНрдореЗрдЯрд░
- рдЧреЛ рдлреЙрд░реНрдореЗрдЯрд░
- рдЧреНрд░рд╛рдлрдХреНрдпреВрдПрд▓ рдлреЙрд░реНрдореЗрдЯрд░
- рдЖрдИрдПрдирдЖрдИ рдлреЙрд░реНрдореЗрдЯрд░
- рдЬреЗрдПрд╕рдУрдПрди рдлреЙрд░реНрдореЗрдЯрд░
- рд▓реЗрдЯреЗрдХреНрд╕ рдлреЙрд░реНрдореЗрдЯрд░
- рдорд╛рд░реНрдХрдбрд╛рдЙрди рдлреЙрд░реНрдореЗрдЯрд░
- рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡рд╕реА рдлреЙрд░реНрдореЗрдЯрд░
- Php Formatter
- рдкреНрд░реЛрдЯреЛ рдлреЙрд░реНрдореЗрдЯрд░
- рдкрд╛рдпрдерди рдлреЙрд░реНрдореЗрдЯрд░
- рд░реВрдмреА рдлреЙрд░реНрдореЗрдЯрд░
- рд░рд╕реНрдЯ рдлреЙрд░реНрдореЗрдЯрд░
- рд╕реНрдХрд╛рд▓рд╛ рдлреЙрд░реНрдореЗрдЯрд░
- рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлреЙрд░реНрдореЗрдЯрд░
- рдПрд╕рдХреНрдпреВрдПрд▓ рдлреЙрд░реНрдореЗрдЯрд░
- SVG рдлреЙрд░реНрдореЗрдЯрд░
- Swift рдлреЙрд░реНрдореЗрдЯрд░
- TOML рдлреЙрд░реНрдореЗрдЯрд░
- Typescript Formatter
- XML рдлреЙрд░реНрдореЗрдЯрд░
- YAML рдлреЙрд░реНрдореЗрдЯрд░
- Yarn рдлреЙрд░реНрдореЗрдЯрд░
- рд╕реАрдПрд╕рдПрд╕ рдорд┐рдиреАрдлрд╛рдпрд░
- Html Minifier
- Javascript Minifier
- рдЬреЗрдПрд╕рдУрдПрди рдорд┐рдиреАрдлрд╛рдпрд░
- XML рдорд┐рдирд┐рдлрд╛рдпрд░
- рдПрдЪрдЯреАрдЯреАрдкреА рд╣реЗрдбрд░реНрд╕ рджрд░реНрд╢рдХ
- рдкреАрдбреАрдПрдл рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ
- рд░реЗрдЧреЗрдХреНрд╕ рдкрд░реАрдХреНрд╖рдХ
- рдПрд╕рдИрдЖрд░рдкреА рд░реИрдВрдХ рдЬрд╛рдВрдЪрдХрд░реНрддрд╛
- Whois рд▓реБрдХрдЕрдк