问题标签 [hcl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
249 浏览

go - golang viper & hcl 配置文件问题

我使用 viper 编写了一个简单的 go 程序来读取配置文件。

带有 ./example.hcl 的

程序的输出是

如果我将配置文件的名称切换为 .yaml (并相应地调整代码)并使用

代码有效。有人对我做错了什么有建议吗?还是 viper 不适用于嵌入式 hcl 字段?

0 投票
1 回答
52 浏览

terraform - Terraform 12.动态生成块

我有下一个清单:

我可以使用下一个逻辑转换成块:

在地图中使用固定数量的键非常容易。但是是否可以动态生成这样的块,因为我不知道local.step_scaling_out_policy_configuration地图中到底有什么。现在假设我有

显然,按照以前的逻辑,我不会在块中有some_new_key参数。是否可以根据地图内部的内容动态step_scaling_policy_configuration添加键来阻止?step_scaling_policy_configurationlocal.step_scaling_out_policy_configuration

0 投票
1 回答
250 浏览

packer - 如何使用打包器 hcl 动态创建多个磁盘

我是包装工的新手。这就是我想要实现的目标。我想根据是否定义了 vm-disk-size2 来创建具有单个存储磁盘或双存储磁盘的 centos VM。如何通过变量传递整个存储映射?基本上我试图从命令行或文件中将“storage { disk_size = var.vm-disk-size, disk_thin_provisioned = true }”作为变量传递。

我正在尝试这样的事情,但还没有运气..

并且存储被定义为 variables.pkr.hcl 中的列表变量

像这样运行 Packer:

此时出现此错误:Error: Extra characters after expression

第 1 行:(源代码不可用)

成功解析了一个表达式,但在它后面发现了多余的字符。

0 投票
3 回答
500 浏览

json - Terraform 0.12 AWS 资源,包含从变量构建的 JSON

要在 AWS 组织中预置标签策略,我需要content从变量构建 JSON。标签策略、scp 等的管理应该是集中的,因此可以在任何地方应用更改:重命名、添加、删除标签等。

我面临的问题是:我将如何构建 JSON 对象?

示例变量/标签映射:

到目前为止,我尝试过的是使用 HCL 模板标签,但是,在遍历标签名称映射时,我最终用了一个逗号太多。这适用于join()标签名称的子映射,但如果我尝试包装模板标记,则不会锻炼。我为什么要尝试这个?因为我的想法用完了。

0 投票
2 回答
461 浏览

azure - Azure 中的 Terraform/HCL 问题

我是 HCL 和 Terraform 的新手,在将安全组和后端地址池与网络接口相关联时遇到问题。我在单个网络接口块中创建 2 个网络接口:

我尝试过以产生不同错误的各种方式进行关联:

尝试 1:

错误:

错误:在资源“azurerm_network_interface_security_group_association”“PWSDevSecurityGroupAssoc”中的 front.tf 第 85 行缺少资源实例键:85:network_interface_id = azurerm_network_interface.FrontNetworkInterface.id 因为 azurerm_network_interface.FrontNetworkInterface 设置了“计数”,所以必须在特定实例上访问其属性。例如,要与引用资源的索引相关联,请使用:azurerm_network_interface.FrontNetworkInterface[count.index]

错误:front.tf 第 91 行缺少资源实例键,在资源“azurerm_network_interface_backend_address_pool_association”“BackendIPAssoc”中:91:network_interface_id = azurerm_network_interface.FrontNetworkInterface.id 因为 azurerm_network_interface.FrontNetworkInterface 设置了“count”,所以必须在特定实例上访问其属性。例如,要与引用资源的索引相关联,请使用:azurerm_network_interface.FrontNetworkInterface[count.index]

ATTEMPT 2/3/4(使用“[count.index]”、“[count.index].id”或“[element(azurerm_network_interface.FrontNetworkInterface.*.id, count.index)]”,如前面所述错误):

错误([count.index].id 和 [element(azurerm_network_interface.FrontNetworkInterface.*.id, count.index)] 的结果相同):

错误:在资源“azurerm_network_interface_security_group_association”“PWSDevSecurityGroupAssoc”中的 front.tf 第 85 行的非计数上下文中引用“count”:85:network_interface_id = azurerm_network_interface.FrontNetworkInterface[count.index] “count”对象只能用于“模块”、“资源”和“数据”块,并且仅当设置了“计数”参数时。

错误:在资源“azurerm_network_interface_backend_address_pool_association”“BackendIPAssoc”中的非计数上下文front.tf第91行中引用“count”:network_interface_id = azurerm_network_interface.FrontNetworkInterface[count.index]“count”对象只能在“module”中使用、“资源”和“数据”块,并且仅当设置了“计数”参数时。

此外,我在我的 azurerm_virtual_machine 块上收到此错误:

第 162 行,在资源 "azurerm_virtual_machine" "FrontEndVirtualMachines": 162: admin_ssh_key { 此处不需要“admin_ssh_key”类型的块。

我正在关注此处显示的内容:

https://docs.microsoft.com/en-us/azure/developer/terraform/create-linux-virtual-machine-with-infrastructure

如您所见,提供了 admin_ssh_key 块。我尝试使用脚本中使用的 2.0 版;但是,我遇到了同样的结果。

谢谢你的帮助!!:)

0 投票
1 回答
1159 浏览

azure - 使用 HCL/Terraform 的 azurerm_virtual_machine 块中的“admin_ssh_key”问题

我收到以下错误:

我正在关注这个例子:

https://docs.microsoft.com/en-us/azure/developer/terraform/create-linux-virtual-machine-with-infrastructure

我在文档中注意到的一件事,“创建虚拟机”部分使用:

而“完整的 Terraform 脚本”部分使用带有花括号的 $:

我已经尝试了两种方法并遇到了同样的问题。

这是我的代码:

0 投票
1 回答
26 浏览

amazon-web-services - 使用方法设置 HttpMethod="*" 创建 Terraform aws_api_gateway_stage 资源

我正在使用 terraform 13.3 版。在创建 aws_api_gateway_stage 资源时,我想为我的所有方法提供方法设置。我正在关注这个aws-doc。我可以看到有一个名为的属性HttpMethod可以作为“*”通配符提供。因此该设置可以应用于所有 Http Method 类型。但我无法在 terraform 资源中找到相应的属性

0 投票
1 回答
194 浏览

hashicorp-vault - Vault:启用未经身份验证的“公共”资源

我正在创建一个用于签署 JWT 的传输 RSA 密钥,并希望将此策略提供给任何可以连接到保管库实例的调用者,无需身份验证(假设 TLS 已经在所有客户端上运行)。

需要什么样的策略和身份验证后端组合来模拟保管库中标准 pki 机密引擎管理的某些端点中的行为?

取自https ://www.vaultproject.io/api-docs/secret/pki#read-ca-certificate


»阅读 CA 证书

此端点以 PEM 格式检索 CA 证书 [...]。

这是一个未经身份验证的端点。 [强调我的]

»样品申请


我想以类似的方式公开我的签名令牌的公共部分,以.well-known/jkws在 API 中构造一个典型的端点。

0 投票
1 回答
256 浏览

azure - 使用 Terraform HCL 创建 Azure 防火墙的问题

当我尝试使用 Terraform HCL 创建防火墙时,我收到以下错误消息。只是关于 #{variables}# 的注释,我正在通过 Azure DevOps 传递令牌,这部分工作正常:

错误:Code="AzureFirewallPublicIPNotStandard" Message="AzureFirewall fwMyTest 引用非标准公共 IP 地址

我尝试将 sku 指定为标准;但是我收到以下错误:

错误:Code="PublicIPAndLBSkuDoNotMatch" Message="Basic sku 负载均衡器无法引用标准 sku publicIP

任何帮助将不胜感激!!

谢谢!!:)

