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