terraform 验证生成的文件失败

问题描述 投票:0回答:1

我想知道这里正确的方法是什么。我使用

jsonette
生成仪表板 json。当我运行
terraform validate
时,出现以下错误:

Invalid value for "path" parameter: no file exists at "../grafana/dashboards/gateway-single.rendered.json"; this
function works only with files that are distributed as part of the configuration source code, so if this file will be
created by a resource in this configuration you must instead obtain this result from an attribute of that resource.

这是因为磁盘上不存在该文件。我可以想出几种不同的方法来解决这个问题,或者只是强制编译在 CI 中进行验证之前进行。但我想知道 terraform 中生成的文件的正确模式是什么。

terraform grafana grafana-templating
1个回答
0
投票

虽然最好避免让 Terraform 配置在操作期间修改本地文件系统,因为这往往会导致配置难以在各种不同的上下文中运行,但有一个“逃生舱口”可以使用以下命令与本地文件系统进行交互

hashicorp/local
提供商

该提供商提供了两个可能有助于解决您的问题的主要构建模块:

  • local_file
    数据源允许将磁盘上的文件视为动态数据源,以数据资源的常用方式参与 Terraform 的依赖关系图。

    这意味着,例如,它可能依赖于安排创建该文件的另一个资源,以便在正确的时间进行读取。

  • local_file
    托管资源类型允许以与 Terraform 通常管理远程 API 中的对象类似的方式管理磁盘上的单个文件。

    这意味着您可以使用 Terraform 根据 Terraform 配置中的可用数据在本地文件系统中创建和更新文件。由于它是通过普通的

    resource
    块使用的,因此它以与 API 支持的资源类型类似的方式参与计划/应用过程和依赖关系图。

file
函数有不同的用途:它是为了处理配置使用与配置本身一起分发的其他文件的情况(通常在同一个版本控制系统中),这些文件的使用就像它们是配置本身的一部分,而不是正在检索或管理的远程对象之一。

例如,当团队发现用 YAML 描述其基础设施的某些部分更方便,然后将其系统地转换为相应的 Terraform 资源实例时,可以将

file
yamldecode
结合使用,但使用 YAML 进行处理作为与引用它的
.tf
文件同一组源代码的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.