问题标签 [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.
go - golang viper & hcl 配置文件问题
我使用 viper 编写了一个简单的 go 程序来读取配置文件。
带有 ./example.hcl 的
程序的输出是
如果我将配置文件的名称切换为 .yaml (并相应地调整代码)并使用
代码有效。有人对我做错了什么有建议吗?还是 viper 不适用于嵌入式 hcl 字段?
terraform - Terraform 12.动态生成块
我有下一个清单:
我可以使用下一个逻辑转换成块:
在地图中使用固定数量的键非常容易。但是是否可以动态生成这样的块,因为我不知道local.step_scaling_out_policy_configuration
地图中到底有什么。现在假设我有
显然,按照以前的逻辑,我不会在块中有some_new_key
参数。是否可以根据地图内部的内容动态step_scaling_policy_configuration
添加键来阻止?step_scaling_policy_configuration
local.step_scaling_out_policy_configuration
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 行:(源代码不可用)
成功解析了一个表达式,但在它后面发现了多余的字符。
json - Terraform 0.12 AWS 资源,包含从变量构建的 JSON
要在 AWS 组织中预置标签策略,我需要content
从变量构建 JSON。标签策略、scp 等的管理应该是集中的,因此可以在任何地方应用更改:重命名、添加、删除标签等。
我面临的问题是:我将如何构建 JSON 对象?
示例变量/标签映射:
到目前为止,我尝试过的是使用 HCL 模板标签,但是,
在遍历标签名称映射时,我最终用了一个逗号太多。这适用于join()
标签名称的子映射,但如果我尝试包装模板标记,则不会锻炼。我为什么要尝试这个?因为我的想法用完了。
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”类型的块。
我正在关注此处显示的内容:
如您所见,提供了 admin_ssh_key 块。我尝试使用脚本中使用的 2.0 版;但是,我遇到了同样的结果。
谢谢你的帮助!!:)
azure - 使用 HCL/Terraform 的 azurerm_virtual_machine 块中的“admin_ssh_key”问题
我收到以下错误:
我正在关注这个例子:
我在文档中注意到的一件事,“创建虚拟机”部分使用:
而“完整的 Terraform 脚本”部分使用带有花括号的 $:
我已经尝试了两种方法并遇到了同样的问题。
这是我的代码:
amazon-web-services - 使用方法设置 HttpMethod="*" 创建 Terraform aws_api_gateway_stage 资源
我正在使用 terraform 13.3 版。在创建 aws_api_gateway_stage 资源时,我想为我的所有方法提供方法设置。我正在关注这个aws-doc。我可以看到有一个名为的属性HttpMethod
可以作为“*”通配符提供。因此该设置可以应用于所有 Http Method 类型。但我无法在 terraform 资源中找到相应的属性
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 中构造一个典型的端点。
azure - 使用 Terraform HCL 创建 Azure 防火墙的问题
当我尝试使用 Terraform HCL 创建防火墙时,我收到以下错误消息。只是关于 #{variables}# 的注释,我正在通过 Azure DevOps 传递令牌,这部分工作正常:
错误:Code="AzureFirewallPublicIPNotStandard" Message="AzureFirewall fwMyTest 引用非标准公共 IP 地址
我尝试将 sku 指定为标准;但是我收到以下错误:
错误:Code="PublicIPAndLBSkuDoNotMatch" Message="Basic sku 负载均衡器无法引用标准 sku publicIP
任何帮助将不胜感激!!
谢谢!!:)
terraform - 在 Terraform 中导入的目的是什么?
这个问题不是 如何导入,也不是 tfstate 的目的。这就是导入预先存在的资源的目的,尤其是。与仅引用现有资源的 ID 相比?
Terraform具有terraform import
. HashiCorp 将其目的描述为:
Terraform 能够导入现有的基础设施。这允许您获取通过其他方式创建的资源并将其置于 Terraform 管理之下。
这是将基础架构缓慢过渡到 Terraform 的好方法,或者如果 Terraform 可能不支持您今天需要的所有功能,那么您可以确信您将来可以使用它。
我阅读了有关 Terraform state 目的的文章。.tfstate
当这些文件映射回文件中的配置时,使用文件跟踪 Terraform 状态对我来说确实有意义.tf
。
但是我仍然不清楚独立.tfstate
文件的目的是什么,它只映射到一个空的资源块。如果还没有 terraform 中的资源,我通常会做以下两件事之一:
- 将资源放入 terraform,手动拆除资源并使用 terraform 重新部署资源,或者...
- 保持资源未模板化,将其资源 ID 作为参数引用,并通过依赖它的 terraform 管理资源的数据元素获取其元数据。
- 是
terraform import
这两种方法的替代方案吗?如果是这样,你为什么要使用这种方法?
更改导入资源的唯一方法(文件中只有一个空的资源块, .tfstate 中有.tf
详细的状态.tfstate) is to make manual changes and then re-import into
,对吧?如果是这样,那么在 terraform 中跟踪该资源的状态有什么意义呢?
我敢肯定有充分的理由。只是想更深入地了解这一点!谢谢!