【问题标题】:Using variables as part of other variables values使用变量作为其他变量值的一部分
【发布时间】:2021-12-01 00:14:23
【问题描述】:

我正在尝试在其中一个 pkrvars.hcl 文件中执行某种参数化。我想让 url 指向某个资源以使用其他一些变量,例如:

Lib_url = "https://lib-name-${version}`

其中版本来自其他打包程序变量文件。我可以看到以这种方式使用变量是不可能的。 问题是 - 是否可以在打包程序变量文件中使用其他变量的值的变量/局部值?

【问题讨论】:

  • 是的,只要您使用 HCL2 语法(看起来就是这样)。请使用另一个变量的变量插值扩展您在此处尝试执行的操作。目前,version 不是变量的有效命名空间。
  • 我有很多 url 作为变量。 Somd url 在变量之间重复,所以我想引入这样的变量,以便只有在更改 versiin 时才能在一个地方更改它。版本仅作为示例

标签: packer packer-builder hashicorp-packer


【解决方案1】:

您可以做的是拥有一个variable,它可以在运行时配置(使用 var 文件或 -var 或环境变量 PKG_VAR_var,请参阅 https://www.packer.io/guides/hcl/variables)并命名为其他“变量” locals 派生自此变量。见https://www.packer.io/docs/templates/hcl_templates/locals

一个例子

variables {
  version {
    type = string
    description = "OS version"
    default = "bullseye"
  }
}

locals {
  apt_url = "http://domain.tld/${var.version}"
  apt_key = "http://domain.tld/${var.version}.key"
}

然后在您的构建中,您将这些变量与 ${local.apt_url} 一起使用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2016-04-06
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2021-12-27
    相关资源
    最近更新 更多