Aracılığıyla paylaş


Terraform durumunu Azure Depolama’da depolama

Terraform , bulut altyapısının tanımlanmasını, önizlemesini ve dağıtımını sağlar. Terraform kullanarak HCL söz dizimlerini kullanarak yapılandırma dosyaları oluşturursunuz. HCL söz dizimi, Azure gibi bulut sağlayıcısını ve bulut altyapınızı oluşturan öğeleri belirtmenize olanak tanır. Yapılandırma dosyalarınızı oluşturduktan sonra, altyapı değişikliklerinizin dağıtılmadan önce önizlemesini görüntülemenizi sağlayan bir yürütme planı oluşturursunuz. Değişiklikleri doğruladıktan sonra, altyapıyı dağıtmak için yürütme planını uygularsınız.

Terraform durumu, dağıtılan kaynakları Terraform yapılandırmalarıyla mutabık hale getirmek için kullanılır. Durum, Terraform'un hangi Azure kaynaklarını ekleyeceğini, güncelleştireceği veya sileceklerini bilmesini sağlar.

Terraform durumu varsayılan olarak yerel olarak depolanır ve bu durum aşağıdaki nedenlerle ideal değildir:

  • Yerel durum, ekipte veya işbirliğine dayalı bir ortamda iyi çalışmaz.
  • Terraform durumu hassas bilgiler içerebilir.
  • Durumu yerel olarak depolamak, yanlışlıkla silme olasılığını 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
  • Bekleyen şifrelemeyi anlama

1. Ortamınızı yapılandırma

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

2. Uzak durum depolama hesabını yapılandırma

Azure Depolama 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:

  • Azure depolama hesapları genel olarak benzersiz bir ad gerektirir. Depolama hesabı adlarıyla ilgili sorunları giderme hakkında daha fazla bilgi edinmek için bkz . Depolama hesabı adlarıyla ilgili hataları giderme.
  • Terraform durumu düz metinde depolanır ve gizli diziler içerebilir. Durum yanlış güvenliyse sistemlere yetkisiz erişim ve veri kaybına neden olabilir.
  • Bu örnekte Terraform, Erişim Anahtarı kullanarak Azure depolama hesabında kimlik doğrulaması yapar. Üretim dağıtımında azurerm arka ucu tarafından desteklenen kullanılabilir kimlik doğrulama seçeneklerini değerlendirmeniz ve kullanım örneğiniz için en güvenli seçeneği kullanmanız önerilir.
  • Bu örnekte, bu Azure depolama hesabına genel ağ erişimine izin verilir. Üretim dağıtımında, depolama güvenlik duvarı, hizmet uç noktası veya özel uç nokta kullanarak bu depolama hesabına erişimi kısıtlamak önerilir.

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ının adı.
  • container_name: Blob kapsayıcısı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ında belirtilebilir. Değer için access_key bir ortam değişkeni kullanmanızı öneririz. Ortam değişkeni kullanmak anahtarın diske yazılmasını engeller.

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 Depolama hesabı erişim anahtarını daha fazla korumak için Azure Key Vault'ta depolayın. Ortam değişkeni daha sonra aşağıdakine benzer bir komut kullanılarak ayarlanabilir. Azure Key Vault hakkında daha fazla bilgi için Azure Key Vault belgelerine bakın.

    export ARM_ACCESS_KEY=$(az keyvault secret show --name terraform-backend-key --vault-name myKeyVault --query value -o tsv)
    

Yapılandırma bloğuyla Terraform backend yapılandırması oluşturun.

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"
}

değerini Azure depolama hesabınızın adıyla değiştirin <storage_account_name> .

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 blobunda bulabilirsiniz.

4. Durum kilitlemeyi anlama

Azure Depolama blobları, durum yazan herhangi bir işlemden önce otomatik olarak kilitlenir. Bu düzen eşzamanlı durum işlemlerini engeller ve bu da bozulmaya neden olabilir.

Daha fazla bilgi için Terraform belgelerindeki Durum kilitleme bölümüne bakın.

Azure portalı veya diğer Azure yönetim araçları aracılığıyla blobu incelediğinizde kilidi görebilirsiniz.

Azure blob with lock

5. Bekleyen şifrelemeyi anlama

Azure blobunda depolanan veriler kalıcı hale gelmeden önce şifrelenir. Terraform gerektiğinde durumu arka uçtan alır ve yerel bellekte depolar. Bu düzeni kullanırsanız, durum hiçbir zaman yerel diskinize yazılır.

Azure Depolama şifrelemesi hakkında daha fazla bilgi için bkz. Bekleyen veriler için Azure Depolama hizmet şifrelemesi.

Azure'da Terraform sorunlarını giderme

Azure'da Terraform kullanırken karşılaşılan yaygın sorunları giderme

Sonraki adımlar