0 投票
3 回答
913 浏览

terraform - 在 Terraform 中导入的目的是什么?

这个问题不是 如何导入,也不是 tfstate 的目的。这就是导入预先存在的资源的目的,尤其是。与仅引用现有资源的 ID 相比?

Terraform具有terraform import. HashiCorp 将其目的描述为:

Terraform 能够导入现有的基础设施。这允许您获取通过其他方式创建的资源并将其置于 Terraform 管理之下

这是将基础架构缓慢过渡到 Terraform 的好方法,或者如果 Terraform 可能不支持您今天需要的所有功能,那么您可以确信您将来可以使用它。

我阅读了有关 Terraform state 目的的文章.tfstate当这些文件映射回文件中的配置时,使用文件跟踪 Terraform 状态对我来说确实有意义.tf

但是我仍然不清楚独立.tfstate文件的目的是什么,它只映射到一个空的资源块。如果还没有 terraform 中的资源,我通常会做以下两件事之一:

  1. 将资源放入 terraform,手动拆除资源并使用 terraform 重新部署资源,或者...
  2. 保持资源未模板化,将其资源 ID 作为参数引用,并通过依赖它的 terraform 管理资源的数据元素获取其元数据。
  3. terraform import这两种方法的替代方案吗?如果是这样,你为什么要使用这种方法?

更改导入资源的唯一方法(文件中只有一个空的资源块, .tfstate 中有.tf详细的状态.tfstate) is to make manual changes and then re-import into ,对吧?如果是这样,那么在 terraform 中跟踪该资源的状态有什么意义呢?

我敢肯定有充分的理由。只是想更深入地了解这一点!谢谢!