Terraform durumunu Azure Depolama’da depolama
Terraform durumu, dağıtılan kaynakları Terraform yapılandırmaları ile mu mutabakata varmak için kullanılır. Durum, Terraform'a hangi Azure kaynaklarının ekli, güncelleştirilecek veya silineceklerini biliyor olabilir.
Varsayılan olarak Terraform durumu yerel olarak depolanır ve bu durum aşağıdaki nedenlerden dolayı ideal değildir:
- Yerel eyalet bir ekipte veya işbirliği ortamında iyi çalışmıyor.
- Terraform durumu hassas bilgiler içerebilir.
- Durumu yerel olarak depolamak yanlışlıkla silme ihtimalini artırır.
Bu makalede şunları öğreneceksiniz:
- Azure depolama hesabı oluşturma
- Uzak Terraform durumunu depolamak için Azure depolamayı kullanın.
- Durum kilitlemeyi anlama
- Beklemede şifrelemeyi anlama
1. Ortamınızı yapılandırma
- Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Terraform'yi yapılandırma: Henüz bunu yapmamışsanız, aşağıdaki seçeneklerden birini kullanarak Terraform'ı yapılandırabilirsiniz:
2. Uzak durum depolama hesabını yapılandırma
Azure Depolama'i arka uç olarak kullanmadan önce bir depolama hesabı oluşturmanız gerekir.
Azure depolama hesabı ve kapsayıcısı oluşturmak için aşağıdaki komutları veya yapılandırmayı çalıştırın:
#!/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
Önemli noktalar:
- Terraform durumunu depolamak için Azure depolama hesabına genel erişime izin verilir.
- Azure depolama hesapları için genel olarak benzersiz bir ad gerekir. Depolama hesabı adlarının sorunlarını giderme hakkında daha fazla bilgi edinmek için bkz. Depolama hesabı adlarının hatalarını düzeltme.
3. Terraform arka uç durumunu yapılandırma
Arka uç durumunu yapılandırmak için aşağıdaki Azure depolama bilgilerine ihtiyacınız vardır:
- storage_account_name:Azure Depolama hesabı.
- container_name:Blob kapsayıcının adı.
- key:Oluşturulacak durum deposu dosyasının adı.
- access_key:Depolama erişim anahtarı.
Bu değerlerin her biri Terraform yapılandırma dosyasında veya komut satırı üzerinde belirtilebilir. Değer için bir ortam değişkeni kullanmanizi access_key öneririz. Ortam değişkeni kullanmak, anahtarın diske yazlnması engel olur.
Depolama erişim anahtarını almak ve bir ortam değişkeni olarak depolamak için aşağıdaki komutları çalıştırın:
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
Önemli noktalar:
Azure hesap erişim Depolama daha fazla korumak için bu anahtarı Azure Key Vault. Ortam değişkeni daha sonra aşağıdakine benzer bir komut kullanılarak ayarlanabilir. Daha fazla bilgi Azure Key Vault için, Azure Key Vault bakın.
export ARM_ACCESS_KEY=$(az keyvault secret show --name terraform-backend-key --vault-name myKeyVault --query value -o tsv)
Bir yapılandırma bloğu ile Terraform backend yapılandırması oluşturun.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "=2.46.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"
}
yerine <storage_account_name> Azure depolama hesabınız adını yazın.
Yapılandırmayı başlatmak için aşağıdaki komutu çalıştırın:
terraform init
Yapılandırmayı çalıştırmak için aşağıdaki komutu çalıştırın:
terraform apply
Artık durum dosyasını Azure depolama blobu içinde Depolama bulabilirsiniz.
4. Durum kilitlemeyi anlama
Azure Depolama blobları durum yazan işlemden önce otomatik olarak kilitlenir. Bu düzen eşzamanlı durum işlemlerini önler ve bozulmaya neden olabilir.
Daha fazla bilgi için Terraform belgelerinde Durum kilitleme'ye bakın.
Blobu incelerken kilit, blobu Azure portal Azure yönetim aracı aracılığıyla da görebilir.

5. Beklemede şifrelemeyi anlama
Azure blob'larında depolanan veriler kalıcı olmadan önce şifrelenir. Terraform, gerektiğinde durumu arka uçtan alabilir ve yerel bellekte depolar. Bu düzen kullanılırken, durum hiçbir zaman yerel diske yazılır.
Azure veri şifrelemesi hakkında daha fazla Depolama için bkz. Azure Depolama hizmet şifrelemesi için beklemede olan veriler için.
Azure'da Terraform sorunlarını giderme
Azure'da Terraform kullanırken karşılaşılan yaygın sorunları giderme