Насколько я понимаю, вы не совсем понимаете Terraform Import. Итак, я хотел бы показать вам, что это означает.
Если вы хотите импортировать уже существующие ресурсы, вам необходимо сначала настроить ресурс в файлах Terraform, чтобы настроить существующие ресурсы . И все ресурсы будут импортированы в файлы состояния.
Еще одно предостережение в настоящее время заключается в том, что в файл состояния можно импортировать только один ресурс за раз.
Когда вы хотите импортировать ресурсы в модуль, я предполагаю, что структура папок выглядит следующим образом:
testingimportfolder
└── main.tf
└── terraform.tfstate
└── terraform.tfstate.backup
└───module
└── main.tf
И файл main.tf в папке testingimportfolder
устанавливает блок модуля Сделайте это:
module "importlab" {
source = "./module"
...
}
И после того, как вы завершите sh импорт всех ресурсов в файл состояния, вы увидите вывод команды terraform state list
следующим образом:
module.importlab.azurerm_network_security_group.nsg
module.importlab.azurerm_resource_group.rg
module.importlab.azurerm_virtual_network.vnet
Все имя ресурса должно иметь вид module.module_name.azurerm_xxxx.resource_name
. Если вы используете модуль внутри модуля, я предполагаю, что структура папок такая:
importmodules
├── main.tf
├── modules
│ └── vm
│ ├── main.tf
│ └── module
│ └── main.tf
И файл importmodules/modules/vm/main.tf
вот так:
module "azurevm" {
source = "./module"
...
}
Затем после того, как вы закончите sh импорт всех ресурсов в файл состояния, а затем вы можете увидеть результат выполнения команды terraform state list
следующим образом:
module.vm.module.azurevm.azurerm_network_interface.example
Да, ему просто нравится то, что у вас есть. В файле состояния будут храниться ваши существующие ресурсы по мере того, как вы цитируете модули один за другим. Поэтому вам нужно тщательно и четко планировать свой код и модули. Или запутаешься.