Terraform Basics Labor¶
Navigeerimine
Kasuta paremal olevat sisukorda kiireks navigeerimiseks ↗️
Eesmärk: Praktiliselt õppida Terraform'i kasutamist ja luua infrastruktuuri koodi abil
1. Ettevalmistus ja Installatsioon¶
1.1 Terraform'i Installeerimine¶
Valige oma operatsioonisüsteem ja installige Terraform:
macOS:
Bash | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 |
|
Projekt: ${project_name} Keskkond: ${environment} Faili number: ${file_number} Loodud: ${timestamp}
See fail loodi Terraform'i abil automaatselt. Terraform on Infrastructure as Code tööriist.
Terraform Lab - IT-süsteemide automatiseerimine¶
Projekti nimi: ${project_name} Loodud failide arv: ${total_files}
Konfiguratsiooni sisu: ${config_content}
Kokkuvõte genereeritud: ${timestamp()}
${service_name} teenuse konfiguratsioon¶
Keskkond: ${environment}¶
[service] name = ${service_name} port = ${port} replicas = ${replicas} environment = ${environment}
[health] check_interval = 30s timeout = 5s
[logging] level = ${environment == "prod" ? "info" : "debug"} ```text
4.3 Lifecycle Rules¶
Lisage faili, mis on kaitstud tahtmatu kustutamise eest:
```hcl resource "local_file" "important_data" { content = jsonencode({ critical_info = "See on oluline konfiguratsioon" created_at = timestamp() protected = true })
filename = "${path.module}/config/critical.json"
lifecycle { prevent_destroy = true ignore_changes = [content] } } ```text
4.4 Muudatuste Rakendamine¶
```bash terraform plan terraform apply
Kontrollige loodud faile¶
ls -la config/ cat project_summary.txt ```bash
Kontrollpunkt: Näete erinevat tüüpi konfiguratsioone ja template'e.
5. Keskkonnapõhine Konfiguratsioon¶
5.1 Terraform Variable Failide Loomine¶
Looge erinevate keskkondade jaoks muutujate failid:
dev.tfvars
:
hcl
project_name = "my-terraform-project"
environment = "dev"
file_count = 2
enable_backup = false
text
prod.tfvars
:
hcl
project_name = "my-terraform-project"
environment = "prod"
file_count = 5
enable_backup = true
text
5.2 Erinevate Keskkondade Testimine¶
```bash
Testi development konfiguratsiooni¶
terraform plan -var-file="dev.tfvars"
Rakenda development konfiguratsioon¶
terraform apply -var-file="dev.tfvars"
Kustuta ressursid¶
terraform destroy
Testi production konfiguratsiooni¶
terraform plan -var-file="prod.tfvars" terraform apply -var-file="prod.tfvars" ```text
5.3 Workspace'ide Kasutamine¶
```bash
Loo uued workspace'd¶
terraform workspace new development terraform workspace new production
Lülitu development workspace'i¶
terraform workspace select development terraform apply -var-file="dev.tfvars"
Lülitu production workspace'i¶
terraform workspace select production terraform apply -var-file="prod.tfvars"
Vaata workspace'e¶
terraform workspace list ```text
Kontrollpunkt: Erinevates workspace'ides on erinevad failid ja konfiguratsioonid.
6. State Management ja Troubleshooting¶
6.1 State'i Haldamine¶
```bash
Vaata kõiki ressursse state'is¶
terraform state list
Vaata konkreetse ressursi detaile¶
terraform state show local_file.config
Liiguta ressurss state'is¶
terraform state mv local_file.examples[0] local_file.renamed_file
Eemalda ressurss state'ist (ei kustuta tegelikku faili)¶
terraform state rm local_file.backup_config[0]
Impordi olemasolev fail state'i¶
terraform import local_file.imported_file welcome.txt ```text
6.2 Tõrkeotsing¶
State'i probleemide lahendamine: ```bash
Värskenda state olukordadega¶
terraform refresh
Kontrolli state'i terviklikkust¶
terraform validate
Formateeri kood¶
terraform fmt ```text
Logide vaatamine: ```bash
Detailne väljund¶
TF_LOG=DEBUG terraform apply
Salvestage logid faili¶
TF_LOG=INFO TF_LOG_PATH=terraform.log terraform apply ```text
6.3 State'i Backup ja Taastamine¶
```bash
Tee state'i koopia¶
cp terraform.tfstate terraform.tfstate.backup
Kui state on katki, taasta varukoopia¶
cp terraform.tfstate.backup terraform.tfstate ```text
Kontrollpunkt: Oskate hallata state'i ja lahendada tavalisi probleeme.
7. Cleanup ja Kokkuvõte¶
7.1 Ressursside Kustutamine¶
```bash
Kustuta kõik workspace'i ressursid¶
terraform destroy
Lülitu teise workspace'i ja kustuta sealsed ressursid¶
terraform workspace select development terraform destroy
terraform workspace select production
terraform destroy
Kustuta workspace'd¶
terraform workspace select default terraform workspace delete development terraform workspace delete production ```text
7.2 Projekti Puhastamine¶
```bash
Kustuta kõik loodud failid (valikuline)¶
rm -f .txt *.json rm -rf config/ .terraform/ rm -f terraform.tfstate ```bash
Labor Kokkuvõte¶
Mida õppisite:
- Terraform'i installeerimine ja seadistamine - töökeskkonna ettevalmistamine
- Põhiline Terraform workflow - init, plan, apply, destroy
- HCL süntaksi kasutamine - muutujad, ressursid, väljundid
- Template'id ja funktsioonid - dünaamiline sisu genereerimine
- Keskkonnapõhine konfiguratsioon - erinevad seadistused erinevateks keskkondadeks
- State management - infrastruktuuri oleku jälgimine
- Tõrkeotsimine - probleemide tuvastamine ja lahendamine
Järgmised sammud: - Uurige cloud provider'eid (AWS, Azure, GCP) - Õppige Terraform module'eid - Tutvuge CI/CD integratsiooniga - Uurige Terraform Cloud'i
Praktilised oskused: - Infrastruktuuri kirjeldamine koodina - Versioonihaldus infrastruktuuri jaoks - Automatiseeritud ja korduvkasutatav deploy - Keskkondade vaheliste erinevuste haldamine
Viited ja Dokumentatsioon¶
- Terraform Official Documentation - täielik dokumentatsioon
- Local Provider Documentation - local provider'i dokumentatsioon
- HCL Language Reference - HCL keele käsiraamat
- Terraform CLI Commands - käsurea liidese juhend
- Terraform Best Practices - parimad praktikad