用户变量中的打包程序对象

时间:2018-12-16 15:15:26

标签: json packer

如何从var文件中加载用户变量对象。在这里https://github.com/hashicorp/packer/issues/2441

问了这个问题
  

是否可以处理用户变量中的对象?例如使用   Chef-solo供应商,我想将json属性传递为   用户变量。在当前的实现中,这似乎是   不可能。

     

读取'test.json'中的变量时出错:json:无法解组对象   转换为字符串类型的Go值

     

我有一个名为test.json的文件,该文件包含以下内容:

     

{“元数据”:{“ somekey”:“ somevalue”}}

     

将文件与var文件一起传入时,我收到上述错误   选项。

     

是否有未实施此操作的特定原因?不会的   解析只需要设置的深层嵌套对象所必需的   用户变量元数据到对象,以便对象可以使用   在packer.json中输入

有一种解决方法,但我需要一个示例。

1 个答案:

答案 0 :(得分:1)

  

在当前的实现中,这似乎是不可能的。

那是正确的,当前无法在用户变量中传递对象。

您可以简单地预处理所需的值,例如与jq

{
  "builders": [{
    "type": "digitalocean",
    "ssh_pty": "true",
    "image": "{{user `di_image`}}",
    "region": "{{user `di_region`}}",
    "size": "{{user `di_size`}}"
    }]
 } 

cat cloud.json | jq 'setpath(["builders",0,"flavor"]; {"hi": "hoo"})'

{
  "builders": [{
    "type": "digitalocean",
    "ssh_pty": "true",
    "image": "{{user `di_image`}}",
    "region": "{{user `di_region`}}",
    "size": "{{user `di_size`}}",
    "flavor": {
      "hi": "hoo"
    }
  }]
}
相关问题