Path to this page:
Subject: CVS commit: pkgsrc/sysutils/ansible2
From: Jonathan Perkin
Date: 2017-05-22 13:31:34
Message id: 20170522113134.B7CE1FBE4@cvs.NetBSD.org
Log Message:
Update to ansible-2.3.0.0, with some package cleanups.
Changes since 2.1.2.0, excluding module changes which are too numerous:
## 2.3 "Ramble On" - 2017-04-12
### Major Changes
* Documented and renamed the previously released 'single var vaulting' feature, \
allowing user to use vault encryption for single variables in a normal YAML vars \
file.
* Allow module_utils for custom modules to be placed in site-specific \
directories and shipped in roles
* On platforms that support it, use more modern system polling API instead of \
select in the ssh connection plugin.
This removes one limitation on how many parallel forks are feasible on these \
systems.
* Windows/WinRM supports (experimental) become method "runas" to run \
modules and scripts as a different user, and to transparently access network \
resources.
* The WinRM connection plugin now uses pipelining when executing modules, \
resulting in significantly faster execution for small tasks.
* The WinRM connection plugin can now manage Kerberos tickets automatically when \
`ansible_winrm_transport=kerberos` and `ansible_user`/`ansible_password` are \
specified.
* Refactored/standardized most Windows modules, adding check-mode and diff \
support where possible.
* Extended Windows module API with parameter-type support, helper functions. \
(i.e. Expand-Environment, Add-Warning, Add-DeprecatationWarning)
* restructured how async works to allow it to apply to action plugins that \
choose to support it.
### Minor Changes
* The version and release facts for OpenBSD hosts were reversed.
This has been changed so that version has the numeric portion and release has \
the name of the release.
* removed 'package' from default squash actions as not all package managers \
support it and it creates errors when using loops,
any user can add back via config options if they don't use those package \
managers or otherwise avoid the errors.
* Blocks can now have a `name` field, to aid in playbook readability.
* default strategy is now configurable via ansible.cfg or environment variable.
* Added 'ansible_playbook_python' which contains 'current python executable', it \
can be blank in some cases in which Ansible is not invoked via the standard CLI \
(sys.executable limitation).
* Added 'metadata' to modules to enable classification
* ansible-doc now displays path to module and existing 'metadata'
* added optional 'piped' transfer method to ssh plugin for when scp and sftp are \
missing, ssh plugin is also now 'smarter' when using these options
* default controlpersist path is now a custom hash of host-port-user to avoid \
the socket path length errors for long hostnames
* Various fixes for Python3 compatibility
* Fixed issues with inventory formats not handling 'all' and 'ungrouped' in an \
uniform way.
* 'service' tasks can now use async again, we had lost this capability when \
changed into an action plugin.
* made any_errors_fatal inheritable from play to task and all other objects in \
between.
* many small performance improvements in inventory and variable handling and in \
task execution.
### Deprecations
* Specifying --tags (or --skip-tags) multiple times on the command line
currently leads to the last one overriding all the previous ones. This \
behaviour is deprecated.
In the future, if you specify --tags multiple times the tags will be merged \
together.
From now on, using --tags multiple times on one command line will emit a \
deprecation warning.
Setting the merge_multiple_cli_tags option to True in the ansible.cfg file \
will enable the new behaviour.
In 2.4, the default will be to merge and you can enable the old overwriting \
behaviour via the config option.
In 2.5, multiple --tags options will be merged with no way to go back to the \
old behaviour.
## 2.2.1 "The Battle of Evermore" - 2017-01-16
### Major Changes
* Security fix for CVE-2016-9587 - An attacker with control over a client system \
being managed by Ansible and the ability to send facts back to the Ansible \
server could use this flaw to execute arbitrary code on the Ansible server as \
the user and group Ansible is running as.
### Minor Changes
* Fixes a bug where undefined variables in with_* loops would cause a task \
failure even if the when condition would cause the task to be skipped.
* Fixed a bug related to roles where in certain situations a role may be run \
more than once despite not allowing duplicates.
* Fixed some additional bugs related to atomic_move for modules.
* Fixes multiple bugs related to field/attribute inheritance in nested blocks \
and includes, as well as task iteration logic during failures.
* Fixed pip installing packages into virtualenvs using the system pip instead of \
the virtualenv pip.
* Fixed dnf on systems with dnf-2.0.x (some changes in the API).
* Fixed traceback with dnf install of groups.
* Fixes a bug in which include_vars was not working with failed_when.
* Fix for include_vars only loading files with .yml, .yaml, and .json \
extensions. This was only supposed to apply to loading a directory of vars \
files.
* Fixes several bugs related to properly incrementing the failed count in the \
host statistics.
* Fixes a bug with listening handlers which did not specify a `name` field.
* Fixes a bug with the `play_hosts` internal variable, so that it properly \
reflects the current list of hosts.
* Fixes a bug related to the v2_playbook_on_start callback method and legacy \
(v1) plugins.
* Fixes an openssh related process exit race condition, related to the fact that \
connections using ControlPersist do not close stderr.
* Improvements and fixes to OpenBSD fact gathering.
* Updated `make deb` to use pbuilder. Use `make local_deb` for the previous \
non-pbuilder build.
* Fixed Windows async to avoid blocking due to handle inheritance.
* Fixed bugs in the mount module on older Linux kernels and *BSDs
* Various minor fixes for Python 3
* Inserted some checks for jinja2-2.9, which can cause some issues with Ansible \
currently.
## 2.2 "The Battle of Evermore" - 2016-11-01
### Major Changes:
* Added the `listen` feature for modules. This feature allows tasks to more \
easily notify multiple handlers, as well as making it easier for handlers from \
decoupled roles to be notified.
* Major performance improvements.
* Added support for binary modules
* Added the ability to specify serial batches as a list (`serial: [1, 5, 10]`), \
which allows for so-called "canary" actions in one play.
* Fixed 'local type' plugins and actions to have a more predictable relative \
path. Fixes a regression of 1.9 (PR #16805). Existing users of 2.x will need to \
adjust related tasks.
* `meta` tasks can now use conditionals.
* `raw` now returns `changed: true` to be consistent with shell/command/script \
modules. Add `changed_when: false` to `raw` tasks to restore the pre-2.2 \
behavior if necessary.
* New privilege escalation become method `ksu`
* Windows `async:` support for long-running or background tasks.
* Windows `environment:` support for setting module environment vars in play/task.
* Added a new `meta` option: `end_play`, which can be used to skip to the end of \
a play.
* roles can now be included in the middle of a task list via the new \
`include_role` module, this also allows for making the role import 'loopable' \
and/or conditional.
* The service module has been changed to use system specific modules if they \
exist and fall back to the old service module if they cannot be found or \
detected.
* Add ability to specify what ssh client binary to use on the controller. This
can be configured via ssh_executable in the ansible config file or by setting
ansible_ssh_executable as an inventory variable if different ones are needed
for different hosts.
* Windows:
* several facts were modified or renamed for consistency with their Unix \
counterparts, and many new facts were added. If your playbooks rely on any of \
the following keys, please ensure they are using the correct key names and/or \
values:
- ansible_date_time.date (changed to use yyyy-mm-dd format instead of \
default system-locale format)
- ansible_date_time.iso8601 (changed to UTC instead of local time)
- ansible_distribution (now uses OS caption string, e.g.: "Microsoft \
Windows Server 2012 R2 Standard", version is still available on \
ansible_distribution_version)
- ansible_totalmem (renamed to ansible_memtotal_mb, units changed to MB \
instead of bytes)
* `async:` support for long-running or background tasks.
* `environment:` support for setting module environment vars in play/task.
* Tech Preview: Work has been done to get Ansible running under Python3. This \
work is not complete enough to depend upon in production environments but it is \
enough to begin testing it.
* Most of the controller side should now work. Users should be able to run \
python3 /usr/bin/ansible and python3 /usr/bin/ansible-playbook and have core \
features of ansible work.
* A few of the most essential modules have been audited and are known to work. \
Others work out of the box.
* We are using unit and integration tests to help us port code and not regress \
later. Even if you are not familiar with python you can still help by \
contributing integration tests (just ansible roles) that exercise more of the \
code to make sure it continues to run on both Python2 and Python3.
* scp_if_ssh now supports True, False and "smart". "smart" \
is the default and will retry failed sftp transfers with scp.
* Network:
* Refactored all network modules to remove duplicate code and take advantage \
of Ansiballz implementation
* All functionality from *_template network modules have been combined into \
*_config module
* Network *_command modules not longer allow configuration mode statements
### Minor Changes
* now -vvv shows exact path from which 'currently executing module' was picked \
up from.
* loop_control now has a label option to allow fine grained control what gets \
displayed per item
* loop_control now has a pause option to allow pausing for N seconds between \
loop iterations of a task.
* New privilege escalation become method `ksu`
* `raw` now returns `changed: true` to be consistent with shell/command/script \
modules. Add `changed_when: false` to `raw` tasks to restore the pre-2.2 \
behavior if necessary.
* removed previously deprecated ';' as host list separator.
* Only check if the default ssh client supports ControlPersist once instead of \
once for each host + task combination.
* Fix a problem with the pip module updating the python pip package itself.
* ansible_play_hosts is a new magic variable to provide a list of hosts in scope \
for the current play. Unlike play_hosts it is not subject to the 'serial' \
keyword.
* ansible_play_batch is a new magic variable meant to substitute the current \
play_hosts.
## 2.1.4 "The Song Remains the Same" - 2017-01-16
* Security fix for CVE-2016-9587 - An attacker with control over a client system \
being managed by Ansible and the ability to send facts back to the Ansible \
server could use this flaw to execute arbitrary code on the Ansible server as \
the user and group Ansible is running as.
* Fixed a bug with conditionals in loops, where undefined variables and other \
errors will defer raising the error until the conditional has been evaluated.
* Added a version check for jinja2-2.9, which does not fully work with Ansible \
currently.
## 2.1.3 "The Song Remains the Same" - 2016-11-04
* Security fix for CVE-2016-8628 - Command injection by compromised server via \
fact variables. In some situations, facts returned by modules could overwrite \
connection-based facts or some other special variables, leading to injected \
commands running on the Ansible controller as the user running Ansible (or via \
escalated permissions).
* Security fix for CVE-2016-8614 - apt_key module not properly validating keys \
in some situations.
###Minor Changes:
* The subversion module from core now marks its password parameter as no_log so
the password is obscured when logging.
* The postgresql_lang and postgresql_ext modules from extras now mark
login_password as no_log so the password is obscured when logging.
* Fixed several bugs related to locating files relative to role/playbook directories.
* Fixed a bug in the way hosts were tested for failed states, resulting in \
incorrectly skipped block sessions.
* Fixed a bug in the way our custom JSON encoder is used for the to_json* filters.
* Fixed some bugs related to the use of non-ascii characters in become passwords.
* Fixed a bug with Azure modules which may be using the latest rc6 library.
* Backported some docker_common fixes.
Files: