ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
- Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ HCL2 Π΄Π»Ρ Π±Π»ΠΎΠΊΠΎΠ², Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΡΠΏΠΈΡΠΊΠΎΠ²/ΠΊΠ°ΡΡ ΠΈ heredoc Π² ΡΡΠΈΠ»Π΅ Terraform
- Π‘ΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΡΡΡΡΠΏΡ ΠΈ ΠΏΡΠΎΠ±Π΅Π»Ρ Π²ΠΎΠΊΡΡΠ³ =, Π·Π°ΠΏΡΡΡΡ , ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ Π±Π»ΠΎΠΊΠΎΠ²
- Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΡΡΡΠ΅ ΡΡΡΠΎΠΊΠΈ, Π³Π΄Π΅ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ
- Π Π°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ .tf, .hcl, .tfvars Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ HCL ΠΈ Packer .pkr.hcl
- ΠΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄: ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π΄Π°Π΅Ρ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
- ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ: ΠΎΠ΄Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Β«Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡΒ», Π±Π΅Π· Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΡΡΠΈΠ»Ρ Π΄Π»Ρ ΡΠΏΠΎΡΠΎΠ²
- ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈΠ· ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠΊ
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΡΠ΅Π· Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΡ β ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π±ΡΡΡΡΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ; Π΄Π»Ρ Π²ΡΡΠΎΠΊΠΎΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ CLI
π§ ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²ΡΠΈΠΊ HCL for hcl-formatter
1. ΠΡΡΠ°Π²ΡΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΈΡΠ΅ Π²Π°Ρ ΠΊΠΎΠ΄
ΠΡΠΊΡΠΎΠΉΡΠ΅ Π²Π°Ρ HCL/Terraform ΡΠ°ΠΉΠ» (.tf, .tfvars Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ HCL, .hcl, .pkr.hcl ΠΈ Ρ.Π΄.) ΠΈ Π²ΡΡΠ°Π²ΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡ, ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΈΡΠ΅ ΡΠ°ΠΉΠ», Π΅ΡΠ»ΠΈ Π²Π°Ρ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
2. ΠΠ°ΠΆΠΌΠΈΡΠ΅ Β«Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡΒ»
ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π° Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΉ Π±ΡΠΊΠ΅Π½Π΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΡΠΈΠ»Π΅ terraform fmt ΠΊ ΠΎΡΡΡΡΠΏΠ°ΠΌ, ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌ ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°ΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ HCL2.
3. ΠΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΠΈΠ»ΠΈ ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅, Π·Π°ΡΠ΅ΠΌ ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² Π²Π°ΡΡ IDE ΠΈΠ»ΠΈ ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡΡΡΠ΅ Π΅Π³ΠΎ Π² Π²Π°Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ
ΠΠΎΠ΄Π΅Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π΄Π»Ρ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΈ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΡΠΈΠ»Π΅ terraform fmt Π΄Π»Ρ HCL2.
| ΠΡΠΏΠ΅ΠΊΡ | ΠΠ΅ΡΠ°Π»ΠΈ |
|---|---|
| Π Π΅ΠΆΠΈΠΌ | Π‘Π΅ΡΠ²Π΅ΡΠ½ΡΠΉ (Π±Π΅Π· WASM Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅) |
| ΠΠ±Π»Π°ΡΡΡ | ΠΡΠΎΠ±Π΅Π»Ρ, ΠΎΡΡΡΡΠΏΡ, ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ, Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ |
| ΠΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΠ΅ | ΠΠ΅Π· ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΎΠ² |
| ΠΠΏΡΠΈΠΈ | ΠΡΡΡΡΡΡΠ²ΡΡΡ β Π΅Π΄ΠΈΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° |
| ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ | ΠΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ 1β2 ΠΠ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , ~25Ρ ΡΠ°ΠΉΠΌΠ°ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ° (ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ) |
| Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ | ΠΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° β Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΡΠ΄Π°Π»ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ |
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ·ΡΠΊΠΈ
ΠΠΎΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ 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 ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΌΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² Π²Π΅ΡΠΊΡ.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
ΠΠΈΠ³ΠΈΠ΅Π½Π° PR ΠΈ ΡΠ΅Π²ΡΡ
Π‘ΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΈ ΠΎΡΡΡΡΠΏΡ, ΡΡΠΎΠ±Ρ ΡΠ΅Π²ΡΡΠ΅ΡΡ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ.
- ΠΠ°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΊΡΡΡΠΈΠ΅ΠΌ pull request
- Π‘ΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΏΡΠΈΠ΄ΠΈΡΡΠΈΠ²ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎ ΡΡΠΈΠ»Π΅ Π² ΡΠ΅Π²ΡΡ Terraform
- Π‘ΠΎΡ ΡΠ°Π½ΡΡΡ git diff Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΈ Π·Π½Π°ΡΠΈΠΌΡΠΌΠΈ
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Terraform
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ ΠΈ ΡΠ΅Π΅ΡΡΡΠ°ΠΌΠΈ.
- ΠΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² ΠΎΠ±ΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠΌΡ ΡΡΠΈΠ»Ρ
ΠΠΎΠ½ΡΡΠΎΠ»Ρ Π² CI
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ terraform fmt Π² CI Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π΄ΡΠ΅ΠΉΡΠ° ΡΡΠΈΠ»Ρ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ.
- ΠΠΎΠ±Π°Π²ΠΈΡΡ `terraform fmt -check -recursive` ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Π³ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°
- ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΠΈΡΠ½ΠΈΡ Π΄ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅Ρ .tf ΡΠ°ΠΉΠ»ΠΎΠ²
ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
Π§ΠΈΡΠ°Π΅ΠΌΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π½ΠΎΠ²ΡΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π±ΡΡΡΡΠΎ ΠΈΠ·ΡΡΠΈΡΡ ΠΈ Terraform, ΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΉ ΡΡΠΈΠ»Ρ.
- ΠΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ½ΠΈΠΏΠΏΠ΅ΡΡ Π² README
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΡΠ΅Π½ΠΈΠ½Π³Π°Ρ ΠΏΠΎ Terraform
β Frequently Asked Questions
πΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π»ΠΈ ΠΌΠΎΠΉ ΠΊΠΎΠ΄ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ?
π‘οΈΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²ΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΠΊΡΠ΅ΡΡ Π·Π΄Π΅ΡΡ?
π§©ΠΠ»ΠΈΡΠ΅Ρ Π»ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ?
πΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ .tfvars ΡΠ°ΠΉΠ»Ρ?
JSON ΡΠ΅ΡΠ΅Π· `.tfvars.json`; ΠΎΠ½ΠΈ ΡΠ»Π΅Π΄ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ JSON ΠΈ Π»ΡΡΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ JSON-ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΈΠΌ `terraform fmt`.βοΈΠ§Π΅ΠΌ ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ `terraform fmt`?
π§―ΠΠΎΡΠ΅ΠΌΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ?
JSON-ΡΡΠΈΠ»Ρ tfvars Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ HCL. ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ (ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π΄ΠΈΠ°Π»Π΅ΠΊΡ/ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²ΡΠΈΠΊ) ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ½ΠΎΠ²Π°.Pro Tips
ΠΠΊΠ»ΡΡΠΈΡΠ΅ `terraform fmt -check -recursive` Π² CI, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΠ°ΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π²ΡΡΠ°Π²ΠΊΠΈ ΡΠ΅ΠΊΡΠ΅ΡΠΎΠ² ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΡΡ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ, Π² ΠΎΠ½Π»Π°ΠΉΠ½-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ; ΡΠΎΡ ΡΠ°Π½ΡΠΉΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΎΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ CLI-ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ.
ΠΠΎΡΠΌΠ°Π»ΠΈΠ·ΡΠΉΡΠ΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ ΡΡΡΠΎΠΊ ΠΈ ΠΎΡΡΡΡΠΏΡ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅, ΡΡΠΎΠ±Ρ Terraform-ΡΠ°ΠΉΠ»Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ ΡΠΈΡΡΡΠ΅, ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠ΅ Π΄ΠΈΡΡ Π½Π° Π²ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ .
ΠΠΎΠ±Π°Π²ΡΡΠ΅ pre-commit Ρ ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ `terraform fmt`, ΡΡΠΎΠ±Ρ pull requests ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΈ ΡΠΆΠ΅ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ, Π° ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΈ ΡΠ΅Π²ΡΡ ΠΌΠΎΠ³Π»ΠΈ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½Π½ΡΠΌΠΈ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΈ ΡΠΈΡΠΊΠ°Ρ .
Additional Resources
Other Tools
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ CSS
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ HTML
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ JavaScript
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ PHP
- ΠΡΠ±ΠΎΡ ΡΠ²Π΅ΡΠ°
- ΠΠΊΡΡΡΠ°ΠΊΡΠΎΡ ΡΠΏΡΠ°ΠΉΡΠΎΠ²
- ΠΠ΅ΠΊΠΎΠ΄Π΅Ρ Base64
- ΠΠΎΠ΄ΠΈΡΠΎΠ²ΡΠΈΠΊ Base64
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ C#
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ CSV
- Dockerfile Formatter
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Elm
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ ENV
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Go
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ GraphQL
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ INI
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ JSON
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ LaTeX
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Markdown
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Objective-C
- Php Formatter
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Proto
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Python
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Ruby
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Rust
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ Scala
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ shell-ΡΠΊΡΠΈΠΏΡΠΎΠ²
- Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ SQL
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ SVG
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ Swift
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ TOML
- Typescript Formatter
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ XML
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ YAML
- Π€ΠΎΡΠΌΠ°ΡΡΠ΅Ρ Yarn
- ΠΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΎΡ CSS
- Html Minifier
- Javascript Minifier
- ΠΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΎΡ JSON
- ΠΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΎΡ XML
- ΠΡΠΎΡΠΌΠΎΡΡΡΠΈΠΊ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²
- PDF Π² ΡΠ΅ΠΊΡΡ
- Π’Π΅ΡΡΠ΅Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Π² SERP
- ΠΠΎΠΈΡΠΊ Whois