gpt4 book ai didi

terraform - 依赖本地文件创建

转载 作者:行者123 更新时间:2023-12-04 01:29:39 26 4
gpt4 key购买 nike

我正在按照示例 https://github.com/terraform-aws-modules/terraform-aws-eks/blob/master/aws_auth.tf 使用 Terraform 设置 EKS 集群我现在有两个 Terraform 文件:

kubeconfig.tf

resource "local_file" "kubeconfig" {
content = "${data.template_file.kubeconfig.rendered}"
filename = "tmp/kubeconfig"
}

data "template_file" "kubeconfig" {
template = "${file("template/kubeconfig.tpl")}"
...
}

aws-auth.tf
resource "null_resource" "update_config_map_aws_auth" {
provisioner "local-exec" {
command = "kubectl apply -f tmp/config-map-aws-auth_${var.cluster-name}.yaml --kubeconfig /tmp/kubeconfig"
}

...
}

当我运行这个时,local-exec 命令失败了

Output: error: stat tmp/kubeconfig: no such file or directory



在第二次运行时,它成功了。我认为该文件是在 local-exec 尝试使用它之后创建的,而 local-exec 应该取决于文件资源。所以我尝试通过像这样使用插值(隐式依赖)来表达依赖:
resource "null_resource" "update_config_map_aws_auth" {
provisioner "local-exec" {
command = "kubectl apply -f tmp/config-map-aws-auth_${var.cluster-name}.yaml --kubeconfig ${resource.local_file.kubeconfig.filename}"
}

但这总是给我

Error: resource 'null_resource.update_config_map_aws_auth' provisioner local-exec (#1): unknown resource 'resource.local_file' referenced in variable resource.local_file.kubeconfig.filename

最佳答案

您不需要 resource.在最后一个代码块中使用插值时的一部分。

当 Terraform 刚开始时,它只有资源,所以你不需要说某物是资源,因为这是唯一的情况。然后他们添加了模块和数据源,这些模块和数据源需要在命名上有所区别,因此得到 module.data.因此 Terraform 可以区分资源和数据源等。

所以你可能想要这样的东西:

resource "local_file" "kubeconfig" {
content = "${data.template_file.kubeconfig.rendered}"
filename = "tmp/kubeconfig"
}

data "template_file" "kubeconfig" {
template = "${file("template/kubeconfig.tpl")}"
...
}

resource "null_resource" "update_config_map_aws_auth" {
provisioner "local-exec" {
command = "kubectl apply -f tmp/config-map-aws-auth_${var.cluster-name}.yaml --kubeconfig ${local_file.kubeconfig.filename}"
}
}

关于terraform - 依赖本地文件创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51946982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com