console 命令

原文


packer console 命令允许您调试 Packer 变量插值(variable interpolations)。您可以在调用控制台时搭配正在使用的 Packer 配置来读取变量值,或者在调用控制台时使用 -var-var-file 命令行选项设置变量值。

注意:console 命令自从 1.4.2 及以上版本可用。

注意:对于 HCL2 的 console 支持从 1.6.0 及更高版本起可用,不用指定配置文件,直接使用 packer console --config-type=hcl2 即可使用。 Go 模板(在代码中使用 {{..}})在 HCL2 模式下不起作用。

输入要测试的插值,然后按 <enter> 查看结果。

要退出控制台,请键入 exit 并按 <enter>,或使用 Control-C。

$ packer console my_template.json

console 命令支持选项的完整列表在帮助输出中可见,可以通过 packer console -h 查看。

选项

  • -var - 设置 Packer 模板中定义的一个变量的值。该选项可以多次使用。该功能在设置构建的版本号时很有用。示例:-var "myvar=asdf"
  • -var-file - 从变量文件读取模板变量值。示例:-var-file myvars.json

交互模式命令

  • help - 显示 Packer 控制台的帮助文本。
  • exit - 退出控制台
  • variables - 打印从 -var 选项、-var-files 选项和模板读入控制台的所有变量的列表。

使用示例 —— JSON 模板的交互环境

我们假设使用名为 example_template.json 的 Packer 模板文件启动控制台:

$ packer console example_template.json

我们将看到一个提示光标,允许我们输入模板函数并查看它们是如何计算的;例如,如果 example_template 模板有这样一个名为 myvar 的变量:

"variables":{
    "myvar": "asdfasdf"
}

然后在 Packer 控制台中输入 {{user myvar}},我们将看到 myvar 的值:

> {{user "myvar"}}
asdfasdf

在这里我们可以测试更复杂的插值:

> {{user "myvar"}}-{{timestamp}}
asdfasdf-1559854396

使用完控制台后,只需键入 exit 或 CTRL-C

> exit
$

如果想设置一个变量值或指定一个变量文件,可以这样做:

$ packer console -var "myvar=fdsafdsa" -var-file myvars.json example_template.json

如果不想设置变量值或指定变量文件,只想用 Packer 的引擎试验指定的模板,可以通过简单地调用 packer console ,不指定模板文件来实现。

使用示例 —— JSON 模板结合管道命令

如果我们只想查看特定的单个插值而不启动交互界面,我们可以通过打印字符串并通过管道传输到控制台命令来实现:

$ echo  | packer console
1559855090

使用示例 —— HCL2 模板的交互环境

如果没有指定配置文件,可以使用 packer console 来调试表达式语法和内置函数

启动

要在包含 HCL2 配置文件的文件夹里启动会话,请运行:

$ packer console folder/

Packer 将以 HCL2 模式在 folder/ 文件夹中启动。我们也可以直接设置一个 HCL2 格式的配置文件:

$ packer console file.pkr.hcl

因为文件的后缀是 .pkr.hcl 所以 Packer会以 HCL2 模式启动。

如果我们不想指定配置文件,你可以设置 --config-type=hcl2 选项,Packer 将以 HCL2 模式启动:

$ packer console --config-type=hcl2

执行脚本

packer console 命令可以在非交互式模式下使用,方法是通过管道将换行符分隔的命令传递给它。除非脚本中间发生错误,否则只会打印命令的最终输出。

例如:

$ echo "1 + 5" | packer console
6

results matching ""

    No results matching ""