Terraform AzureRM 5.0 Sürümündeki Yeni Özellikler ve Yükseltme Rehberi

Terraform AzureRM 5.0 sürümü, Azure Resource Provider kaydı değişiklikleri, isteğe bağlı ön doğrulama ve eski yapılandırmaların kaldırılması gibi önemli iyileştirmeler sunar. Yükseltme sürecinde oluşabilecek sorunları önlemek için adım adım rehber.

I
ITWISE
3 görüntülenme
Terraform AzureRM 5.0 Sürümündeki Yeni Özellikler ve Yükseltme Rehberi

Giriş

Terraform AzureRM provider 5.0, Azure bulut ortamında altyapı yönetimini kolaylaştıran önemli bir ana sürüm olarak yayınlanmıştır. Bu sürüm, Azure Resource Provider (RP) kaydı yönetimi, isteğe bağlı Azure ön doğrulama (preflight validation) ve eski yapılandırma yüzeylerinin kaldırılması gibi birçok yenilik ve iyileştirme içermektedir. Özellikle altyapı değişikliklerinin öngörülemezliğini azaltırken, mevcut yapılandırmaların ve modüllerin uyumluluğunu riske atabilecek değişiklikler de barındırmaktadır.

Temel Değişiklikler ve Yenilikler

1. Azure Resource Provider Kaydı Yönetimindeki Değişiklikler

Terraform AzureRM 5.0, Azure Resource Provider kaydının yönetim şeklini tamamen değiştirmektedir. Önceki sürümlerde, Terraform kullanıcıları tarafından manuel olarak kaydedilmesi gereken birçok RP, artık otomatik olarak kaydedilmektedir. Bu değişiklik, özellikle çok sayıda kaynağın kullanıldığı ortamlarda altyapı yönetimini basitleştirirken, bazı kullanıcıların beklemediği RP kayıtlarına neden olabilir. Örneğin, azurerm_virtual_machine kaynağı kullanıldığında, ilgili RP otomatik olarak kaydedilmektedir.

2. İsteğe Bağlı Azure Ön Doğrulama (Preflight Validation)

Yeni sürüm, Terraform planlama aşamasından önce isteğe bağlı olarak Azure ortamında doğrulama yapılmasını desteklemektedir. Bu özellik, özellikle büyük ve karmaşık altyapıların yönetiminde, kaynak oluşturulmadan önce olası hataların tespit edilmesine yardımcı olur. Ön doğrulama, aşağıdaki kontrolleri gerçekleştirebilir:

  • Kaynak adlarının benzersizliği
  • Azure kotalarının yeterliliği
  • Yetkilendirme ve rol atamalarının doğruluğu

Bu doğrulama, azurerm_prevalidate bloğu kullanılarak etkinleştirilebilir:

provider "azurerm" {
  features {}
  prevalidate {
    enabled = true
  }
}

3. Eski Yapılandırma Yüzeylerinin Kaldırılması

Terraform AzureRM 5.0, daha önceki sürümlerde kullanılan ve artık desteklenmeyen birçok yapılandırma yüzeyini kaldırmaktadır. Bu değişiklikler arasında şunlar yer almaktadır:

  • azurerm_availability_set kaynağının managed özelliği
  • azurerm_storage_account kaynağının enable_blob_encryption özelliği
  • Bazı eski API sürümlerinin desteklenmemesi

Uyarı: Eski yapılandırmalarınızı güncellemezseniz, Terraform planlama veya uygulama aşamasında hata alabilirsiniz. Bu nedenle, yükseltme öncesinde mevcut yapılandırmanızı gözden geçirmeniz önemlidir.

Yükseltme Sürecinde Karşılaşılabilecek Sorunlar ve Çözümleri

Sorun 1: Azure Resource Provider Kaydı Beklenmedik Değişiklikler

Sorun: Yükseltme sonrasında, Terraform tarafından otomatik olarak kaydedilen Azure Resource Provider'lar, beklemediğiniz şekilde abonelik düzeyinde değişikliklere neden olabilir.

Çözüm: Yükseltme öncesinde aşağıdaki adımları izleyin:

  1. Mevcut abonelik durumunu kaydedin:
    az provider list --query "[].namespace" -o tsv
    
  2. Abonelikteki tüm RP'leri listeleyin:
    az provider list --subscription "" --query "[].{Namespace:namespace, RegistrationState:registrationState}" -o table
    
  3. Terraform planını inceleyin: Yükseltme sonrasında Terraform'un hangi RP'leri kaydedeceğini belirlemek için terraform plan komutunu çalıştırın.

Sorun 2: Mevcut Yapılandırmaların Uyumsuzluğu

Sorun: Eski yapılandırma yüzeyleri nedeniyle, Terraform planlama aşamasında hata alabilirsiniz.

Çözüm: Uyumsuzlukları gidermek için aşağıdaki adımları izleyin:

  1. Mevcut yapılandırmayı analiz edin:
    terraform providers
    
  2. Eski özellikleri yeni özelliklerle değiştirin: Örneğin, enable_blob_encryption özelliğini kullanıyorsanız, bunun yerine encryption bloğunu kullanın:
    resource "azurerm_storage_account" "example" {
      name                     = "mystorageaccount"
      resource_group_name      = azurerm_resource_group.example.name
      location                 = azurerm_resource_group.example.location
      account_tier             = "Standard"
      account_replication_type = "GRS"
    
      encryption {
        services {
          blob {
            enabled = true
          }
        }
      }
    }
    
  3. Yapılandırmayı test edin: Değişiklikleri yaptıktan sonra, terraform validate komutunu kullanarak yapılandırmanızın doğru olduğunu doğrulayın.

