0

我正在尝试使用 null_resource 配置器在函数应用程序中配置 2 个函数,这就是 null_resource 的样子

resource "null_resource" "functions" {

  triggers = {
    functions = "${local.version}_${join("+", [for value in local.functions : value["name"]])}"
  }

  provisioner "local-exec" {
    command = <<-EOT
    cd functions/
    func azure functionapp publish ${local.app_name}
    cd ../
    EOT
    interpreter = ["bash", "-c"]
  }

  depends_on = [azurerm_function_app.core]
}

天蓝色的 devops 步骤如下所示:

 #Apply
- bash: terraform apply deployment.tfplan
  displayName: Terraform Apply
  workingDirectory: dev/terraform/
  env:
    ARM_SUBSCRIPTION_ID: $(kv-arm-subscription-id)
    ARM_CLIENT_ID:       $(kv-arm-client-id)
    ARM_CLIENT_SECRET:   $(kv-arm-client-secret)
    ARM_TENANT_ID:       $(kv-arm-tenant-id)

但我看到两个问题:

1-它没有找到functions文件夹,虽然它在里面

在此处输入图像描述

2-它返回一个无法连接到 azure 的错误,这是完整的错误消息:

│ 
│ Error running command 'cd functions/
│ func azure functionapp publish my-app-gt-test5345
│ cd ../
│ ': exit status 1. Output: bash: line 0: cd: $'functions/\r': No such file
│ or directory
│ Unable to connect to Azure. Make sure you have the `az` CLI or
│ `Az.Accounts` PowerShell module installed and logged in and try again
│ bash: line 2: cd: $'../\r': No such file or directory
4

1 回答 1

0

尝试使用local-exec 供应商working_dir的输入参数,而不是使用.cd functions/

然后,您的代码将类似于(未经测试):

resource "null_resource" "functions" {

  ...

  provisioner "local-exec" {
    command = "func azure functionapp publish ${local.app_name}"
    interpreter = ["bash", "-c"]
    working_dir = "${path.module}/functions"
  }

  depends_on = [azurerm_function_app.core]
}
于 2021-07-26T01:32:23.990 回答