Commit Graph

1072 Commits

Author SHA1 Message Date
Chris Roberts 34addec796 Merge pull request #8913 from mitchellh/gildegoma/6570-ansible-compatibility-mode
Ansible: Add "compatibility_mode" and "*become*" common options; Move "version" to common options
2017-09-06 13:18:08 -07:00
Gilles Cornu ac75e409a3
provisioners/ansible(both): Quote host_vars if needed
This patch is based on @subimage's inputs in the related GitHub issue.
Thanks again!

Fix #8597
2017-09-06 21:22:41 +02:00
Gilles Cornu 4dc3e59b08
provisioners/ansible(both): Review of PR #8913
- Keep the Programming Errors with corresponding Exception class and
  en.yml message template. Fix the alphabetical order in errors.rb by
  the way.
- Fix English wording in the documentation and en.yml messages
- Use StandardError for unknown error rescuing.

Thanks @chrisroberts!
2017-09-06 17:12:50 +02:00
Gilles Cornu dc3b6341e2
provisioners/ansible: Check compatibility conflicts
Vagrant will verify that the current Ansible version does support the
requested compatibility mode (only applicable if not "auto", of course).

As mentioned in the documentation, there is no sanity checks between
`version` option and `compatibility_mode` option.

With this change, the host-based provisioner is also improved to
execute only once the "ansible" command (and store the gathered
information for multiple usages like version requirement and
compatibility checks). On the other hand, the guest-based provisioner
can still potentially execute "ansible" twice (once in the
AnsibleInstalled cap, and via "gather_ansible_version" function via
Base::set_compatibility_mode).
2017-09-06 17:12:40 +02:00
Gilles Cornu 270618284c
docs/ansible: Fix an internal hyperlink
Fixing a typo made in 073898046542323eb11c2e129f37fa558ae201e1,
after getting the confirmation that all the Vagrant docs will continue
to use full path for internal links (for the moment).

[ci skip]
2017-09-06 17:12:39 +02:00
Gilles Cornu 8c0df3d046
provisioners/ansible: Move `version` to common options
Before this change, only the ansible_local provisioner supported this
option (for ansible version requirement, and pip installation). Now, the
ansible host-based provisioner can also require a exact ansible version.

Resolve #8914

Note: this has been added as part of #6570 resolution, since the
introduction of the `compatibility_mode` auto-detection made both
provisioners made capable to detect ansible version.

Pending: optimize the code to avoid duplicated executions of "ansible
--version" command.
2017-09-06 17:12:35 +02:00
Gilles Cornu a327e34861
provisioners/ansible: Validate compatibility_mode
- Use `'auto'` instead of `nil` for the auto-detection mode
- Add strict validation and related error message
2017-09-06 17:12:32 +02:00
Gilles Cornu e2621a42fc
docs/ansible: Align the "warn/info" notices style
Motivated by the 4d546a58e1243168f58e20ca53cab71b31e44ae9 changes.
2017-09-06 17:12:29 +02:00
Gilles Cornu 8834afbd8e
provisioners/ansible(both): Add compatibility mode
With this change, it is now possible to get rid of many deprecation
messages successively introduced in Ansible 1.9, and 2.0. More
interesting, the generated inventory will contain the recommended
variable names (e.g. `ansible_host` instead of `ansible_ssh_host`)
when the compatibility mode is set to '2.0'.

Details:

