0Pricing
Azure Fundamentals · Lekcja

Terraform na platformie Azure

Skonfiguruj dostawcę Terraform AzureRM, napisz podstawowy plan infrastruktury i dowiedz się, kiedy warto wybrać Terraform zamiast natywnych narzędzi ARM/Bicep.

Terraform na platformie Azure to bezpłatna lekcja Azure Fundamentals na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Azure Fundamentals, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Azure Fundamentals zawiera 4 lekcji w sumie.

Czym jest Terraform i dlaczego Azure?

Terraform to opracowane przez firmę HashiCorp narzędzie open source do zarządzania infrastrukturą jako kodem. W przeciwieństwie do Bicep Terraform jest niezależny od dostawcy chmury — jedna baza kodu Terraform może jednocześnie zarządzać zasobami na platformach Azure, AWS, GCP i u wielu innych dostawców. Na platformie Azure Terraform korzysta z dostawcy AzureRM do komunikacji z interfejsem API ARM, dzięki czemu jest popularnym wyborem w środowiskach wielochmurowych.

Dostawca Terraform AzureRM

Dostawca AzureRM to wtyczka, którą Terraform pobiera i wykorzystuje do tłumaczenia konfiguracji Terraform na wywołania interfejsu API ARM. Jest utrzymywana przez firmy HashiCorp i Microsoft oraz stanowi oficjalny sposób zarządzania zasobami platformy Azure za pomocą Terraform. Skonfiguruj dostawcę, podając identyfikator subskrypcji i metodę uwierzytelniania, a następnie uruchom terraform init, aby go pobrać.

# main.tf — configure the AzureRM provider
terraform {
  required_providers {
    azurerm = {
      source  = 'hashicorp/azurerm'
      version = '~> 3.0'
    }
  }
}

provider 'azurerm' {
  features {}
  subscription_id = var.subscription_id
}

Struktura plików Terraform

Typowy projekt Terraform dla platformy Azure jest podzielony na kilka plików .tf: plik main.tf zawiera deklaracje zasobów, variables.tf definiuje zmienne wejściowe, outputs.tf definiuje wartości wyjściowe, a terraform.tfvars zawiera wartości zmiennych dla konkretnego środowiska. Terraform automatycznie ładuje wszystkie pliki .tf z bieżącego katalogu, dlatego podział na wiele plików służy wyłącznie czytelności.

# variables.tf
variable 'resource_group_name' {
  description = 'Name of the resource group'
  type        = string
  default     = 'my-rg'
}

variable 'location' {
  description = 'Azure region'
  type        = string
  default     = 'eastus'
}

Deklarowanie zasobów platformy Azure

W Terraform zasoby platformy Azure deklaruje się za pomocą bloków resource. Typem bloku jest resource, po którym podaje się typ zasobu AzureRM (np. 'azurerm_resource_group') oraz nazwę lokalną używaną do odwoływania się do zasobu w konfiguracji. Nazwy właściwości w Terraform zapisuje się w konwencji snake_case, a nie w konwencji camelCase lub PascalCase używanej w ARM JSON.

# main.tf — create a resource group and storage account
resource 'azurerm_resource_group' 'main' {
  name     = var.resource_group_name
  location = var.location
}

resource 'azurerm_storage_account' 'storage' {
  name                     = 'mystorageaccount'
  resource_group_name      = azurerm_resource_group.main.name
  location                 = azurerm_resource_group.main.location
  account_tier             = 'Standard'
  account_replication_type = 'LRS'

  tags = {
    environment = 'dev'
  }
}

Proces Terraform: Init, Plan, Apply

Podstawowy proces Terraform składa się z trzech etapów. terraform init pobiera dostawcę AzureRM i konfiguruje backend. terraform plan porównuje konfigurację z bieżącym stanem i wyświetla różnice dotyczące zasobów, które zostaną utworzone, zmienione lub usunięte — podobnie jak funkcja what-if w ARM. terraform apply wykonuje plan i aktualizuje platformę Azure tak, aby odpowiadała konfiguracji.

# Step 1: Initialise the project and download providers
terraform init

# Step 2: Preview changes (shows + create, ~ update, - destroy)
terraform plan -out=tfplan

# Step 3: Apply the plan
terraform apply tfplan

# Destroy all managed resources
terraform destroy

Stan Terraform

Terraform przechowuje plik stanu (terraform.tfstate), w którym zapisuje bieżący stan wszystkich zarządzanych zasobów i mapuje je na konfigurację. Dzięki temu plikowi Terraform może wykrywać rozbieżności między konfiguracją a zasobami istniejącymi na platformie Azure. W środowiskach zespołowych stan należy przechowywać zdalnie na koncie Azure Storage Account (backend Terraform), aby wszyscy członkowie zespołu korzystali z tego samego pliku stanu.

# Configure remote state in Azure Blob Storage
terraform {
  backend 'azurerm' {
    resource_group_name  = 'tfstate-rg'
    storage_account_name = 'tfstateaccount'
    container_name       = 'tfstate'
    key                  = 'prod.terraform.tfstate'
  }
}

Uwierzytelnianie Terraform na platformie Azure

Terraform obsługuje kilka metod uwierzytelniania na platformie Azure. Podczas pracy lokalnej użyj az login (uwierzytelnianie za pomocą Azure CLI) — Terraform automatycznie pobierze dane uwierzytelniające. W potokach CI/CD użyj obiektu Service Principal z wpisem tajnym klienta lub certyfikatem, przekazanym za pomocą zmiennych środowiskowych. W przypadku agentów lub maszyn wirtualnych hostowanych na platformie Azure użyj obiektu Managed Identity, aby zapewnić najbezpieczniejsze uwierzytelnianie bez wpisów tajnych.

