将资源导入terraform模块的问题

时间:2019-11-13 16:45:47

标签: terraform azure-logic-apps azure-rm terraform-modules

我为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 initterraform plan时,一切都很好。

由于我的逻辑应用程序是较早创建的,因此我想将其导入,以便terraform apply不会覆盖它。

我正在运行以下命令,它返回错误:

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 个答案:

答案 0 :(得分: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