Ansible 2.4¶
Core Engine Freeze and Module Freeze: 15 August 2017
Core and Curated Module Freeze: 15 August 2017
Community Module Freeze: 29 August 2017
Release Candidate 1 will be 06 September, 2017
Target: Mid-September 2017
Topics
Administrivia and Process¶
Starting with 2.4, all items that are deprecated will be removed in 4 major releases unless otherwise stated.
For example: A module that is deprecated in 2.4 will be removed in 2.8
Python 2.4 and 2.5 support discontinuation¶
Ansible will not support Python 2.4 nor 2.5 on the target hosts anymore. Going forward, Python 2.6+ will be required on targets, as already is the case on the controller.
Python 3¶
Ansible Core Engine and Core modules will be tested on Python 3
All Core modules now have at least a smoketest integration test. Additional coverage is welcomed to find more bugs and prevent regressions.
Communicate with Linux distros to provide Ansible running on Python 3
Python3 based Ansible packages are now available to run on Fedora Linux
Ansible-Config¶
Proposal found in ansible/proposals issue #35.
Initial PR of code found in ansible/ansible PR #12797. (done)
Per plugin configuration (depends on plugin docs below). (WIP)
New yaml format for config (possibly pushed to future roadmap)
Extend the ability of the current config system by adding an
ansible-config
command and add the following:Dump existing config settings (working, fine tuning)
Update / write a config entry (pushed to future roadmap)
Show available options (ini entry, yaml, env var, etc) (working, fine tuning)
Inventory¶
(done, needs docs) - Proposal found in ansible/proposals issue #41. - Current inventory is overly complex, non modular and mostly still a legacy from inception.
Facts¶
Configurable list of ‘fact modules’ for
gather_facts
(done)Fact gathering policy finer grained (done)
Make
setup.py
/facts
more pluggable (done)Improve testing of
setup.py
/facts.py
(done)Namespacing fact variables (via a config option) implemented in ansible/ansible PR #18445. (done) Proposal found in ansible/proposals issue #17.
PluginLoader¶
(pushed out to future release) - Over the past couple releases we’ve had some thoughts about how PluginLoader might be better structured
Load the loaders via an initialization function(), not when importing the module. (stretch goal, doesn’t impact the CLI)
Separate duties of
PluginLoader
fromPluginFinder
. Most plugins need both but Modules and Module_utils only need a PluginFinderWrite different
PluginFinder
subclasses for module_utils and perhaps Modules. Most Plugin types have a flattened namespace and are single python files. Modules include code that is not written in python. Module_utils are vastly different from the other Plugins as they maintain a hierarchical namespace and are multi-file.Potentially split module_utils loader for python from module_utils loader for powershell. Currently we only support generic module_utils for python modules. The powershell modules always include a single, hardcoded powershell module_utils file. If we add generic module_utils for powershell, we’ll need to decide how to organize the code.
Static Loop Keyword¶
Pushed to 2.5
Deprecate (not on standard deprecation cycle)
with_
in favor ofloop:
This
loop:
will take only a listRemove complexity from loops, lookups are still available to users
Less confusing having a static directive vs a one that is dynamic depending on plugins loaded.
Vault¶
Support for multiple vault passwords. (done)
Each decrypted item should know which secret to request (done)
Support requesting credentials (password prompt) as callbacks
Ability to open and edit file with encrypted vars deencrypted, and encrypt/format on save
Globalize Callbacks¶
(pushed out to future release) - Make send_callback available to other code that cannot use it. - Would allow for ‘full formatting’ of output (see JSON callback) - Fixes static ‘include’ display problem
Plugins¶
Allow plugins to have embedded docs (like modules) (done)
Update ansible-doc and website to generate docs from these ansible/ansible PR #22796. (ansible-doc working, todo:website)
Group Priorities¶
(done) - Start using existing group priority variable to sort/merge group vars - Implementation for this in ansible/ansible PR #22580. - Documentation of group priority variable
Runtime Check on Modules for Blacklisting¶
(pushed out to future release) - Filter on things like “supported_by” in module metadata - Provide users with an option of “warning, error or allow/ignore” - Configurable via ansible.cfg and environment variable
Disambiguate Includes¶
Create import_x for ‘static includes’ (import_task, import_playbook, import_role)
Any directives are applied to the ‘imported’ tasks
Create include_x for ‘dynamic includes’ (include_task, include_role)
Any directives apply to the ‘include’ itself
Windows¶
New PS/.NET module API (in progress)
Windows Nano Server support
Windows module_utils pluginloader (done)
Refactor duplicated module code into new module_utils files (in progress)
Evaluate #Requires directives (existing and new: PS version, OS version, etc)
Improve module debug support/persistence (done)
Explore official DSC support (done)
Explore module intermediate output
Explore Powershell module unit testing (in progress)
Explore JEA support (stretch)
Extended become support with network/service/batch logon types
Module updates
Split “Windows” category into multiple subs
Domain user/group management modules (done)
win_mapped_drive module (done)
win_hotfix (done)
win_updates rewrite to require become
win_package changes required to deprecate win_msi (done)
win_copy re-write (done)
Azure¶
Expose endpoint overrides (done)
Reformat/document module output to collapse internal API structures and surface important data (eg, public IPs, NICs, data disks) (pushed to future)
Add load balancer module (in progress)
Add Azure Functions module (in progress)
Google Cloud Platform¶
New Module: DataProc
Support for Cross-Region HTTP Load Balancing
New Module: GKE
Network Roadmap¶
Removal of
*_template
modules (done)Distributed Continuous Integration Infrastructure (done)
RPC Connection Plugin (done)
Module Work
Declarative intent modules (done)
OpenVSwitch (done)
Minimal Viable Platform Agnostic Modules (done)
Contributor Quality of Life¶
All Core and Curated modules will work towards having unit testing. (edit: integration and/or unit tests)
More bot improvements!
Bot comments on PRs with details of test failures. (done)
Test Infrastructure changes
Shippable + Bot Integration
Provide verified test results to the bot from Shippable so the bot can comment on PRs with CI failures. (done, compile and sanity tests only)
Enable the bot to mark PRs with
ci_verified
if all CI failures are verified. (done)
Windows Server 2016 Integration Tests
Restore Windows Server 2016 integration tests on Shippable.
Originally enabled during the 2.3 release cycle, but later disabled due to intermittent WinRM issues.
Depends on resolution of WinRM connection issues.
Windows Server Nano Integration Tests (pushed to future roadmap)
Add support to ansible-core-ci for Windows Server 2016 Nano and enable on Shippable.
This will use a subset of the existing Windows integration tests.
Depends on resolution of WinRM connection issues.
Windows + Python 3 Tests
Run basic Windows tests using Python 3 as the controller. (partially done, not all planned tests running yet)
Depends on resolution of WinRM Python 3 issues.
Cloud Integration Tests
Run existing cloud integration tests as part of CI for:
AWS (done)
Azure (done)
GCP (pushed to future roadmap)
Tests to be run only on cloud module (and module_utils) PRs and merges for the relevant cloud provider. (done)
Test Reliability
Further improve test reliability to reduce false positives on Shippable. (ongoing)
This continues work from the 2.3 release cycle.
Static Code Analysis
Further expand the scope and coverage of static analysis. (ongoing)
This continues work from the 2.3 release cycle.