- Add `compatibility_mode` option to control the Ansible parameters
  format to be used. The value corresponds to the minimal version
  supported. For the moment, possible values are '1.8' (corresponding to
  Vagrant's former behaviour) or '2.0'.
  Note that a dynamic inventory generated in compatibility mode '2.0'
  is not supported by Ansible 1.x. On the other hand, Ansible 2.x so far
  supports inventory format generated by the compatibility mode '1.8'.

- Add compatibility mode auto-detection, based on the available Ansible
  version. This is the default behaviour in order to bring a maximum of
  user friendliness. The drawback of this approach is to let potential
  compatibility breaking risks, for `ansible` provisioner setups that
  already integrate Ansible 2.x **AND** rely on the existence of
  the generated `_ssh` variable names. Thanks to the vagrant warnings
  (and its release notes), I argue that it is worth to offer
  auto-detection by default, which offers a sweet transition to most
  users.

- Add `become`, `become_user` and `ask_become_pass` options and their
  backwards compatible aliases. The legacy options are now deprecated.

Note that we intentionally didn't provide a '1.9' compatibility mode,
as it would add extra-complexity for practically no added-value.
To my knowledge, the Ansible 2.x series haven't introduced yet any major
changes or deprecations that would motivate to introduce a higher
version compatibility mode (to be confirmed/verified).

Resolve GH-6570

Still Pending:

- Optimization: Reduce the number of `ansible` command executions.
  Currently two exec calls will be performed when the compatibility
  mode auto-detection is enabled (i.e. by default). We could make the
  provisioner a little bit smarter to only execute `ansible` only once
  in any situation (by combining "presence" and "version" checks).

- User-friendliness: Add better validator on `compatibility_mode`
  option, and shows a warning or an error instead of the silent
  fallback on the auto-detection modus.

- Test coverage: All the added behaviours are not fully covered yet.
2017-09-06 17:12:22 +02:00
Brian Cain a9564b2137 (#8933) Align file provisioner functionality on all platforms
This commit aligns how the file provisioner should work on all host
machines. It ensures that a `/.` is only applied if the user intended
to upload a folder to a destination under a different name. It ensures
that if uploading to a windows guest with a different destination folder
name, it does not nest the source folder under that name so that it
works the same as it does on linux platforms. It also updates the
behavior of the winrm upload communicator by allowing an array of paths
to be uploaded instead of a single file or folder to allow for this new
functionality for windows guests.
2017-08-31 15:57:53 -07:00
Brian Cain 432cb8d915 (#7826) Add salt_arg option for passing flags to salt tool
This commit introduces the salt_arg option that allows a user to pass
additional command line flags to the `salt` tool when provisioning with
a master setup.

It also adds additional config validation to ensure that both
`salt_args` and `salt_call_args` is an array.
2017-08-29 14:11:06 -07:00
Brian Cain 9a29d7be6b (#7836) Introduce salt_call_args option for salt provisioner
This config option for the salt provisioner allows you to pass
additional arguments to the salt-call executable.
2017-08-29 11:17:29 -07:00
Chris Roberts d98f858d9c Update vagrant website version to 1.9.8 2017-08-23 12:11:24 -07:00
Gilles Cornu c3f0b1c1b2 Ansible Docs: Fix headers and indentation
Align the headers style and wording in the intro page.

[ci skip]
2017-08-22 19:18:32 +02:00
Gilles Cornu e436f53fe9 Ansible Docs: Fix a typo in Markdown indentation
[ci skip]
2017-08-22 07:54:00 +02:00
Brian Cain ea59cfdb92 Merge pull request #8895 from briancain/8697/master/add-ssh-extra-opts
Introduce extra_args setting for ssh configs
2017-08-21 16:26:52 -07:00
Chris Roberts dce71a5a27 Merge pull request #8892 from StephenOrJames/patch-1
Remove extra shell prompt
2017-08-21 14:57:31 -07:00
Brian Cain ffec0ff8d9 (#8697) Introduce extra_args setting for ssh configs
Prior to this commit, there was no way to add additional ssh arguments
within a Vagrantfile for a given vagrant machine. This commit introduces
a new option extra_args that allows users to pass in a single argument
or an array of flags that will be added onto the ssh command.
2017-08-17 09:02:20 -07:00
Justin Campbell d014cdac65 website: Fix mailto link 2017-08-16 17:21:56 -04:00
Justin Campbell 9db1c4b438 website: Add link to Vagrant Cloud docs source 2017-08-16 16:29:27 -04:00
Justin Campbell 6ddc418947 website: Add support link to index 2017-08-16 16:23:23 -04:00
Justin Campbell d920a4fe46 website: Update support email address 2017-08-16 16:20:35 -04:00
Justin Campbell 04586e1ec0 website: Add link to account migration page 2017-08-16 16:13:22 -04:00
Stephen James eaca868a76 Remove extra shell prompt 2017-08-16 01:12:28 -04:00
hvle 8086f4b71a typo 2017-08-12 22:58:12 +02:00
Chris Roberts c285e51bca Merge pull request #8847 from mitchellh/sethvargo/remove_people
Remove people from community section
2017-08-09 10:39:14 -07:00
Brian Cain 623b117208 Merge pull request #8682 from Telekom-PD/omnibus-url
Add config option omnibus_url for chef provisioners
2017-08-03 09:19:13 -07:00
Artem Sidorenko 875c2edc62 Add config option omnibus_url for chef provisioners
This option is useful for internal setups, where own customized
omnibus installation script is used (e.g. to get chef from a mirror)
2017-08-03 10:06:27 +02:00
Seth Vargo b409ea90fe
Update deploy process 2017-08-02 14:13:58 -04:00
Seth Vargo 4323ba5c73
Remove people from community section
This is going to be replaced with dynamic content from our CMS in the
future, but we agreed to remove it in the interim.
2017-08-02 13:51:42 -04:00
Chris Roberts 5817cef233 Update docs to properly name Vagrant Cloud 2017-07-31 16:33:18 -07:00
Chris Roberts d06fbb845b Update documentation to include more environment variable information 2017-07-26 15:30:41 -07:00
Ilia Liachin 142c086a2f Update docker.html.md
Docker now supports Windows
2017-07-24 23:07:41 +02:00
Alvaro Miranda Aguilera cc381a0f6b update per review 2017-07-20 22:37:48 +02:00
Alvaro Miranda Aguilera 591670d8a5 add note about groups for sudoers 2017-07-20 20:33:47 +02:00
TrueGit 49522f97ce Fix minor typo in website documentation 2017-07-20 12:51:46 -04:00
Óscar García Amor d0a3823fe8 Docs: fix path of Vagrant location for OSX 2017-07-08 17:03:06 +02:00
Brian Cain df62f27e27 Update vagrant website version to 1.9.7 2017-07-07 16:22:16 -07:00
Chris Roberts bcc09e10e6 Make upload directory for winssh communicator configurable
Fixes #8731
2017-07-07 11:04:37 -07:00
Chris Roberts e4b6ac70a6 Add `VAGRANT_PREFERRED_PROVIDERS` to environment variables documentation page 2017-07-06 12:41:16 -07:00
Chris Roberts d0b5a8f76c Merge pull request #8750 from briancain/maint/fix-typo
Fix rsync-auto typo
2017-07-05 15:24:32 -07:00
Letla Fox 3664f527ec Fix typo in docs
- surpress -> suppress
2017-07-05 06:45:50 +09:00
Brian Cain da1c2f7dc0 Fix rsync-auto typo 2017-07-03 15:22:32 -07:00
Chris Roberts 7ddb167562 Fix removed links and atlas references 2017-06-29 08:46:31 -07:00
Chris Roberts 2c36c835c5 Update download version to 1.9.6 2017-06-29 07:47:58 -07:00
Brian Cain 0225d63055 Merge pull request #8722 from briancain/add-post-setup-proc-for-docker
Add post-install provisioner to docker provisioner
2017-06-28 08:32:23 -07:00
Armon Dadgar f9f8ae7c83 Update index.html.erb
Fixing the Vagrant Cloud link
2017-06-27 16:28:59 -07:00
Brian Cain a05d95bd0a (#7139) Add post-install provisioner to docker provisioner
Prior to this commit, if a user attempted to configure
`/etc/default/docker` through vagrant prior to installation, the package
manager would not override an existing configuration and installing
docker would then fail. This commit fixes this by introducing a
`post_install_provisioner` that allows users to define a provisioner
block that will run after docker has been installed, allowing users to
configure `/etc/default/docker` how they want.
2017-06-27 16:01:23 -07:00
Chris Roberts 465c1c42e2 Merge pull request #8720 from JarvusInnovations/master
Update middleman-hashicorp to 0.3.28 for mega nav fixes
2017-06-26 19:19:55 -07:00
Ryon Coleman cb7fa43ff1 Update middleman-hashicorp to 0.3.28 for mega nav fixes
Fixes detailed at https://github.com/hashicorp/middleman-hashicorp/pull/47
2017-06-26 16:18:42 -04:00