Hi,
I am using Packer version 1.4.1
What is the best practice to manage generic templates.
We have a few packer template files for different windows versions. The
template's builders section is common and we use var files to pass in any
user variables.
The reason we are having to keep multiple json template files is due to the
Provisioner sections being different for different types of templates.
Question:
Is there a way we can use the same template file with just the builders
section.
For provisioners, we can either put them in a separate file and then
somehow inject it into the main tempalte OR
if we can pass in the Provisioners in the form of a json array through a
user variable from a variables file?
Some of my provisioners are powershell scripts, ansible and windows
restart. Is it possible to pass in provisioners from a variable file like
this?
"host_provisioners": [
{
"type": "powershell",
"inline": [
"cmd.exe /c powershell.exe Set-ExecutionPolicy Unrestricted
-force",
"a:\\scripts\\Configure-MinorSettings.ps1",
"a:\\scripts\\win2019-setup-ssh.ps1",
"a:\\scripts\\Setup-Docker.ps1"
]
},
{
"type": "windows-restart",
"restart_check_command": "powershell -command \"& {Write-Output 'Guest
Restarted Successfully.'}\""
}
]
}
Then in the main template file where my builders are, I do this:
"provisioners": "{{user host_provisioners }}"
It seems like you have to put provisioners and builders in the same file.
It would be good if we can do on one of the following and if it is already
possible:
- Isolate builders and provisioners into separate files and then combine
them in the packer build command with a flag like --provisioner-file=<path
to file>
- OR Allow passing the provisioners from a variables file.
The first approach will probably be more flexible.
What is the best practice on structuring and managing multiple templates or
making your templates generic? As things stand, it seems impossible to
apply DRY principles to Packer.
I'll really appreciate any guidance on this please as our packer scripts
and templates are becoming a bit hard to scale and maintain.
I see packer will eventually support HCL2 which should make some of the
things easier e.g. conditional provisioners etc
https://github.com/hashicorp/packer/issues/1768
Regards,
Nas
--
This mailing list is governed under the HashiCorp Community Guidelines -
https://www.hashicorp.com/community-guidelines.html. Behavior in violation of
those guidelines may result in your removal from this mailing list.
GitHub Issues: https://github.com/mitchellh/packer/issues
IRC: #packer-tool on Freenode
---
You received this message because you are subscribed to the Google Groups
"Packer" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/packer-tool/ea90623a-2da1-453e-969c-0e7c39a04969%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.