提问人:Helena Raia 提问时间:5/17/2023 更新时间:5/19/2023 访问量:971
如何对资源组内的所有资源进行 terraform 导入?
How to terraform import all resources within a resource group?
问:
我需要导入资源组中的所有资源,而不必使用 terraform import 单独标识它们。
我已经尝试使用以下命令导入资源组,以查看它是否会导入其资源:
terraform import "azurerm_resource_group.example" "/subscriptions/*****/resourceGroups/rg-example"
这是我的 main.tf 文件:
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "3.56.0"
}
}
}
provider "azurerm" {
features {
}
}
resource azurerm_resource_group example{
name = "rg-example"
}
此资源组有三个存储帐户,但仅导入资源组。
有没有其他方法可以做到这一点?
谢谢
答:
0赞
HowAreYou
5/18/2023
#1
没有 terraform 命令支持同时导入多个资源。但是,我们仍然可以使用脚本来做到这一点。
若要导入多个资源,请先从 Azure 下载 CSV 文件中的所有资源详细信息。
现在,我使用下面的 Powershell 脚本一次性导入 Excel 工作表中的所有三个资源。
# Path to the CSV file
$csvFilePath = "C:\Users\v-goonav\Downloads\Azureresources (6).csv"
# Import the CSV file
$table = Import-Csv -Path $csvFilePath
# Filter the records based on the "TYPE" column
$resources = $table | Where-Object { $_.TYPE -eq "Storage account" }
# Import the names of the storage accounts
Write-Host "Importing Storage account"
foreach ($account in $resources) {
#Write-Host $account.NAME
$name=$account.NAME
Write-Host $name
terraform import azurerm_storage_account.$name /subscriptions/00000-00000-0000-00000-000000000/resourceGroups/testrgtf/providers/Microsoft.Storage/storageAccounts/$name
}
$resources = $table | Where-Object { $_.TYPE -eq "Virtual network" }
# Import the names of the vnet
Write-Host "Importing vnet"
foreach ($account in $resources) {
#Write-Host $account.NAME
$name=$account.NAME
Write-Host $name
terraform import azurerm_virtual_network.$name /subscriptions/00000-00000-0000-00000-000000000/resourceGroups/testrgtf/providers/Microsoft.Network/virtualNetworks/$name
}
可以在 terraform 中使用此 Powershell 脚本。请查看以下参考链接。
下一个:数组中的循环数组
评论
az login
aztfexport rg rg-example
terraform import