Title: πŸ› οΈ Terraform Group: Dev & Tools Icon: πŸ› οΈ Order: 6 # Terraform Cheatsheet > **Context:** Terraform is an open-source infrastructure as code software tool. / Terraform - это open-source инструмСнт "инфраструктура ΠΊΠ°ΠΊ ΠΊΠΎΠ΄". > **Role:** DevOps / Cloud Engineer > **Version:** 1.x+ --- ## πŸ“š Table of Contents / Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ 1. [Workflow](#workflow--Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ-процСсс) 2. [State Management](#state-management--ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅-состояниСм-state) 3. [Workspaces](#workspaces--Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅-окруТСния) 4. [Debugging](#debugging--ΠΎΡ‚Π»Π°Π΄ΠΊΠ°) --- ## 1. Workflow / Π Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс ### Init & Validate / Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ```bash # Initialize directory (Download providers) / Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ (Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹) terraform init # Upgrade providers / ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρ‹ terraform init -upgrade # Format code / Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° terraform fmt -recursive # Validate syntax / ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° синтаксиса terraform validate ``` ### Plan & Apply / План ΠΈ ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ```bash # Plan (Preview changes) / План (ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€) terraform plan -out=tfplan # Apply changes / ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния terraform apply "tfplan" # Auto approve / АвтоподтвСрТдСниС terraform apply -auto-approve # Destroy infrastructure / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ инфраструктуру terraform destroy ``` --- ## 2. State Management / Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ состояниСм (State) ### List & Show / Бписок ΠΈ ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ```bash # List resources in state / Бписок рСсурсов Π² стСйтС terraform state list # Show details of resource / Π”Π΅Ρ‚Π°Π»ΠΈ рСсурса terraform state show ``` ### Manipulation / ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΡΡ†ΠΈΡ ```bash # Remove from state (Does not destroy real resource) / Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· стСйта (НС удаляСт Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ рСсурс) terraform state rm # Move/Rename resource / ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ/ΠŸΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ рСсурс terraform state mv # Import existing resource / Π˜ΠΌΠΏΠΎΡ€Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ рСсурса terraform import ``` --- ## 3. Workspaces / Π Π°Π±ΠΎΡ‡ΠΈΠ΅ окруТСния ```bash # List workspaces / Бписок ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ terraform workspace list # Create new workspace / Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ terraform workspace new dev # Select workspace / Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ terraform workspace select prod ``` --- ## 4. Debugging / ΠžΡ‚Π»Π°Π΄ΠΊΠ° ### Logs / Π›ΠΎΠ³ΠΈ Set env var `TF_LOG`. Levels: `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`. ```bash export TF_LOG=DEBUG export TF_LOG_PATH=/tmp/terraform.log terraform apply ``` ### Console / Консоль Interactive console to test expressions. / Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ консоль для тСста Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ```bash terraform console > local.my_variable ```