Sorun 3: Ön Doğrulama Özelliğinin Kullanımı

Sorun: Ön doğrulama özelliğini kullanmak istiyorsunuz, ancak nasıl yapılandıracağınızı bilmiyorsunuz.

Çözüm: Ön doğrulama özelliğini etkinleştirmek için aşağıdaki adımları izleyin:

  1. Azure CLI kurulumunu doğrulayın:
    az --version
    
  2. Ön doğrulama bloğunu yapılandırın:
    provider "azurerm" {
      features {}
      prevalidate {
        enabled = true
        # Gerekirse, doğrulama sırasında kullanılacak Azure CLI komutlarını özelleştirin
        # prevalidate {
        #   enabled = true
        #   az_cli_commands = ["az account show", "az provider list"]
        # }
      }
    }
    
  3. Doğrulamayı çalıştırın:
    terraform plan
    

İpucu: Ön doğrulama sırasında oluşabilecek hataları detaylı olarak görmek için TF_LOG=DEBUG ortam değişkenini kullanabilirsiniz.

Adım Adım Yükseltme Rehberi

1. Hazırlık Aşaması

  1. Abonelik ve kaynak grubu yapısını inceleyin: Yükseltme öncesinde, abonelik düzeyinde ve kaynak grubu düzeyinde oluşabilecek değişiklikleri anlamak için mevcut yapıyı analiz edin.
  2. Terraform sürümünü güncelleyin: Terraform AzureRM provider 5.0, Terraform 0.12 ve üzeri sürümleri gerektirir. Mevcut Terraform sürümünüzü kontrol edin:
    terraform --version
    
  3. Mevcut provider versiyonunu sabitleyin: Yükseltme sırasında oluşabilecek sorunları minimize etmek için provider versiyonunu sabitleyin:
    terraform {
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~> 5.0"
        }
      }
    }
    

2. Test Ortamında Doğrulama

  1. Test aboneliği oluşturun: Yükseltmeyi üretim ortamına uygulamadan önce, ayrı bir test aboneliği oluşturun ve bu abonelikte değişiklikleri test edin.
  2. Terraform durumunu yedekleyin: Mevcut durum dosyasını yedekleyin:
    terraform state pull > terraform.tfstate.backup
    
  3. Yükseltmeyi test edin: Test aboneliğinde aşağıdaki komutları çalıştırın:
    terraform init -upgrade
    terraform plan
    terraform apply
    
  4. Sonuçları analiz edin: Test ortamında oluşabilecek hataları ve değişiklikleri detaylı olarak inceleyin. Özellikle terraform plan çıktısındaki değişikliklere dikkat edin.

3. Üretim Ortamına Uygulama

  1. Yükseltmeyi planlayın: Üretim ortamına yükseltmeyi uygulamadan önce, bir planlama toplantısı yapın ve tüm paydaşları bilgilendirin.
  2. Yedekleme alın: Üretim ortamındaki Terraform durumunu yedekleyin:
    terraform state pull > terraform.tfstate.backup
    
  3. Yükseltmeyi uygulayın: Üretim ortamında aşağıdaki komutları çalıştırın:
    terraform init -upgrade
    terraform plan -out=tfplan
    terraform apply tfplan
    
  4. Değişiklikleri izleyin: Yükseltme sonrasında, Azure portal üzerinden abonelik düzeyindeki değişiklikleri ve oluşabilecek hataları izleyin.

En İyi Uygulamalar ve İpuçları

İpucu 1: Yükseltme öncesinde, terraform validate komutunu kullanarak mevcut yapılandırmanızın geçerli olup olmadığını kontrol edin. Bu, olası hataları erken aşamada tespit etmenizi sağlar.

İpucu 2: Büyük ve karmaşık altyapılarda, yükseltmeyi parçalara ayırarak uygulamak daha güvenlidir. Örneğin, önce temel kaynakları, ardından uygulamaları ve son olarak ağ yapılandırmalarını güncelleyebilirsiniz.

Uyarı: Yükseltme sırasında terraform destroy komutunu kullanmaktan kaçının. Bu komut, tüm kaynakları silerek veri kaybına neden olabilir.

Sonuç

Terraform AzureRM 5.0, Azure altyapı yönetimini daha güvenilir ve tahmin edilebilir hale getiren birçok yenilik sunmaktadır. Ancak, bu yenilikler aynı zamanda mevcut yapılandırmaların ve modüllerin uyumluluğunu riske atabilir. Bu nedenle, yükseltme sürecini dikkatlice planlamak ve test ortamında doğrulamak önemlidir. Yukarıdaki adımları izleyerek, yükseltme sürecini sorunsuz bir şekilde tamamlayabilir ve Azure altyapınızı daha verimli bir şekilde yönetebilirsiniz.

Kaynak

4sysops