# Option 1: Azure CLI (local dev)
az login
terraform plan

# Option 2: Service principal via environment variables
export ARM_CLIENT_ID='00000000-0000-0000-0000-000000000000'
export ARM_CLIENT_SECRET='your-client-secret'
export ARM_SUBSCRIPTION_ID='00000000-0000-0000-0000-000000000000'
export ARM_TENANT_ID='00000000-0000-0000-0000-000000000000'
terraform plan

Moduły Terraform wielokrotnego użytku

Podobnie jak moduły Bicep, moduły Terraform umożliwiają pakowanie i ponowne wykorzystywanie wzorców infrastruktury. Moduł to katalog zawierający pliki .tf. Odwołuje się do niego za pomocą bloku module, przekazuje dane wejściowe przez variables i korzysta z wartości wyjściowych. Terraform Registry zawiera setki modułów platformy Azure utworzonych przez społeczność i zweryfikowanych, których można używać bezpośrednio, na przykład modułu sieciowego AzureRM.

# Use a module from the Terraform Registry
module 'vnet' {
  source  = 'Azure/vnet/azurerm'
  version = '4.0.0'

  resource_group_name = azurerm_resource_group.main.name
  vnet_location       = azurerm_resource_group.main.location
  use_for_each        = true
  address_space       = ['10.0.0.0/16']
  subnet_prefixes     = ['10.0.1.0/24', '10.0.2.0/24']
  subnet_names        = ['web', 'app']
}

Kiedy wybrać Terraform, a kiedy Bicep

Wybierz Bicep, gdy organizacja korzysta wyłącznie z platformy Azure i zależy jej na ścisłej integracji z nowymi funkcjami platformy Azure (Bicep obsługuje nowe typy zasobów od pierwszego dnia). Wybierz Terraform, gdy zarządzasz zasobami u wielu dostawców chmury, potrzebujesz rozbudowanego ekosystemu modułów społeczności lub preferujesz składnię HCL i zestaw narzędzi HashiCorp. Oba rozwiązania sprawdzają się we wdrożeniach wyłącznie na platformie Azure — często decydują preferencje organizacji.

Importowanie istniejących zasobów

Jeśli zasoby już istnieją na platformie Azure i zostały utworzone przed rozpoczęciem korzystania z Terraform, można objąć je zarządzaniem Terraform za pomocą terraform import. To polecenie pobiera bieżący stan zasobu i dodaje go do pliku stanu Terraform. Po zaimportowaniu zasobu należy ręcznie napisać odpowiadający mu blok konfiguracji, dopasować go do zaimportowanego zasobu, a następnie uruchomić terraform plan, aby potwierdzić brak różnic.

# Import an existing resource group into Terraform state
terraform import \
  azurerm_resource_group.main \
  '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/existing-rg'

# Terraform 1.5+ supports import blocks in configuration
import {
  to = azurerm_resource_group.main
  id = '/subscriptions/00000000.../resourceGroups/existing-rg'
}

Najlepsze praktyki Terraform na platformie Azure

Podczas korzystania z Terraform na platformie Azure należy stosować następujące najlepsze praktyki: przechowywać stan zdalnie w usłudze Azure Blob Storage z włączoną blokadą stanu, używać obszarów roboczych lub oddzielnych plików stanu dla różnych środowisk, nigdy nie zatwierdzać wpisów tajnych w kontroli źródła — zamiast tego używać źródeł danych Azure Key Vault, przypinać wersje dostawców, aby uniknąć zmian powodujących niezgodność, oraz uruchamiać Terraform w potoku CI/CD (Azure Pipelines lub GitHub Actions) z bramkami zatwierdzania planu.

Szybki sprawdzian

Sprawdź swoją wiedzę na temat zagadnień Microsoft Azure Fundamentals (AZ-900) przedstawionych w tej lekcji.

Podsumowanie lekcji

W tej lekcji poznali Państwo następujące zagadnienia: Terraform to niezależne od chmury narzędzie IaC, które za pomocą dostawcy AzureRM zarządza zasobami platformy Azure; proces init, plan, apply umożliwia bezpieczne i przewidywalne wdrożenia; a zdalny stan w usłudze Azure Blob Storage jest niezbędny do współpracy zespołowej. Następnie omówimy tworzenie planów App Service i aplikacji Web Apps.

Często zadawane pytania

Czy lekcja „Terraform na platformie Azure” jest bezpłatna?

Tak — pełny tekst „Terraform na platformie Azure” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Azure Fundamentals, przejdź na CoddyKit PRO. Kurs Azure Fundamentals zawiera 4 lekcji w sumie.

Co nauczysz się w „Terraform na platformie Azure”?

Skonfiguruj dostawcę Terraform AzureRM, napisz podstawowy plan infrastruktury i dowiedz się, kiedy warto wybrać Terraform zamiast natywnych narzędzi ARM/Bicep. Ćwiczysz Azure Fundamentals z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Azure Fundamentals?

Nie wymagamy żadnego doświadczenia. Azure Fundamentals w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Terraform na platformie Azure”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Azure Fundamentals?

Tak. Każda lekcja Azure Fundamentals zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Jak działa Azure Resource Manager
  2. Pisanie szablonów ARM
  3. Bicep: nowoczesna infrastruktura Azure jako kod
  4. Terraform na platformie Azure
← Powrót do Azure Fundamentals