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_setkaynağınınmanagedözelliğiazurerm_storage_accountkaynağınınenable_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:
- Mevcut abonelik durumunu kaydedin:
az provider list --query "[].namespace" -o tsv - Abonelikteki tüm RP'leri listeleyin:
az provider list --subscription "" --query "[].{Namespace:namespace, RegistrationState:registrationState}" -o table - Terraform planını inceleyin: Yükseltme sonrasında Terraform'un hangi RP'leri kaydedeceğini belirlemek için
terraform plankomutunu ç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:
- Mevcut yapılandırmayı analiz edin:
terraform providers - Eski özellikleri yeni özelliklerle değiştirin: Örneğin,
enable_blob_encryptionözelliğini kullanıyorsanız, bunun yerineencryptionbloğ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 } } } } - Yapılandırmayı test edin: Değişiklikleri yaptıktan sonra,
terraform validatekomutunu 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:
- Azure CLI kurulumunu doğrulayın:
az --version - Ö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"] # } } } - 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ı
- 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.
- 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 - 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
- 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.
- Terraform durumunu yedekleyin: Mevcut durum dosyasını yedekleyin:
terraform state pull > terraform.tfstate.backup - Yükseltmeyi test edin: Test aboneliğinde aşağıdaki komutları çalıştırın:
terraform init -upgrade terraform plan terraform apply - 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
- Yükseltmeyi planlayın: Üretim ortamına yükseltmeyi uygulamadan önce, bir planlama toplantısı yapın ve tüm paydaşları bilgilendirin.
- Yedekleme alın: Üretim ortamındaki Terraform durumunu yedekleyin:
terraform state pull > terraform.tfstate.backup - 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 - 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 validatekomutunu 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 destroykomutunu 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.



