Aracılığıyla paylaş


Terraform için Azure Dışarı Aktarma kullanılarak özelleştirilmiş kaynak seçimi ve adlandırma

Terraform için Azure Export, dışarı aktardığınız kaynakları özelleştirmek için çeşitli seçenekler sağlar.

Bu makalede, her seçenek için artıları ve eksileri öğreneceksiniz.

  • Kullanıcı arabirimini kullanma
  • Sorgu Modunu Kullanma
  • Eşleme Dosyası Kullanma

Kullanıcı arabirimini kullanma

Terraform için Azure Export'ı etkileşimli modda çalıştırdığınızda, belirtilen kaynaklar (çalıştırırken belirttiğiniz parametreler aracılığıyla) görüntülenir. Varsayılan olarak, tüm kaynaklar dışarı aktarılır.

Delete, kaynakları atlarken veya eklerken iki durumlu düğme işlevi görür. Kaynakların dışarı aktarılmasını kaldırmak için ok tuşlarını kullanarak istediğiniz kaynağı seçin ve Delete tuşuna basın. Kaynak , "Atla"yı görüntüleyecek şekilde güncelleştirilir.

Atlama eylemini geri almak için atlanan kaynağın seçili olduğunu doğrulayın ve Delete tuşuna yeniden basın.

Profesyonel:

  • Tek bir geçiş tuşunun kullanılmasını gerektirir.
  • Komutu çalıştırmadan önce istediğiniz kaynakları bilmeniz gerekmez.

Eksi -lerini:

  • Kaydırmak ve atlamak için çok fazla kaynağınız varsa eylem zaman alabilir.

Sorgu modunu kullanma

Azure Kaynak Grafı sorgu söz dizimlerini kullanarak filtre uygulamak, tam olarak hangi filtrelere ihtiyacınız olduğunu bildiğinizde güçlü bir tekniktir.

aztfexport query [option] <ARG_where_predicate>

Örneğin, ağ kaynağı dahil olmak üzere birçok kaynağı olan adlı myResourceGroup bir kaynak grubunuz olduğunu varsayalım. Yalnızca ağ kaynağını dışarı aktarmak istiyorsanız aşağıdaki söz dizimini kullanabilirsiniz:

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

Profesyonel:

  • El ile düzenleme gerektirmeden tek komut.
  • Sınırsız sayıda filtreyi destekler.
  • Büyük miktarda kaynağı verimli bir şekilde işler.

Eksi -lerini:

  • Dışarı aktarmanız gereken kaynakları dışlamak kolaydır.
  • Azure Kaynak Grafı söz dizimi hakkında bilgi gerektirir.

Eşleme dosyası kullanma

Aşağıdaki söz dizimi, kaynak eşleme dosyasında tanımlanan bir kaynak kümesini dışarı aktarmanın temellerini gösterir:

aztfexport mapping-file [option] <resource_mapping_file>

Eşleme dosyasını etkileşimli veya etkileşimli olmayan modlarda kullanabilirsiniz:

  • Etkileşimli mod: Kaynak listesi görünümünde etkileşimli çalışırken s tuşuna basın.
  • Etkileşimli olmayan mod: Eşleme dosyasını bayrağını ekleyerek --generate-mapping-file tüm dışarı aktarma komutlarında (resource, resource-group, query, mapping file) oluşturabilirsiniz.

Kullanım örnekleriniz dışarı aktarma öncesi değişiklikler gerektiriyorsa eşleme dosyasını el ile oluşturabilir veya düzenleyebilirsiniz. Kendi eşleme dosyanızı el ile düzenlemek istediğiniz zamanlara dair bazı örnekler aşağıda verilmiştir:

Kullanım amacı Adımlar
Bir kaynak grubunda çok sayıda kaynağınız var ancak yalnızca birkaç kaynağı dışarı aktarmanız yeterli. JSON nesnelerini istediğiniz düzenleyiciden silin ve dışarı aktarmadan önce dosyayı kaydedin.
Tüm kaynaklarınızı tutarlı bir şekilde yeniden adlandırmak istiyorsunuz. resource-name Özelliğini, şirketinizin uyumluluk standartlarıyla eşleşen adla değiştirin.
Bir kaynak kümesini ağ veya işlem gibi kaynak türlerine göre yeniden düzenlemeniz gerekir. Tüm Microsoft.Network kaynakları veya Microsoft.Compute kaynakları bulmak için düzenleyicinizi kullanın.

Örneğin, sanal makine içeren bir kaynak grubu için aşağıdaki komutu çalıştırdığınızı varsayalım:

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

Sonuçlar aşağıdaki JSON dosyasına benzer:

{
	"/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"
	}
}

Yalnızca eşleme dosyasındaki nesne değerinin önemi vardır. Anahtar (varsayılan olarak Azure'a resource_idayarlanır) yalnızca bu modda bir tanımlayıcıdır.

Şimdi kaynak grubunu ve işlemle ilgili kaynakları korumak ve değeri değiştirmek istediğimizi resource_name varsayalım.

Eşleme dosyasını aşağıdaki gibi güncelleştirebiliriz:

{
	"/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"
	}
}

Eşleme dosyasını düzenledikten sonra, aşağıdaki komutu kullanarak eşleme dosyasını dışarı aktarırsınız:

aztfexport map -n "aztfexportResourceMapping.json"

Profesyonel:

  • Bir dosyayı düzenlediğiniz için, kaldırmanız veya düzenlemeniz gerekenleri bulmak ve değiştirmek için düzenleyici kullanabilirsiniz.
  • JSON çıkışı, filtrelemek için betik oluşturma gibi benzersiz işlevler sağlar.
  • Kaynakları adlandırma standartlarınıza uyacak şekilde yeniden adlandırabilir.
  • JSON'yi birden çok eşleme dosyasında yeniden düzenleyebilir.
  • Büyük miktarlardaki kaynakları iyi işler.

Eksi -lerini:

  • Basit senaryolarda bu teknik fazla olabilir.
  • El ile değişiklik yapılmasını gerektirir.

Özet

Bu makalede, Terraform için Azure Export ile dışarı aktarma sırasında kaynakları filtrelemeye yönelik çeşitli seçenekler hakkında bilgi edindik.

Sonraki adımlar