Infrastructure as Code: Bicep i Terraform (azurerm)
Klikanie w portalu nie skaluje się i nie jest audytowalne. Infrastructure as Code (IaC) opisuje infrastrukturę w plikach tekstowych w repozytorium — co daje wersjonowanie, code review i powtarzalność. W Azure rządzą dwa narzędzia: Bicep i Terraform.
Bicep — natywny język Azure
Bicep to deklaratywny DSL od Microsoftu, kompilowany do szablonów ARM. Zaletą jest natywne wsparcie nowych usług w dniu premiery i brak osobnego stanu (state) — źródłem prawdy jest sam Azure.
param location string = resourceGroup().location
resource storage 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: 'stzeusiac01'
location: location
sku: { name: 'Standard_LRS' }
kind: 'StorageV2'
properties: {
minimumTlsVersion: 'TLS1_2'
allowBlobPublicAccess: false
}
}
Wdrożenie:
az deployment group create \
--resource-group rg-zeus-iac \
--template-file main.bicep \
--parameters location=westeurope
Terraform — wieloplatformowy standard
Terraform (HashiCorp) używa providera azurerm. Jest wyborem, gdy zarządzasz wieloma chmurami (Azure + AWS + GCP) jednym narzędziem i jednym językiem (HCL). Wymaga zarządzania plikiem stanu (state) — najlepiej zdalnie, np. w koncie storage.
terraform {
required_providers {
azurerm = { source = "hashicorp/azurerm", version = "~> 3.0" }
}
}
provider "azurerm" {
features {}
}
resource "azurerm_storage_account" "zeus" {
name = "stzeusiac02"
resource_group_name = azurerm_resource_group.zeus.name
location = "westeurope"
account_tier = "Standard"
account_replication_type = "LRS"
min_tls_version = "TLS1_2"
allow_nested_items_to_be_public = false
}
terraform init
terraform plan -out tfplan
terraform apply tfplan
Które wybrać?
| Kryterium | Bicep | Terraform |
|---|---|---|
| Zasięg | tylko Azure | multi-cloud |
| Zarządzanie stanem | brak (ARM) | wymagane (state) |
| Nowe usługi Azure | natychmiast | z opóźnieniem |
| Język | Bicep DSL | HCL |
| Ekosystem modułów | rosnący | bardzo duży |
Wskazówka: w ProfessNet stosujemy zasadę "Bicep dla projektów czysto Azure, Terraform gdy w grze jest więcej niż jedna chmura". Niezależnie od wyboru — IaC zawsze przez pipeline z code review, nigdy
applyz laptopa.
Jak to widzi ZEUS
ZEUS skanuje repozytoria IaC (Bicep, Terraform) jeszcze przed wdrożeniem —
to shift-left. Wykrywa misconfigi w kodzie (np. allowBlobPublicAccess: true,
otwarte NSG) zanim trafią do produkcji. Po wdrożeniu ZEUS porównuje stan
rzeczywisty z deklarowanym w IaC i raportuje drift — rozjazd między kodem
a tym, co faktycznie działa w chmurze.
W kolejnej lekcji: bezpieczeństwo i Microsoft Defender for Cloud.