|
|
|
|
@ -75,9 +75,9 @@ configuration is actually required.
|
|
|
|
|
then the sudo will be omitted.
|
|
|
|
|
|
|
|
|
|
- `run_list` (array of strings) - The [run
|
|
|
|
|
list](http://docs.chef.io/essentials_node_object_run_lists.html)
|
|
|
|
|
for Chef. By default this is empty, and will use the run list sent down by
|
|
|
|
|
the Chef Server.
|
|
|
|
|
list](http://docs.chef.io/essentials_node_object_run_lists.html) for Chef.
|
|
|
|
|
By default this is empty, and will use the run list sent down by the
|
|
|
|
|
Chef Server.
|
|
|
|
|
|
|
|
|
|
- `server_url` (string) - The URL to the Chef server. This is required.
|
|
|
|
|
|
|
|
|
|
@ -186,3 +186,65 @@ to 777. This is to ensure that Packer can upload and make use of that directory.
|
|
|
|
|
However, once the machine is created, you usually don't want to keep these
|
|
|
|
|
directories with those permissions. To change the permissions on the
|
|
|
|
|
directories, append a shell provisioner after Chef to modify them.
|
|
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
|
|
|
|
|
### Chef Client Local Mode
|
|
|
|
|
|
|
|
|
|
The following example shows how to run the `chef-cilent` provisioner in local
|
|
|
|
|
mode, while passing a `run_list` using a variable.
|
|
|
|
|
|
|
|
|
|
**Local environment variables**
|
|
|
|
|
|
|
|
|
|
# Machines Chef directory
|
|
|
|
|
export PACKER_CHEF_DIR=/var/chef-packer
|
|
|
|
|
# Comma separated run_list
|
|
|
|
|
export PACKER_CHEF_RUN_LIST="recipe[apt],recipe[nginx]"
|
|
|
|
|
...
|
|
|
|
|
|
|
|
|
|
**Packer variables**
|
|
|
|
|
|
|
|
|
|
Set the necessary Packer variables using environment variables or provide a [var
|
|
|
|
|
file](/docs/templates/user-variables.html).
|
|
|
|
|
|
|
|
|
|
``` {.liquid}
|
|
|
|
|
"variables": {
|
|
|
|
|
"chef_dir": "{{env `PACKER_CHEF_DIR`}}",
|
|
|
|
|
"chef_run_list": "{{env `PACKER_CHEF_RUN_LIST`}}",
|
|
|
|
|
"chef_client_config_tpl": "{{env `PACKER_CHEF_CLIENT_CONFIG_TPL`}}",
|
|
|
|
|
"packer_chef_bootstrap_dir": "{{env `PACKER_CHEF_BOOTSTRAP_DIR`}}" ,
|
|
|
|
|
"packer_uid": "{{env `PACKER_UID`}}",
|
|
|
|
|
"packer_gid": "{{env `PACKER_GID`}}"
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Setup the** `chef-client` **provisioner**
|
|
|
|
|
|
|
|
|
|
Make sure we have the correct directories and permissions for the `chef-client`
|
|
|
|
|
provisioner. You will need to bootstrap the Chef run by providing the necessary
|
|
|
|
|
cookbooks using Berkshelf or some other means.
|
|
|
|
|
|
|
|
|
|
``` {.liquid}
|
|
|
|
|
{
|
|
|
|
|
"type": "file",
|
|
|
|
|
"source": "{{user `packer_chef_bootstrap_dir`}}",
|
|
|
|
|
"destination": "/tmp/bootstrap"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"type": "shell",
|
|
|
|
|
"inline": [
|
|
|
|
|
"sudo mkdir -p {{user `chef_dir`}}",
|
|
|
|
|
"sudo mkdir -p /tmp/packer-chef-client",
|
|
|
|
|
"sudo chown {{user `packer_uid`}}.{{user `packer_gid`}} /tmp/packer-chef-client",
|
|
|
|
|
"sudo sh /tmp/bootstrap/bootstrap.sh"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"type": "chef-client",
|
|
|
|
|
"server_url": "http://localhost:8889",
|
|
|
|
|
"config_template": "{{user `chef_client_config_tpl`}}/client.rb.tpl",
|
|
|
|
|
"skip_clean_node": true,
|
|
|
|
|
"skip_clean_client": true,
|
|
|
|
|
"run_list": "{{user `chef_run_list`}}"
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|