Menggunakan Azure Export for Terraform dalam skenario tingkat lanjut

Artikel ini menjelaskan cara melakukan beberapa tugas yang lebih canggih dengan Azure Export for Terraform.

  • Tambahkan sumber daya ke lingkungan Terraform yang ada.
  • Mengekspor sumber daya ke lingkungan Terraform yang ada dengan status backend jarak jauh

Menambahkan ke sumber daya yang ada

Secara default, Azure Export for Terraform memastikan direktori output kosong untuk menghindari konflik dengan file pengguna yang ada. Jika Anda perlu mengimpor sumber daya ke file status yang ada, tambahkan --append bendera .

aztfexport [command] --append <scope>

--append Saat bendera ditentukan, Azure Export for Terraform memverifikasi apakah ada atau terraform blok yang sudah ada provider sebelumnya di salah satu file di direktori saat ini. Jika tidak, alat ini membuat file untuk setiap blok dan kemudian melanjutkan ekspor. Jika direktori output memiliki file status, sumber daya yang diekspor diimpor ke dalam file status.

Selain itu, file yang dihasilkan memiliki .aztfexport akhiran sebelum ekstensi - seperti main.aztfexport.tf - untuk menghindari potensi konflik nama file.

Jika Anda menjalankan aztfexport --append beberapa kali, satu main.aztfexport.tf dibuat dengan hasil ekspor ditambahkan ke file setiap kali perintah dijalankan.

Bawa konfigurasi Terraform Anda sendiri

Secara default, Azure Export for Terraform menggunakan backend lokal untuk menyimpan file status. Namun, anda juga dapat menggunakan backend jarak jauh. Azure Export for Terraform memungkinkan Anda menentukan sendiri terraform atau provider blok yang akan diteruskan.

Tentukan blok ini dalam file dalam .tf direktori target Anda, ekspor dengan --append bendera, dan ekspor konfigurasi Anda ke versi backend dan penyedia yang ditentukan (jika disediakan).

Penting

Jika versi AzureRM yang ditentukan tidak cocok dengan versi terinstal Anda saat mengekspor, perintah gagal.

Contoh Azure Storage

Contoh ini didasarkan pada artikel, status Terraform Penyimpanan di Azure Storage.

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>3.0"
    }
  }
    backend "azurerm" {
        resource_group_name  = "tfstate"
        storage_account_name = "storageacc"
        container_name       = "tfstate"
        key                  = "terraform.tfstate"
    }

}

provider "azurerm" {
  features {}
}

Contoh Terraform Cloud

terraform {
  cloud {
    organization = "aztfexport-test"
    workspaces {
      name = "aztfexport-playground"
    }
  }
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = "~>3.0"
    }
  }
}
provider "azurerm" {
  features {
  }
}

Pengalaman sebaris

Untuk mengekspor ke backend sebaris, gunakan --backend-type opsi dan --backend-config . Untuk informasi selengkapnya tentang mengonfigurasi backend Terraform, lihat Konfigurasi backend Terraform.

Dengan menggunakan contoh akun penyimpanan Azure kami, Anda memerlukan yang berikut ini seperti yang didefinisikan dalam dokumentasi backend AzureRM.

  • Nama grup sumber daya
  • Nama akun penyimpanan
  • Nama kontainer penyimpanan

Teruskan parameter ini ke dalam perintah bersama dengan jenis backend Anda:

aztfexport [subcommand] --backend-type=azurerm \
                        --backend-config=resource_group_name=<resource group name> \
                        --backend-config=storage_account_name=<account name> \
                        --backend-config=container_name=<container name> \
                        --backend-config=key=terraform.tfstate 

Poin utama:

  • Dalam contoh sebelumnya, saya menggunakan karakter kelanjutan baris Unix sehingga kode ditampilkan dengan baik di browser. Anda mungkin perlu mengubah karakter ini agar sesuai dengan lingkungan baris perintah Anda - seperti PowerShell - atau menggabungkan perintah ke satu baris.
  • Jika status backend sudah ada, Azure Export for Terraform menggabungkan sumber daya baru dengan status yang ada secara otomatis. Anda tidak perlu menentukan opsi sebaris --append .

Mengekspor sumber daya Azure ke lingkungan Terraform yang sudah ada

Sekarang, mari kita satukan semuanya! Bayangkan sumber daya baru telah dibuat di luar Terraform yang perlu dipindahkan ke manajemen Terraform. Untuk menyelesaikan bagian , pastikan Anda memiliki backend yang dikonfigurasi. Tutorial ini menggunakan konfigurasi yang sama yang ditentukan dalam tutorial status jarak jauh penyimpanan Azure.

  1. Di direktori induk tempat Anda ingin direktori sementara dibuat, jalankan perintah berikut:

    aztfexport resource -o tempdir --hcl-only <resource_id>
    

    Poin utama:

    • Bendera -o menentukan untuk membuat direktori jika tidak ada.
    • Bendera --hcl-only menentukan untuk mengekspor sumber daya yang dikonfigurasi ke HCL
  2. Setelah memeriksa bahwa sumber daya dapat ditambahkan, gunakan file pemetaan yang dihasilkan dan --append bendera untuk memastikan Azure Export menghormati status jarak jauh dan versi penyedia yang sudah ada sebelumnya dalam lingkungan kami yang ada:

    aztfexport map --append `./tempdir/aztfexportResourceMapping.json`
    
  3. Jalankan init terraform.

    terraform init --upgrade
    
  4. Jalankan paket terraform.

  5. Ekspor Azure untuk Terraform harus menampilkan Tidak ada perubahan yang diperlukan.

Selamat! Infrastruktur Anda dan statusnya yang sesuai telah berhasil ditambahkan ke lingkungan Terraform Anda.

Jika paket Anda mengalami masalah, lihat Konsep Azure Export for Terraform untuk memahami batasan mengenai penyebaran kode yang dihasilkan oleh --hcl-only. Jika artikel tersebut tidak membantu Anda, buka masalah GitHub.

Langkah berikutnya