Terraform-állapot tárolása az Azure Storage-ban
A Terraform lehetővé teszi a felhőinfrastruktúra definícióját, előzetes verzióját és üzembe helyezését. A Terraform használatával konfigurációs fájlokat hozhat létre HCL-szintaxissal. A HCL szintaxissal megadhatja a felhőszolgáltatót – például az Azure-t – és a felhőinfrastruktúra elemeit. A konfigurációs fájlok létrehozása után létrehoz egy végrehajtási tervet , amely lehetővé teszi az infrastruktúra változásainak előzetes megtekintését az üzembe helyezés előtt. A módosítások ellenőrzése után alkalmazza a végrehajtási tervet az infrastruktúra üzembe helyezésére.
A Terraform-állapot az üzembe helyezett erőforrások Terraform-konfigurációkkal való összeegyeztetésére szolgál. Az állapot lehetővé teszi a Terraform számára, hogy megtudja, milyen Azure-erőforrásokat vehet fel, frissíthet vagy törölhet.
Alapértelmezés szerint a Terraform-állapot helyileg van tárolva, ami a következő okok miatt nem ideális:
- A helyi állapot nem működik jól csapatban vagy együttműködési környezetben.
- A Terraform-állapot bizalmas információkat tartalmazhat.
- Az állapot helyi tárolása növeli a véletlen törlés esélyét.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
- Azure-tárfiók létrehozása
- Az Azure Storage használatával távoli Terraform-állapotot tárolhat.
- Az állapotzárolás ismertetése
- A inaktív titkosítás ismertetése
1. A környezet konfigurálása
- Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
A Terraform konfigurálása: Ha még nem tette meg, konfigurálja a Terraformot az alábbi lehetőségek egyikével:
2. Távoli állapotú tárfiók konfigurálása
Az Azure Storage háttérrendszerként való használata előtt létre kell hoznia egy tárfiókot.
Azure Storage-fiók és -tároló létrehozásához futtassa a következő parancsokat vagy konfigurációt:
#!/bin/bash
RESOURCE_GROUP_NAME=tfstate
STORAGE_ACCOUNT_NAME=tfstate$RANDOM
CONTAINER_NAME=tfstate
# Create resource group
az group create --name $RESOURCE_GROUP_NAME --location eastus
# Create storage account
az storage account create --resource-group $RESOURCE_GROUP_NAME --name $STORAGE_ACCOUNT_NAME --sku Standard_LRS --encryption-services blob
# Create blob container
az storage container create --name $CONTAINER_NAME --account-name $STORAGE_ACCOUNT_NAME
Főbb pontok:
- Az Azure Storage-fiókok globálisan egyedi nevet igényelnek. A tárfiókok nevének hibaelhárításával kapcsolatos további információkért lásd : Tárfióknevek hibáinak elhárítása.
- A Terraform-állapot egyszerű szövegben van tárolva, és titkos kulcsokat tartalmazhat. Ha az állapotot helytelenül védik, a rendszerekhez való jogosulatlan hozzáférés és az adatvesztés eredményezheti.
- Ebben a példában a Terraform egy Hozzáférési kulcs használatával hitelesíti az Azure Storage-fiókot. Éles környezetben javasoljuk, hogy értékelje ki az Azurerm háttérrendszer által támogatott elérhető hitelesítési lehetőségeket , és használja a legbiztonságosabb beállítást a használati esethez.
- Ebben a példában a nyilvános hálózati hozzáférés engedélyezett ehhez az Azure Storage-fiókhoz. Éles környezetben ajánlott korlátozni a tárfiókhoz való hozzáférést egy tárolási tűzfal, szolgáltatásvégpont vagy privát végpont használatával.
3. Terraform háttérállapot konfigurálása
A háttérállapot konfigurálásához a következő Azure Storage-információkra van szüksége:
- storage_account_name: Az Azure Storage-fiók neve.
- container_name: A blobtároló neve.
- kulcs: A létrehozandó állapottárfájl neve.
- access_key: A tárelérési kulcs.
Mindegyik érték megadható a Terraform konfigurációs fájljában vagy a parancssorban. Javasoljuk, hogy használjon környezeti változót az access_key
értékhez. Környezeti változó használata megakadályozza, hogy a kulcs lemezre legyen írva.
Futtassa a következő parancsokat a tárelérési kulcs lekéréséhez és környezeti változóként való tárolásához:
ACCOUNT_KEY=$(az storage account keys list --resource-group $RESOURCE_GROUP_NAME --account-name $STORAGE_ACCOUNT_NAME --query '[0].value' -o tsv)
export ARM_ACCESS_KEY=$ACCOUNT_KEY
Főbb pontok:
Az Azure Storage-fiók hozzáférési kulcsának további védelme érdekében tárolja az Azure Key Vaultban. A környezeti változó ezután az alábbihoz hasonló paranccsal állítható be. Az Azure Key Vaultról további információt az Azure Key Vault dokumentációjában talál.
export ARM_ACCESS_KEY=$(az keyvault secret show --name terraform-backend-key --vault-name myKeyVault --query value -o tsv)
Terraform-konfiguráció létrehozása konfigurációs backend
blokktal.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>3.0"
}
}
backend "azurerm" {
resource_group_name = "tfstate"
storage_account_name = "<storage_account_name>"
container_name = "tfstate"
key = "terraform.tfstate"
}
}
provider "azurerm" {
features {}
}
resource "azurerm_resource_group" "state-demo-secure" {
name = "state-demo"
location = "eastus"
}
Cserélje le <storage_account_name>
az Azure Storage-fiók nevére.
Futtassa a következő parancsot a konfiguráció inicializálásához:
terraform init
Futtassa a következő parancsot a konfiguráció futtatásához:
terraform apply
Most már megtalálhatja az állapotfájlt az Azure Storage-blobban.
4. Az állapotzárolás ismertetése
Az Azure Storage-blobok automatikusan zárolva lesznek az állapotot író műveletek előtt. Ez a minta megakadályozza az egyidejű állapotműveleteket, ami sérülést okozhat.
További információ: Állapotzárolás a Terraform dokumentációjában.
A zárolás akkor jelenik meg, ha a blobot az Azure Portalon vagy más Azure management-eszközökön keresztül vizsgálja meg.
5. A inaktív titkosítás ismertetése
Az Azure-blobokban tárolt adatok titkosítva lesznek, mielőtt megmaradnak. Szükség esetén a Terraform lekéri az állapotot a háttérrendszerből, és a helyi memóriában tárolja. Ha ezt a mintát használja, az állapot soha nem lesz megírva a helyi lemezre.
Az Azure Storage-titkosítással kapcsolatos további információkért tekintse meg az Inaktív adatok Azure Storage-szolgáltatás titkosítását.
A Terraform hibaelhárítása az Azure-ban
A Terraform Azure-beli használatakor felmerülő gyakori problémák elhárítása
További lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: