* Support for Python-2.4 and Python-2.5 on the managed system's side was dropped. If you need to manage a system that ships with Python-2.4 or Python-2.5, you'll need to install Python-2.6 or better on the managed system or run Ansible-2.3 until you can upgrade the system.
* Support for Python-2.4 and Python-2.5 on the managed system's side was dropped. If you need to manage a system that ships with Python-2.4 or Python-2.5, you'll need to install Python-2.6 or better on the managed system or run Ansible-2.3 until you can upgrade the system.
* New import/include keywords to replace the old bare `include` directives. The use of `static: {yes|no}` on such includes is now deprecated.
* New import/include keywords to replace the old bare `include` directives. The use of `static: {yes|no}` on such includes is now deprecated.
- Using import_* (import_playbook, import_tasks, import_role) directives are static.
- Using `import_*` (`import_playbook`, `import_tasks`, `import_role`) directives are static.
- Using include_* (include_tasks, include_role) directives are dynamic.
- Using `include_*` (`include_tasks`, `include_role`) directives are dynamic.
* Added fact namespacing, from now on facts will be available under 'ansible_facts' namespace (i.e. `ansible_facts.ansible_os_distribution`), they will still also be added into the main namespace directly but now also having a configuration toggle to disable this. Eventually this will be on by default. This is done to avoid collisions and possible security issues as facts come from the remote targets and they might be compromised.
* Added fact namespacing, from now on facts will be available under `ansible_facts` namespace (i.e. `ansible_facts.ansible_os_distribution`), they will still also be added into the main namespace directly but now also having a configuration toggle to disable this. Eventually this will be on by default. This is done to avoid collisions and possible security issues as facts come from the remote targets and they might be compromised.
* new 'order' play level keyword that allows the user to change the order in which Ansible processes hosts when dispatching tasks.
* new `order` play level keyword that allows the user to change the order in which Ansible processes hosts when dispatching tasks.
* Users can now set group merge priority for groups of the same depth (parent child relationship), using the new `ansible_group_priority` variable, when values are the same or don't exist it will fallback to the previous 'sorting by name'.
* Users can now set group merge priority for groups of the same depth (parent child relationship), using the new `ansible_group_priority` variable, when values are the same or don't exist it will fallback to the previous sorting by name'.
* Inventory has been revamped:
* Inventory has been revamped:
- Inventory classes have been split to allow for better management and deduplication
- Inventory classes have been split to allow for better management and deduplication
- Logic that each inventory source duplicated is now common and pushed up to reconciliation
- Logic that each inventory source duplicated is now common and pushed up to reconciliation
@ -19,8 +19,8 @@ Ansible Changes By Release
- Updated CLI with helper method to initialize base objects for plays
- Updated CLI with helper method to initialize base objects for plays
- New Inventory plugins for creating inventory
- New Inventory plugins for creating inventory
- Old inventory formats are still supported via plugins
- Old inventory formats are still supported via plugins
- Inline host_list is also an inventory plugin, an example alternative 'advanced_host_list' is also provided (it supports ranges)
- Inline host_list is also an inventory plugin, an example alternative `advanced_host_list` is also provided (it supports ranges)
- New configuration option to list enabled plugins and precedence order: 'whitelist_inventory' in ansible.cfg
- New configuration option to list enabled plugins and precedence order: `whitelist_inventory` in ansible.cfg
- vars_plugins have been reworked, they are now run from Vars manager and API has changed (need docs)
- vars_plugins have been reworked, they are now run from Vars manager and API has changed (need docs)
- Loading group_vars/host_vars is now a vars plugin and can be overridden
- Loading group_vars/host_vars is now a vars plugin and can be overridden
- It is now possible to specify mulitple inventory sources in the command line (-i /etc/hosts1 -i /opt/hosts2)
- It is now possible to specify mulitple inventory sources in the command line (-i /etc/hosts1 -i /opt/hosts2)
@ -32,27 +32,27 @@ Ansible Changes By Release
- TODO: build upon this to add many features detailed in ansible-config proposal https://github.com/ansible/proposals/issues/35
- TODO: build upon this to add many features detailed in ansible-config proposal https://github.com/ansible/proposals/issues/35
### Deprecations
### Deprecations
* The behaviour when specifying --tags (or --skip-tags) multiple times on the command line
* The behaviour when specifying `--tags` (or `--skip-tags`) multiple times on the command line
has changed so that the tags are merged together by default. See the
has changed so that the tags are merged together by default. See the
documentation for how to temporarily use the old behaviour if needed:
documentation for how to temporarily use the old behaviour if needed:
The new behaviour mirrors how the variables would appear if there was no hash
The new behaviour mirrors how the variables would appear if there was no hash
mark in the string.
mark in the string.
* As of 2.4.0, the fetch module fails if there are errors reading the remote file.
* As of 2.4.0, the fetch module fails if there are errors reading the remote file.
Use ignore_errors or failed_when in playbooks if you wish to ignore errors.
Use `ignore_errors` or `failed_when` in playbooks if you wish to ignore errors.
* Experimentally added pmrun become method.
* Experimentally added pmrun become method.
* Enable the docker connection plugin to use su as a become method
* Enable the docker connection plugin to use su as a become method
* Add an encoding parameter for the replace module so that it can operate on non-utf-8 files
* Add an encoding parameter for the replace module so that it can operate on non-utf-8 files
* By default, Ansible now uses the cryptography module to implement vault instead of the older pycrypto module.
* By default, Ansible now uses the cryptography module to implement vault instead of the older pycrypto module.
* Changed task state resulting from both 'rc' and 'failed' fields returned, 'rc' no longer overrides 'failed'. Test plugins have also been updated accordingly.
* Changed task state resulting from both `rc` and `failed` fields returned, 'rc' no longer overrides 'failed'. Test plugins have also been updated accordingly.