Проблемы с импортом ресурса в модуль terraform

Я создал модуль под названием workflow для Azure LogicApp. Вот модуль:

resource "azurerm_logic_app_workflow" "LogicApp" {
    name                             = "${var.LogicAppName}"
    location                         = "${var.LogicAppLocation}"
    resource_group_name = "${var.rgName}"
    workflow_schema         = "${var.schema}"
}

В workflow_schema я указываю путь к моему файлу, который содержит конфигурацию logicapp

В основном config.tf У меня следующая установка:

module "workflow" {
  source                     = "./modules/workflow/"
  LogicAppName       = "LaName"
  LogicAppLocation  = "${azurerm_resource_group.rg.location}"
  rgName                   = "${azurerm_resource_group.rg.name}"
  schema                   = "${file("./path/to/the/file/LaName")}"
}

Итак, когда я бегу terraform init а также terraform plan все работает отлично.

Поскольку мое приложение логики было создано ранее, я хочу импортировать его, чтобы приложение terraform не перезаписало его.

Я запускаю следующую команду, и она возвращает ошибку:

terraform import module.workflow.azurerm_logic_app_workflow.LogicApp /subscriptions/mySubscriptionID/resourceGroups/myRgName/providers/Microsoft.Logic/workflows/LaName

Error: Import to non-existent module

module.workflow is not defined in the configuration. Please add configuration
for this module before importing into it.

Я использую следующие версии ПО:

Terraform v0.12.13
+ provider.azurerm v1.28.0

Если у кого-то есть идеи, почему terraform import не удается, поделитесь, пожалуйста.

1 ответ

Я вижу проблему в именовании. Ваш модуль названworkflow и в своей конфигурации вы называете ресурс workflowтоже это должно быть по-другому. Вы пытаетесь напрямую импортировать в ресурс. Пример:

module "workflow-azure" {
  source                   = "./modules/workflow/"
  LogicAppName             = "LaName"
  LogicAppLocation         = "${azurerm_resource_group.rg.location}"
  rgName                   = "${azurerm_resource_group.rg.name}"
  schema                   = "${file("./path/to/the/file/LaName")}"
}

и тогда импорт должен быть

terraform import module.workflow-azure.azurerm_logic_app_workflow.LogicApp /subscriptions/mySubscriptionID/resourceGroups/myRgName/providers/Microsoft.Logic/workflows/LaName
Другие вопросы по тегам