Loading…

О сСрвисС Онлайн-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ HCL / Terraform

Terraform, Packer ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты HashiCorp Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с HCL2 β€” ΠΈ всС ΠΎΠ½ΠΈ выглядят Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈ согласованном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π­Ρ‚ΠΎΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ HCL отправляСт Π²Π°ΡˆΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π½Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ бэкСнд, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ примСняСт ΠΏΡ€Π°Π²ΠΈΠ»Π° форматирования Π² стилС terraform fmt ΠΊ отступам, ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ ΠΈ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ HCL2, оставляя сСмантику Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности

  • Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ HCL2 для Π±Π»ΠΎΠΊΠΎΠ², Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², списков/ΠΊΠ°Ρ€Ρ‚ ΠΈ heredoc Π² стилС Terraform
  • БогласованныС отступы ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π²ΠΎΠΊΡ€ΡƒΠ³ =, запятых, Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²
  • БохраняСт ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹Π΅ пустыС строки, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, для удобочитаСмости
  • Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ .tf, .hcl, .tfvars Π½Π° основС HCL ΠΈ Packer .pkr.hcl
  • Π˜Π΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄: ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ запуск Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
  • Минимальная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ: ΠΎΠ΄Π½ΠΎ дСйствиС Β«Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ», Π±Π΅Π· настроСк стиля для споров
  • ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ скачиваниС ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‡Π΅Ρ€Π΅Π· Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ β€” ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для быстрых исправлСний; для Π²Ρ‹ΡΠΎΠΊΠΎΡ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ CLI

πŸ”§ Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ HCL for hcl-formatter

1

1. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ ваш ΠΊΠΎΠ΄

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ваш HCL/Terraform Ρ„Π°ΠΉΠ» (.tf, .tfvars Π½Π° основС HCL, .hcl, .pkr.hcl ΠΈ Ρ‚.Π΄.) ΠΈ Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ содСрТимоС Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ», Ссли ваш Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

2

2. НаТмитС Β«Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ»

НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’Π°ΡˆΠ° конфигурация отправляСтся Π½Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ бэкСнд, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ примСняСт ΠΏΡ€Π°Π²ΠΈΠ»Π° форматирования Π² стилС terraform fmt ΠΊ отступам, ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌ ΠΈ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ HCL2.

3

3. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, скопируйтС ΠΈΠ»ΠΈ скачайтС

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Π·Π°Ρ‚Π΅ΠΌ скопируйтС Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π²Π°ΡˆΡƒ IDE ΠΈΠ»ΠΈ скачайтС ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ Π΅Π³ΠΎ Π² ваш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

ВСхничСскиС характСристики

МодСль выполнСния

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ выполняСтся Π½Π° сСрвСрС ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ располоТСния Π² стилС terraform fmt для HCL2.

АспСктДСтали
Π Π΅ΠΆΠΈΠΌΠ‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹ΠΉ (Π±Π΅Π· WASM Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅)
ΠžΠ±Π»Π°ΡΡ‚ΡŒΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹, отступы, ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹, Π±Π°Π·ΠΎΠ²ΠΎΠ΅ располоТСниС
ΠŸΠ΅Ρ€Π΅ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°Π½ΠΈΠ΅Π‘Π΅Π· сСмантичСского пСрСупорядочивания рСсурсов ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΎΠ²
ΠžΠΏΡ†ΠΈΠΈΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ β€” Π΅Π΄ΠΈΠ½ΠΎΠ΅ дСйствиС Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для прСдсказуСмого Π²Ρ‹Π²ΠΎΠ΄Π°
ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡΠŸΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 1–2 ΠœΠ‘ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ~25с Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ сСрвСра (ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ)
БохранСниСВрСмСнная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° β€” Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ послС форматирования
Как ΠΈ с Π»ΡŽΠ±Ρ‹ΠΌ ΠΎΠ½Π»Π°ΠΉΠ½-инструмСнтом, ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ вставки Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… сСкрСтов. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ terraform fmt ΠΈΠ»ΠΈ packer fmt локально для Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ языки

ΠŸΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ распространСнныС конструкции HCL2, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Terraform ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… инструмСнтах HashiCorp.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ
Π‘Π»ΠΎΠΊΠΈresource, variable, output, module, locals, job, taskΠ‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² сохраняСтся
Атрибутыname = "web", count = 2ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΎΠΊΡ€ΡƒΠ³ = ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ
ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ[1, 2, 3], { key = value }Π•Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ΅ располоТСниС для списков ΠΈ ΠΊΠ°Ρ€Ρ‚/ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
Heredocs<<-EOF ... EOFΠœΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ сохранСны; отступы Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ
ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² стилС # ΠΈ //Π‘ΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, для сохранСния намСрСния ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

