From 8f685b3bcdd8ad136799b9efaa2e2d3f4f3abb5f Mon Sep 17 00:00:00 2001 From: Matthew Hooker Date: Wed, 7 Jun 2017 11:12:07 -0700 Subject: [PATCH] ansible: add skip_version_check flag --- provisioner/ansible/provisioner.go | 9 +- .../source/docs/provisioners/ansible.html.md | 86 +++++++++---------- 2 files changed, 49 insertions(+), 46 deletions(-) diff --git a/provisioner/ansible/provisioner.go b/provisioner/ansible/provisioner.go index 84f1fde81..dfe5aa6d6 100644 --- a/provisioner/ansible/provisioner.go +++ b/provisioner/ansible/provisioner.go @@ -52,6 +52,7 @@ type Config struct { SSHHostKeyFile string `mapstructure:"ssh_host_key_file"` SSHAuthorizedKeyFile string `mapstructure:"ssh_authorized_key_file"` SFTPCmd string `mapstructure:"sftp_command"` + SkipVersionCheck bool `mapstructure:"skip_version_check"` UseSFTP bool `mapstructure:"use_sftp"` InventoryDirectory string `mapstructure:"inventory_directory"` inventoryFile string @@ -132,9 +133,11 @@ func (p *Provisioner) Prepare(raws ...interface{}) error { } } - err = p.getVersion() - if err != nil { - errs = packer.MultiErrorAppend(errs, err) + if !p.config.SkipVersionCheck { + err = p.getVersion() + if err != nil { + errs = packer.MultiErrorAppend(errs, err) + } } if p.config.User == "" { diff --git a/website/source/docs/provisioners/ansible.html.md b/website/source/docs/provisioners/ansible.html.md index 97a231fba..0a4cdf243 100644 --- a/website/source/docs/provisioners/ansible.html.md +++ b/website/source/docs/provisioners/ansible.html.md @@ -51,30 +51,46 @@ Required Parameters: Optional Parameters: +- `ansible_env_vars` (array of strings) - Environment variables to set before + running Ansible. + Usage example: + + ```json + { + "ansible_env_vars": [ "ANSIBLE_HOST_KEY_CHECKING=False", "ANSIBLE_SSH_ARGS='-o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s'", "ANSIBLE_NOCOLOR=True" ] + } + ``` + - `command` (string) - The command to invoke ansible. Defaults to `ansible-playbook`. +- `empty_groups` (array of strings) - The groups which should be present in + inventory file but remain empty. + +- `extra_arguments` (array of strings) - Extra arguments to pass to Ansible. + These arguments _will not_ be passed through a shell and arguments should + not be quoted. Usage example: + + ```json + { + "extra_arguments": [ "--extra-vars", "Region={{user `Region`}} Stage={{user `Stage`}}" ] + } + ``` + - `groups` (array of strings) - The groups into which the Ansible host should be placed. When unspecified, the host is not associated with any groups. -- `empty_groups` (array of strings) - The groups which should be present in - inventory file but remain empty. - - `host_alias` (string) - The alias by which the Ansible host should be known. Defaults to `default`. -- `ssh_host_key_file` (string) - The SSH key that will be used to run the SSH - server on the host machine to forward commands to the target machine. Ansible - connects to this server and will validate the identity of the server using - the system known_hosts. The default behavior is to generate and use a - onetime key. Host key checking is disabled via the - `ANSIBLE_HOST_KEY_CHECKING` environment variable if the key is generated. - -- `ssh_authorized_key_file` (string) - The SSH public key of the Ansible - `ssh_user`. The default behavior is to generate and use a onetime key. If - this key is generated, the corresponding private key is passed to - `ansible-playbook` with the `--private-key` option. +- `inventory_directory` (string) - The directory in which to place the + temporary generated Ansible inventory file. By default, this is the + system-specific temporary file location. The fully-qualified name of this + temporary file will be passed to the `-i` argument of the `ansible` command + when this provisioner runs ansible. Specify this if you have an existing + inventory directory with `host_vars` `group_vars` that you would like to use + in the playbook that this provisioner will run. - `local_port` (string) - The port on which to attempt to listen for SSH connections. This value is a starting point. The provisioner will attempt @@ -87,41 +103,25 @@ Optional Parameters: files. The command should read and write on stdin and stdout, respectively. Defaults to `/usr/lib/sftp-server -e`. -- `use_sftp` (boolean) - Whether to use SFTP. When false, - `ANSIBLE_SCP_IF_SSH=True` will be automatically added to `ansible_env_vars`. - Defaults to false. - -- `extra_arguments` (array of strings) - Extra arguments to pass to Ansible. - These arguments _will not_ be passed through a shell and arguments should - not be quoted. Usage example: - - ```json - { - "extra_arguments": [ "--extra-vars", "Region={{user `Region`}} Stage={{user `Stage`}}" ] - } - ``` +- `skip_version_check` (bool) - Check if ansible is installed prior to running. + Set this to `true`, for example, if you're going to install ansible during + the packer run. -- `ansible_env_vars` (array of strings) - Environment variables to set before - running Ansible. - Usage example: +- `ssh_host_key_file` (string) - The SSH key that will be used to run the SSH + server on the host machine to forward commands to the target machine. Ansible + connects to this server and will validate the identity of the server using + the system known_hosts. The default behavior is to generate and use a + onetime key. Host key checking is disabled via the + `ANSIBLE_HOST_KEY_CHECKING` environment variable if the key is generated. - ```json - { - "ansible_env_vars": [ "ANSIBLE_HOST_KEY_CHECKING=False", "ANSIBLE_SSH_ARGS='-o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s'", "ANSIBLE_NOCOLOR=True" ] - } - ``` +- `ssh_authorized_key_file` (string) - The SSH public key of the Ansible + `ssh_user`. The default behavior is to generate and use a onetime key. If + this key is generated, the corresponding private key is passed to + `ansible-playbook` with the `--private-key` option. - `user` (string) - The `ansible_user` to use. Defaults to the user running packer. -- `inventory_directory` (string) - The directory in which to place the - temporary generated Ansible inventory file. By default, this is the - system-specific temporary file location. The fully-qualified name of this - temporary file will be passed to the `-i` argument of the `ansible` command - when this provisioner runs ansible. Specify this if you have an existing - inventory directory with `host_vars` `group_vars` that you would like to use - in the playbook that this provisioner will run. - ## Default Extra Variables In addition to being able to specify extra arguments using the