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ı
- Sorular, kullanım örnekleri ve yararlı desenler: HashiCorp topluluk portalının Terraform bölümü
- Sağlayıcıyla ilgili sorular: HashiCorp topluluk portalının Terraform Sağlayıcıları bölümü
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.
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.