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

标签 bash kubernetes terraform terragrunt

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

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

下面是在亚特兰蒂斯容器中运行的代码,这样我们就可以在只通过 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"
  }
}

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

最佳答案

每个 local-exec 都将在其自己的 shell 环境中执行,因此您的 local-exec 的第二次和第三次执行之间没有持久性。

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

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

关于bash - 无法在通过 Atlantis(Terraform Pull Request Automation)工具运行的 terraform local-exec 配置程序中设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65367062/

相关文章:

kubernetes - 如何在作业完成后立即从 Kubernetes 作业中复制目录?

amazon-web-services - 如何安全地从 aws_iam_policy_attachment 升级到 aws_iam_role_policy_attachment?

google-cloud-platform - 如何使用 terraform 创建 gcr 存储库?

linux - 用第一行填充空行

linux - 如何运行或使用多个注册表镜像?

amazon-web-services - 完成所有工作后同步所有 worker

terraform - 缺少配置版本 Terraform Cloud

macos - 日期命令不符合 Linux 规范 (Mac OS X Lion)

bash - 如何使用sed从字符串中提取负数

python - python 脚本的采购输出因管道异常异常而失败