Packer.io machine building and provisioning part 2
In the previous part of this series we had a look on building a bare Debian VM with the bare minimum packages installed to run a web server. In this part we will have a look on how we can improve our packer script with user variables and how to use the file and shell provisioner. User variablesVariables can be easily added to the packer script by adding following JSON. 1234567891011{ "variables": { "username": "root", "password": "r00tme", "memory": "1024", "cpus": "1", "database_name": "{{env `DB_NAME`}}" }, "builders": [{ // Left for brevity} Best practice is to put your variables as the first property in your JSON, before your builders. This way you have all the configurable values to your script quickly accessible. As you can see we define for each variable a default value, which will be used as the value when the user doesn’t provide one. For the “database_name” variable I used a special default. This default will be retrieved from your environment variables. You can set this kind of variable just as you would set any other variable from your command line/shell.