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

Bu makalede, Azure'da Terraform 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ı

Sağlayıcı kayıt durumu listelenemiyor

Hata iletisi:

Hata: Sağlayıcı kayıt durumu listelenemiyor, bunun nedeni geçersiz kimlik bilgileri veya hizmet sorumlusunun Resource Manager API'sini kullanma izni olmaması olabilir, 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-000000000000000-0000000-0000-0000- 0000' nesne kimliğine sahip istemci0-00000000000', '/subscriptions/00000000-000000-0000-0000-0000000000000' kapsamında 'Microsoft.Resources/subscriptions/providers/read' eylemi gerçekleştirme yetkisine sahip değil veya kapsam geçersiz. Erişim yeni verildiyse lütfen kimlik bilgilerinizi yenileyin."

Arka plan: Cloud Shell'den Terraform komutları çalıştırıyorsanız ve belirli Terraform/Azure ortam değişkenlerini tanımladıysanız, bazen çakışmaları görebilirsiniz. Ortam değişkenleri ve temsil ettikleri Azure değeri aşağıdaki tabloda listelenmiştir:

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 sorumlusu parolası

Neden: Bu yazıdan itibaren Cloud Shell'de çalışan Terraform betiği, geçerli Azure aboneliğindeki ARM_SUBSCRIPTION_ID değerleri kullanarak ve ARM_TENANT_ID ortam değişkenlerinin üzerine yazar. Sonuç olarak, ortam değişkenleri tarafından başvuruda bulunan hizmet sorumlusunun geçerli Azure aboneliği üzerinde hakları yoksa, terraform işlemleri başarısız olur.

Durum kilidi alma hatası

Hata iletisi:

Hata: Durum kilidi alma hatası; Hata iletisi: 2 hata oluştu:
* durum blobu 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. Yerel ve uzak durum dosyaları için geçerlidir.

Neden: Bu hatanın iki olası nedeni vardır. Birincisi, bir Terraform komutunun durum dosyasında zaten çalışıyor olması ve dosyanın kilitlenmesini zorunlu kılmış olmasıdır, bu nedenle hiçbir şey bozulmaz. İ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 zaten 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 işlem 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.

Screenshot that shows the Azure Storage container Break lease button.

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.