Pemilihan dan penamaan sumber daya yang disesuaikan menggunakan Azure Export for Terraform

Azure Export for Terraform menyediakan berbagai opsi untuk menyesuaikan sumber daya mana yang Anda ekspor.

Dalam artikel ini, Anda mempelajari pro dan kontra untuk setiap opsi.

  • Menggunakan UI
  • Menggunakan Mode Kueri
  • Menggunakan File Pemetaan

Menggunakan antarmuka pengguna

Saat Anda menjalankan Azure Export for Terraform dalam mode interaktif, sumber daya yang ditentukan (melalui parameter yang Anda tentukan saat menjalankan) ditampilkan. Secara default, semua sumber daya diekspor.

Hapus bertindak sebagai tombol untuk melompati atau menyertakan sumber daya. Untuk menghapus sumber daya agar tidak diekspor, gunakan tombol panah untuk memilih sumber daya yang diinginkan dan tekan Hapus. Sumber daya diperbarui untuk menampilkan "Lewati".

Untuk membatalkan tindakan lewati, verifikasi bahwa sumber daya yang dilewati dipilih, dan tekan Hapus lagi.

Pro:

  • Memerlukan penggunaan satu tombol alih.
  • Tidak perlu mengetahui sumber daya yang Anda inginkan sebelum menjalankan perintah.

Kontra:

  • Tindakan dapat memakan waktu jika Anda memiliki banyak sumber daya untuk digulir dan dilewati.

Menggunakan mode kueri

Menerapkan filter menggunakan sintaks kueri Azure Resource Graph adalah teknik yang ampuh saat Anda mengetahui dengan tepat filter apa yang Anda butuhkan.

aztfexport query [option] <ARG_where_predicate>

Sebagai contoh, katakanlah Anda memiliki grup sumber daya bernama myResourceGroup yang memiliki banyak sumber daya termasuk sumber daya jaringan. Jika Anda hanya ingin mengekspor sumber daya jaringan, Anda dapat menggunakan sintaks berikut:

aztfexport query -n "resourceGroup =~ 'myResourceGroup' and type contains 'Microsoft.Network'"

Pro:

  • Perintah tunggal tanpa diperlukan pengeditan manual.
  • Mendukung jumlah filter yang tidak terbatas.
  • Menangani sejumlah besar sumber daya secara efisien.

Kontra:

  • Mudah untuk mengecualikan sumber daya yang perlu Anda ekspor.
  • Membutuhkan pengetahuan tentang sintaks Azure Resource Graph.

Menggunakan file pemetaan

Sintaks berikut menunjukkan dasar-dasar untuk mengekspor sekumpulan sumber daya yang ditentukan dalam file pemetaan sumber daya:

aztfexport mapping-file [option] <resource_mapping_file>

Anda dapat menggunakan file pemetaan dalam mode interaktif atau non-interaktif:

  • Mode interaktif: Tekan s saat berjalan secara interaktif dalam tampilan daftar sumber daya.
  • Mode non-interaktif: Anda dapat menghasilkan file pemetaan di semua perintah ekspor (resource, , resource-groupquery, mapping file) dengan menambahkan --generate-mapping-file bendera.

Jika kasus penggunaan Anda memerlukan modifikasi pra-ekspor, Anda dapat membuat atau mengedit file pemetaan secara manual. Berikut adalah beberapa contoh kapan Anda ingin mengedit file pemetaan Anda sendiri secara manual:

Kasus penggunaan Langkah-langkah
Anda memiliki banyak sumber daya dalam grup sumber daya tetapi hanya perlu mengekspor beberapa yang dipilih. Hapus objek JSON dari editor pilihan Anda dan simpan file sebelum mengekspor.
Anda ingin mengganti nama semua sumber daya Anda secara konsisten. Ubah properti menjadi resource-name nama apa pun yang cocok dengan standar kepatuhan perusahaan Anda.
Anda perlu merefaktor sekumpulan sumber daya berdasarkan jenis sumber dayanya - seperti jaringan atau komputasi. Gunakan editor Anda untuk menemukan semua Microsoft.Network atau Microsoft.Compute sumber daya.

Misalnya, Anda menjalankan perintah berikut untuk grup sumber daya yang berisi komputer virtual:

aztfexport rg --generate-mapping-file --non-interactive myResourceGroup

Hasilnya mirip dengan file JSON berikut:

