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
- Ansible 2.4- Administrivia and Process
- Python 2.4 and 2.5 support discontinuation
- Python 3
- Ansible-Config
- Inventory
- Facts
- PluginLoader
- Static Loop Keyword
- Vault
- Globalize Callbacks
- Plugins
- Group Priorities
- Runtime Check on Modules for Blacklisting
- Disambiguate Includes
- Windows
- AWS
- Azure
- Google Cloud Platform
- Network Roadmap
- Contributor Quality of Life
 
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-configcommand 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/factsmore 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
PluginLoaderfromPluginFinder. Most plugins need both but Modules and Module_utils only need a PluginFinder- Write different
PluginFindersubclasses 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 list
- Remove 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 *_templatemodules (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_verifiedif 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.
 
 
- Restore Windows Server 2016 integration tests on Shippable.
- 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)
 
- Run existing cloud integration tests as part of CI for:
- 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.
 
 
- Shippable + Bot Integration
