Memecahkan masalah umum saat menggunakan Terraform di Azure

Artikel ini mencantumkan masalah umum dan solusi yang mungkin dilakukan saat menggunakan Terraform di Azure.

Jika Anda mengalami masalah yang spesifik mengenai Terraform, gunakan salah satu saluran dukungan komunitas HashiCorp.

Saluran dukungan khusus HashiCorp Terraform

Tidak dapat mencantumkan status pendaftaran penyedia

Pesan kesalahan:

Kesalahan: Tidak dapat mencatat status pendaftaran penyedia, ada kemungkinan ini disebabkan oleh kredensial yang tidak valid atau perwakilan layanan tidak memiliki izin untuk menggunakan Resource Manager API, kesalahan Azure: sumber daya. ProvidersClient#List: Gagal menanggapi permintaan: StatusCode=403 -- Kesalahan Asli: autorest/azure: Layanan mengembalikan kesalahan. Status=403 Kode="AuthorizationFailed" Pesan="Klien '00000000-0000-0000-0000-000000000000' dengan id objek '00000000-0000-0000-0000-000000000000' tidak memiliki otorisasi untuk mengerjakan tindakan 'Microsoft.Resources/subscriptions/providers/read' di atas cakupan '/subscriptions/00000000-0000-0000-0000-000000000000' atau cakupan tidak valid. Jika akses baru diberikan belakangan ini, silakan refresh kredensial Anda."

Latar: Jika Anda menjalankan perintah Terraform dari Cloud Shell dan telah menentukan variabel lingkungan Terraform/Azure tertentu, terkadang Anda akan menemukan konflik. Variabel lingkungan dan nilai Azure yang diwakili ditampilkan dalam tabel berikut:

Variabel lingkungan Nilai Azure
ARM_SUBSCRIPTION_ID ID langganan Azure
ARM_TENANT_ID ID penyewa akun Microsoft
ARM_CLIENT_ID ID aplikasi perwakilan layanan Azure
ARM_CLIENT_SECRET Kata sandi perwakilan layanan Azure

Penyebab: Ketika ini ditulis, skrip Terraform yang berjalan di Cloud Shell menimpa ARM_SUBSCRIPTION_ID dan variabel lingkungan ARM_TENANT_ID menggunakan nilai dari langganan Azure saat ini. Akibatnya, jika perwakilan layanan yang dirujuk oleh variabel lingkungan tak memiliki hak atas langganan Azure saat ini, operasi Terraform apa pun akan gagal.

Kesalahan saat mengambil kunci status

Pesan kesalahan:

Kesalahan: Kesalahan memperoleh kunci status; Pesan kesalahan: 2 kesalahan terjadi:
* blob status sudah terkunci
* metadata blob "terraformlockid" kosong
Terraform mengambil kunci status guna melindungi status agar tidak ditulis oleh beberapa pengguna secara bersamaan. Mohon atasi masalah di atas dan coba lagi. Untuk sebagian besar perintah, Anda dapat menonaktifkan penguncian dengan bendera "-lock=false", tetapi ini tidak disarankan.

Latar: Jika Anda menjalankan perintah Terraform terhadap file status Terraform dan kesalahan ini adalah satu-satunya pesan yang muncul, beberapa penyebab berikut mungkin terjadi. Berlaku untuk file status lokal dan jarak jauh.

Penyebab:Ada dua kemungkinan penyebab kesalahan ini. Yang pertama adalah bahwa perintah Terraform sudah berjalan melawan status file dan telah mengunci file secara paksa, sehingga tidak ada yang rusak. Penyebab potensial kedua adalah gangguan koneksi terjadi antara file status dan CLI ketika perintah sedang berjalan. Gangguan ini paling umum terjadi saat Anda menggunakan file status jarak jauh.

Resolusi: Pertama, pastikan Anda belum menjalankan perintah apa pun terhadap file status. Jika Anda bekerja dengan file status lokal, periksa untuk melihat apakah Anda memiliki terminal yang menjalankan suatu perintah. Atau, periksa alur penyebaran Anda untuk melihat apakah ada sesuatu yang berjalan yang mungkin menggunakan file status. Jika ini tidak menyelesaikan masalah, ada kemungkinan bahwa penyebab kedua memicu kesalahan. Untuk file status jarak jauh yang disimpan dalam kontainer akun Azure Storage, Anda dapat menempatkan file tersebut dan gunakan tombol Batalkan sewa.

Screenshot that shows the Azure Storage container Break lease button.

Jika Anda menggunakan back end lain untuk menyimpan file status Anda, sebagai rekomendasi, lihat dokumentasi HashiCorp.

Kesalahan VPN

Untuk informasi tentang menyelesaikan kesalahan VPN, lihat artikel, Memecahkan masalah koneksi VPN hibrida.