{
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-MyResourceGroup/extensions/OmsAgentForLinux": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-MyResourceGroup/extensions/OmsAgentForLinux",
		"resource_type": "azurerm_virtual_machine_extension",
		"resource_name": "res-0"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup",
		"resource_type": "azurerm_resource_group",
		"resource_name": "res-1"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/sshPublicKeys/vm-MyResourceGroup_key": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/sshPublicKeys/vm-MyResourceGroup_key",
		"resource_type": "azurerm_ssh_public_key",
		"resource_name": "res-2"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-MyResourceGroup": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-MyResourceGroup",
		"resource_type": "azurerm_linux_virtual_machine",
		"resource_name": "res-3"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkInterfaces/vm-myResourceGroup-vm-d146": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkInterfaces/vm-myResourceGroup-vm-d146",
		"resource_type": "azurerm_network_interface",
		"resource_name": "res-4"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkInterfaces/vm-myResourceGroup-vm-d146/networkSecurityGroups/L3N1YnNjcmlwdGlvbnMvZGJmM2I2Y2ItYzFkMC00ZDA0LTk0YjktNTE1MDliOGQzM2ZkL3Jlc291cmNlR3JvdXBzL2hhc2hpY29uZi12bS1kZW1vL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9uZXR3b3JrU2VjdXJpdHlHcm91cHMvdm0taGFzaGljb25mLXZtLWRlbW8tbnNn": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkInterfaces/vm-myResourceGroup-vm-d146|/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkSecurityGroups/vm-MyResourceGroup-nsg",
		"resource_type": "azurerm_network_interface_security_group_association",
		"resource_name": "res-5"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkSecurityGroups/vm-MyResourceGroup-nsg": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/networkSecurityGroups/vm-MyResourceGroup-nsg",
		"resource_type": "azurerm_network_security_group",
		"resource_name": "res-6"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/publicIPAddresses/vm-MyResourceGroup-ip": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/publicIPAddresses/vm-MyResourceGroup-ip",
		"resource_type": "azurerm_public_ip",
		"resource_name": "res-7"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyResourceGroup-vnet": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyResourceGroup-vnet",
		"resource_type": "azurerm_virtual_network",
		"resource_name": "res-8"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyResourceGroup-vnet/subnets/default": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/MyResourceGroup/providers/Microsoft.Network/virtualNetworks/MyResourceGroup-vnet/subnets/default",
		"resource_type": "azurerm_subnet",
		"resource_name": "res-9"
	}
}

Hanya nilai objek dalam file pemetaan yang memiliki signifikansi. Kunci (default ke Azure resource_id) hanyalah pengidentifikasi dalam mode ini.

Sekarang, katakanlah kita ingin menyimpan grup sumber daya dan sumber daya terkait komputasi apa pun, dan memodifikasi nilainya resource_name .

Kita dapat memperbarui file pemetaan sebagai berikut:

{
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
		"resource_type": "azurerm_resource_group",
		"resource_name": "myResourceGroup"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
		"resource_type": "azurerm_linux_virtual_machine",
		"resource_name": "myVM"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/sshPublicKeys/myKey": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/sshPublicKeys/myKey",
		"resource_type": "azurerm_ssh_public_key",
		"resource_name": "myKey"
	},
	"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-myResourceGroup/extensions/OmsAgentForLinux": {
		"resource_id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/vm-myResourceGroup/extensions/OmsAgentForLinux",
		"resource_type": "azurerm_virtual_machine_extension",
		"resource_name": "myVMExtension"
	}
}

Setelah mengedit file pemetaan, Anda mengekspor file pemetaan menggunakan perintah berikut:

aztfexport map -n "aztfexportResourceMapping.json"

Pro:

  • Karena Anda mengedit file, Anda dapat menggunakan editor untuk menemukan dan mengganti apa yang perlu Anda hapus atau edit.
  • Output JSON memungkinkan fungsionalitas unik - seperti scripting untuk memfilter.
  • Dapat mengganti nama sumber daya agar sesuai dengan standar penamaan Anda.
  • Dapat merefaktor JSON ke dalam beberapa file pemetaan.
  • Menangani sejumlah besar sumber daya dengan baik.

Kontra:

  • Untuk skenario sederhana, teknik ini mungkin berlebihan.
  • Memerlukan modifikasi manual.

Ringkasan

Dalam artikel ini, Anda mempelajari tentang berbagai opsi untuk memfilter sumber daya saat mengekspor dengan Azure Export for Terraform.

Langkah berikutnya