249 Commits

Author SHA1 Message Date
Chris Roberts
2355936291 Update documentation link 2017-09-22 16:31:06 -07:00
Jordan Danford
de16f56b45 Fix stray backquote in "Vagrantfile / SSH Settings" section of docs 2017-09-20 09:37:31 -07:00
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
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
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
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
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
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
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
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
5f955c3d38 Convert atlas references to vagrant cloud 2017-06-23 10:01:51 -07:00
Brian Cain
eec20a6506 Add information about extra box info
This commit adds a new page to vagrants docs around supplying an
`info.json` file for vagrant boxes.
2017-06-22 13:45:05 -07:00
Aaron Kunz
6e2c6141d0 Use proper snapshot subcommand anchors 2017-06-16 20:43:12 +02:00
Brian Cain
fbda3af106 Merge pull request #8693 from briancain/7855/master/introduce-more-ssh-config-options
Introduce more ssh options for machines
2017-06-15 16:38:18 -07:00
Brian Cain
b02f110cd8 (#7855) Introduce more ssh options for machines
This commit allows the user to configure two additional options that
were previously not configurable: Compression and DSAAuthentication.
Each config option is set as a boolean, and if left out of the config
will default to its previous behavior which is included and set to
"yes". If the user explicitly sets it to false, it will not be included
as an ssh option.
2017-06-15 16:29:53 -07:00
Brian Knight
8b8ae6652e Merge changes from master 2017-06-15 10:16:25 -04:00
Chris Roberts
ddb3205536 Merge pull request #8596 from tonynguyen68/patch-1
Update environmental-variables.html.md
2017-06-14 16:40:43 -07:00
Chris Roberts
b35a8f0447 Merge pull request #8599 from vmelnik-ukraine/fix/master/boxes_doc_example
Fix #8598 : example in docs for box usage.
2017-06-14 16:38:19 -07:00