Мини Π”ΠΎ/ПослС

НСбольшой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ очистки отступов ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π² рСсурсС Terraform.

# Π”ΠΎ
resource "aws_s3_bucket" "b"{bucket="demo"
  tags={Name="demo"}}

# ПослС
resource "aws_s3_bucket" "b" {
  bucket = "demo"

  tags = {
    Name = "demo"
  }
}
Волько ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΠΊΠ΅Ρ‚Π°: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, выраТСния ΠΈ ссылки ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.

Ошибки ΠΈ ΠšΡ€Π°ΠΉΠ½ΠΈΠ΅ Π‘Π»ΡƒΡ‡Π°ΠΈ

Если Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ связано с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ парсинга Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… HCL2.

БимптомВСроятная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ
НСт Π²Ρ‹Π²ΠΎΠ΄Π° / ошибка парсингаНСзакрытая фигурная скобка, квадратная скобка ΠΈΠ»ΠΈ круглая ΡΠΊΠΎΠ±ΠΊΠ°ΠŸΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ { }, [ ], ( ) ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ всС Π±Π»ΠΎΠΊΠΈ
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с HeredocΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ Ρ‚ΠΈΠΏΠ° EOF ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΈ Π½Π° своСй строкС
Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ стилиВабы/ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈΠ»ΠΈ посторонниС символыНормализуйтС отступы, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ посторонниС ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы
ΠŸΡƒΡ‚Π°Π½ΠΈΡ†Π° с .tfvarsБинтаксис JSON ΠΏΡ€ΠΎΡ‚ΠΈΠ² HCLΠ˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‚Π΅Ρ€ ΠΈΠ»ΠΈ terraform fmt для Ρ„Π°ΠΉΠ»ΠΎΠ² *.tfvars.json

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Командной Π‘Ρ‚Ρ€ΠΎΠΊΠΈ

Для повсСднСвных Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов Infrastructure as Code ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‚Π΅Ρ€Ρ‹ локально ΠΈ Π² CI, Π° этот ΠΎΠ½Π»Π°ΠΉΠ½-инструмСнт ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ для быстрых ad-hoc очисток.

macOS / Linux

Terraform: Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° мСстС

terraform fmt

ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ .tf ΠΈ основанныС Π½Π° HCL .tfvars Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

Terraform: рСкурсивная ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° CI (Π±Π΅Π· записи)

terraform fmt -check -recursive

Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Ссли любой Ρ„Π°ΠΉΠ» Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ форматирования β€” идСально для CI ΠΈ pre-commit Ρ…ΡƒΠΊΠΎΠ².

Packer: Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ шаблона

packer fmt ΠΏΡƒΡ‚ΡŒ/ΠΊ/ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.pkr.hcl

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Packer HCL Π½Π° мСстС.

Windows (PowerShell)

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ Terraform рСкурсивно

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

ЗапускаСт terraform fmt для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° .tf Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° форматирования Π² стилС CI

terraform fmt -check -recursive

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… сборки для остановки ΠΏΡ€ΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

GitHub Actions

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сборку ΠΏΡ€ΠΈ нСобходимости форматирования

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

ΠžΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ workflow ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π»ΡŽΠ±Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Terraform.

АвтоформатированиС Π² pull requests (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ)

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 инструмСнты ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ `terraform fmt -check -recursive` Π² CI вмСсто ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ½Π»Π°ΠΉΠ½-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‚Π΅Ρ€Ρ‹.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅

Π“ΠΈΠ³ΠΈΠ΅Π½Π° PR ΠΈ Ρ€Π΅Π²ΡŒΡŽ

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ отступы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π²ΡŒΡŽΠ΅Ρ€Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… измСнСниях инфраструктуры.

  • Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ pull request
  • Π‘ΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ΄ΠΈΡ€Ρ‡ΠΈΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΎ стилС Π² Ρ€Π΅Π²ΡŒΡŽ Terraform
  • Π‘ΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ git diff нСбольшими ΠΈ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹ΠΌΠΈ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Terraform

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, рСпозиториями ΠΈ рССстрами.

  • Π’Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ±Ρ‰ΠΈΡ… модулях
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ соотвСтствия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌΡƒ ΡΡ‚ΠΈΠ»ΡŽ

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π² CI

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ terraform fmt Π² CI для прСдотвращСния Π΄Ρ€Π΅ΠΉΡ„Π° стиля со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ.

  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ `terraform fmt -check -recursive` ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ шаг ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°
  • Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слияния Π΄ΠΎ форматирования всСх .tf Ρ„Π°ΠΉΠ»ΠΎΠ²

ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ докумСнтация

