无法通过 Atlantis(Terraform Pull Request Automation)工具在 terraform local-exec provisioner 运行 中设置环境变量

Unable to setup environment variable in terraform local-exec provisioner running through Atlantis (Terraform Pull Request Automation) tool

我已经通过 Atlantis 使用 Terrag运行t 成功部署了 AKS,现在我想设置凭据以与 Kubernetes API 服务器通信。

为此,我正在设置 KUBECONFIG 环境变量以使用 Kubernetes 进行身份验证。

下面是将 运行 放入 Atlantis Container 的代码,这样我们就可以在仅通过 Terraform 代码设置凭据后一键部署 pods 或 helm。

resource "null_resource" "null" {
 provisioner "local-exec" {
   command = <<-EOT
    echo "$(terraform output kube_config)" > ~/.kube/azurek8s # Storing kube config credential file for kube api server authentication
    sed -i '1d;$d' ~/.kube/azurek8s # delete 1st and last line from output
  EOT
  }
  provisioner "local-exec" {
   command = "export KUBECONFIG=~/.kube/azurek8s" # setting up env variable for kubeconfig
  }
  provisioner "local-exec" {
   command = "env"
  }
}

设置环境变量后,我添加了env命令来检查是否真的设置了环境变量。

每个 local-exec 将在其自己的 shell 环境中执行,因此您的 local-exec.

的第二次和第三次执行之间没有持久性

要为您的 local-exec 设置环境变量,您应该使用 environment:

  provisioner "local-exec" {
   command = "env"
   environment = {
       KUBECONFIG = "~/.kube/azurek8s"
   }