Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, terraform Azure kullanılırken karşılaşılan yaygın sorunlar ve olası çözümler listelenir.
Terraform'a özgü bir sorunla karşılaşırsanız HashiCorp'un topluluk destek kanallarından birini kullanın.
HashiCorp Terraform'a özgü destek kanalları
- Sorular, kullanım örnekleri ve yararlı desenler: HashiCorp topluluk portalının Terraform bölümü
- Sorular, kullanım örnekleri ve yararlı desenler: HashiCorp topluluk portalının Terraform bölümü
Sağlayıcı kayıt durumu listelenemiyor
Hata iletisi:
Hata: Sağlayıcı kayıt durumu listelenemiyor. Bu hata, geçersiz kimlik bilgileri nedeniyle veya hizmet sorumlusunun Resource Manager API'sini kullanma izni olmadığından oluşabilir. Azure hatası: kaynaklar. ProvidersClient#List: İstek yanıtlanırken hata oluştu: StatusCode=403 -- Özgün Hata: autorest/azure: Hizmet bir hata döndürdü. Status=403 Code="AuthorizationFailed" Message="'00000000-0000-0000-0000-000000000000' istemcisi, '00000000-0000-0000-0000-000000000000' nesne kimliğiyle, '/subscriptions/00000000-0000-0000-0000-000000000000' kapsamı üzerinde 'Microsoft.Resources/subscriptions/providers/read' eylemini gerçekleştirme yetkisine sahip değil veya kapsam geçersiz. Erişim yeni verildiyse kimlik bilgilerinizi yenileyin."
Arka plan: Cloud Shell Terraform komutlarını çalıştırır ve belirli Terraform/Azure ortam değişkenlerini tanımlarsanız çakışmalar görebilirsiniz. Aşağıdaki tabloda ortam değişkenleri ve temsil ettikleri Azure değerleri listelenir:
| Ortam değişkeni | Azure değeri |
|---|---|
| ARM_SUBSCRIPTION_ID | Azure abonelik kimliği |
| ARM_TENANT_ID | Microsoft hesabı kiracı kimliği |
| ARM_CLIENT_ID | Azure hizmet sorumlusu uygulama kimliği |
| ARM_CLIENT_SECRET | Azure hizmet sorumlusunun parolası |
Neden: Bu yazının yazıldığı sırada, Cloud Shell’de çalışan Terraform betiği, geçerli Azure aboneliğindeki değerleri kullanarak ARM_TENANT_ID ve ARM_SUBSCRIPTION_ID ortam değişkenlerinin üzerine yazar. Sonuç olarak, ortam değişkenlerinin işaret ettiği hizmet sorumlusunun mevcut Azure aboneliği üzerinde gerekli izinleri yoksa Terraform işlemleri başarısız olur.
Durum kilidi alınırken hata oluştu
Hata iletisi:
Hata: Durum kilidi alma hatası; Hata iletisi: 2 hata oluştu:
* durum bloku zaten kilitli
* blob meta verileri "terraformlockid" boştu
Terraform, durumu aynı anda birden çok kullanıcı tarafından yazılmasını önleyen bir durum kilidi alır. Lütfen yukarıdaki sorunu çözün ve yeniden deneyin. Çoğu komut için "-lock=false" bayrağıyla kilitlemeyi devre dışı bırakabilirsiniz, ancak bu önerilmez.
Arka plan: Terraform durum dosyasında Terraform komutları çalıştırıyorsanız ve görüntülenen tek ileti bu hataysa aşağıdaki nedenler geçerli olabilir. Bu hata yerel ve uzak durum dosyaları için geçerlidir.
Neden: Bu hatanın iki olası nedeni vardır. İlk neden, bir Terraform komutunun durum dosyası üzerinde zaten çalışıyor olması ve bu nedenle dosyayı kilitlemiş olmasıdır; böylece bir şeyin bozulması önlenir. İkinci olası neden, komutlar çalışırken durum dosyası ile CLI arasında bir bağlantı kesintisi olmasıdır. Bu kesinti en yaygın olarak uzak durum dosyalarını kullanırken oluşur.
Çözüm: İlk olarak, durum dosyasında herhangi bir komut çalıştırmadığınızdan emin olun. Yerel bir durum dosyasıyla çalışıyorsanız, komut çalıştıran terminalleriniz olup olmadığını denetleyin. Alternatif olarak, çalışan bir şeyin durum dosyasını kullanıp kullanmadığını görmek için dağıtım işlem hatlarınızı denetleyin. Bu koşul sorunu çözmezse ikinci neden hatayı tetiklemiş olabilir. Azure Depolama hesabı kapsayıcısında depolanan uzak durum dosyası için dosyayı bulabilir ve Kirayı kes düğmesini kullanabilirsiniz.
Durum dosyanızı depolamak için diğer arka uçları kullanıyorsanız, öneriler için HashiCorp belgelerine bakın.
VPN hataları
VPN hatalarını çözme hakkında bilgi için Karma VPN bağlantısı sorunlarını giderme makalesine bakın.
Terraform depolama hesabını silmeyi ve yeniden oluşturmayı planlıyor
Terraform, Azure’da depolama hesabında Terraform dışında değişiklik yapıldıktan sonra bir Azure depolama hesabını silip yeniden oluşturmayı planlayabilir. Bu davranış, bölgesel olmayan küme (LRS, GRS, RA-GRS) ile bölgesel küme (ZRS, GZRS, RA-GZRS) arasındaki sınırı aşan desteklenen bir Azure Depolama hesap yedekliliği dönüştürmesi account_replication_type sırasında oluşabilir.
Planı uygulamadan önce önerilen değişiklikleri gözden geçirin ve Terraform'un depolama hesabı değiştirmenin neden gerekli olduğunu onaylayın. Depolama hesabını yeniden oluşturmak uygulama kapalı kalma süresine veya veri kaybına neden olabilir.
Bu riski azaltmak için:
- Depolama hesaplarını yöneten dağıtımlar için otomatik onayı devre dışı bırakın ve her
terraform planöğesini gözden geçirin. - Depolama hesabı kaynağının
prevent_destroy = truebloğundalifecycleyapılandırın. - Dönüştürmeye başlamadan önce,
ignore_changesöğesine geçici olarakaccount_replication_typeekleyin. - Dönüştürme işleminden sonra Terraform durumunu güncelleştirmek için komutunu çalıştırın
terraform apply -refresh-only, ardından Terraform yapılandırmanızı dağıtılan depolama hesabıyla eşleşecek şekilde güncelleştirin. -
terraform planöğesini yalnızcaignore_changeskomutunu çalıştırıp bunun beklenmeyen değişiklikler bildirmediğini doğruladıktan sonra kaldırın.
Ayrıntılı dönüştürme kılavuzu için bkz. Durum bilgisi olan Azure kaynakları için Terraform kaymasını önleme.