有没有办法在打包器配置器中创建逻辑条件?

时间:2017-05-16 17:54:31

标签: json packer

我正在尝试添加一个条件,因此我的volume_size:可以获得两个不同的值,具体取决于传入的内容" -var role ="

我尝试过这样的事情:

"volume_size": [{
     "Fn::If" : [
       ".ami_id_bar",
       {"foo" : "50"},
       {"foo" : "20"}
     ]
    }],

.ami_id_bar是:

"environment_vars": [
          "ami_id_bar={{user `role`}}"
       ],

在执行打包程序时从命令行获取

这是我得到的错误:

  

错误解码:

     

' launch_block_device_mappings [0] .volume_size'期望的类型' int64',得到了不可转换的类型' [] interface {}'

这是不可能的,或者我做错了什么?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

不,你不能。包装工模板是无逻辑的。实现所需内容的标准方法是使用-var-file,其中每个vars文件代表一个角色,例如。

packer build -var-file=role-A.json template.json 

在更复杂的情况下,我们建议您预处理模板和其他文件,并将打包器包装在某些构建脚本中,如make