Π§ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹ΠΌ Ρ‡Π»Π΅Π½Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ быстро ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ Terraform, ΠΈ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ.

  • ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сниппСты Π² README
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ чистыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ‚Ρ€Π΅Π½ΠΈΠ½Π³Π°Ρ… ΠΏΠΎ Terraform

❓ Frequently Asked Questions

πŸ”’ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ΡΡ Π»ΠΈ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ локально?

НСт. Π­Ρ‚ΠΎΡ‚ HCL Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° сСрвСрС: ваш Π²Π²ΠΎΠ΄ отправляСтся Π½Π° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΡƒΡŽ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ для форматирования, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ возвращаСтся Π² ваш Π±Ρ€Π°ΡƒΠ·Π΅Ρ€. Для Π²Ρ‹ΡΠΎΠΊΠΎΡ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° инфраструктуры ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ `terraform fmt` (ΠΈΠ»ΠΈ `packer fmt`) локально.

πŸ›‘οΈΠœΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ сСкрСты здСсь?

ΠœΡ‹ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ сСкрСты Π² ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΠ½Π»Π°ΠΉΠ½-инструмСнты. Π”Π°ΠΆΠ΅ Ссли сСрвис Π·Π°Ρ‰ΠΈΡ‰Π΅Π½ ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡƒΡ‰ΠΈΠ΅ ΠΈΠ»ΠΈ Π²Ρ‹ΡΠΎΠΊΠΎΡ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ… сСкрСтов ΠΈΠ»ΠΈ CI-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ… β€” Π° Π½Π΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹Ρ… инструмСнтах.

πŸ§©Π’Π»ΠΈΡΠ΅Ρ‚ Π»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ?

НСт. Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ сосрСдоточСн Π½Π° ΠΌΠ°ΠΊΠ΅Ρ‚Π΅: ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, отступы ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹. Π‘Π»ΠΎΠΊΠΈ рСсурсов, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, выраТСния ΠΈ ссылки ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, ΠΏΡ€ΠΈ условии Ρ‡Ρ‚ΠΎ исходный HCL Π±Ρ‹Π» Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ.

πŸ“„ΠœΠΎΠΆΠ½ΠΎ Π»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ .tfvars Ρ„Π°ΠΉΠ»Ρ‹?

Π”Π°, Ссли .tfvars Ρ„Π°ΠΉΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ синтаксис HCL. Terraform Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON Ρ‡Π΅Ρ€Π΅Π· `.tfvars.json`; ΠΎΠ½ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ JSON ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ самим `terraform fmt`.

βš™οΈΠ§Π΅ΠΌ это отличаСтся ΠΎΡ‚ `terraform fmt`?

`terraform fmt` β€” это каноничСский Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ, поставляСмый с Terraform, ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ для локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ CI. Π­Ρ‚ΠΎΡ‚ Π²Π΅Π±-инструмСнт ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для быстрой, Π°Π΄-Ρ…ΠΎΠΊ очистки, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π½Π΅Ρ‚ ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ CLI ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ привСсти Π² порядок нСбольшой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

πŸ§―ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ?

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сбоСв β€” это ошибки парсинга: Π½Π΅Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки ΠΈΠ»ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹Π΅ heredocs ΠΈΠ»ΠΈ смСшСниС JSON-стиля tfvars с синтаксисом HCL. Π˜ΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ (ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚/Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ) ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ снова.

Pro Tips

CI Tip

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ `terraform fmt -check -recursive` Π² CI, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ расхоТдСниС форматирования Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… рСпозиториях инфраструктуры.

Best Practice

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ вставки сСкрСтов ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, связанных с состояниСм, Π² ΠΎΠ½Π»Π°ΠΉΠ½-инструмСнты; сохраняйтС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ ΠΎΡ‡ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ CLI-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ для Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° инфраструктуры.

Best Practice

НормализуйтС Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ пСрСносы строк ΠΈ отступы Π² вашСм Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Terraform-Ρ„Π°ΠΉΠ»Ρ‹ создавали чистыС, ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΡ„Ρ‹ Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ….

Best Practice

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ pre-commit Ρ…ΡƒΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт `terraform fmt`, Ρ‡Ρ‚ΠΎΠ±Ρ‹ pull requests ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ, Π° обсуТдСния ΠΏΡ€ΠΈ Ρ€Π΅Π²ΡŒΡŽ ΠΌΠΎΠ³Π»ΠΈ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ сосрСдоточСнными Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠΈ рисках.

Additional Resources

Other Tools