在 Packer 供应商中添加条件?

Adding conditionals in Packer provisioners?

有没有一种明智的方法可以在加壳供应商内部添加条件?效果为:

$ packer build -var "debug=true" build.json


"provisioners": [{
  "type": "puppet-masterless",
  "execute_command": "{{ if eq `debug` "true" }} strace {{ end }} {{ .FacterVars }} puppet apply --verbose --detailed-exitcodes --modulepath='/tmp/manifests/modules' {{ .ManifestFile }}",
  "facter": {},
  "manifest_dir": "../manifests",
  "manifest_file": "../manifests/vagrant/nocm.pp",
  "module_paths": [
    "../manifests/modules/external"
  ]
}],
"variables": {
  "debug":    "false",
}

其中执行命令包含

{{ if eq `debug` "true" }} strace {{ end }}

您是否尝试在 provisioner 部分添加变量:

注意 :我自己没有测试过,但将其用于正常的 shell provisioner

"provisioners": [{
  "environment_vars": [
    "DEBUG={{user `debug`}}",
  ]
  "type": "puppet-masterless",
  "execute_command": "{{ if eq .DEBUG "true" }} strace {{ end }} {{ .FacterVars }} puppet apply --verbose --detailed-exitcodes --modulepath='/tmp/manifests/modules' {{ .ManifestFile }}",
  "facter": {},
  "manifest_dir": "../manifests",
  "manifest_file": "../manifests/vagrant/nocm.pp",
  "module_paths": [
    "../manifests/modules/external"
  ]
}],
"variables": {
  "debug":    "false",
}