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

Aji*_*bal 4 bash kubernetes terraform terragrunt

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

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

下面是将在 Atlantis Container 中运行的代码,这样我们只需通过 Terraform 代码设置凭据后即可一键部署 pod 或 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*cin 11

每个都local-exec将在自己的 shell 环境中执行,因此第二次和第三次执行local-exec.

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

  provisioner "local-exec" {
   command = "env"
   environment = {
       KUBECONFIG = "~/.kube/azurek8s"
   }
Run Code Online (Sandbox Code Playgroud)