=========== 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** .. contents:: 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`` from ``PluginFinder``. Most plugins need both but Modules and Module_utils only need a PluginFinder - Write 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 of ``loop:`` - 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)** AWS --- - Focus on pull requests for various modules - Triage existing merges for modules - Module work - elb-target-groups `#19492 `_, `#24583 `_. **(done)** - alb* `#19491 `_, `#24584 `_. **(done)** - ecs `#20618 `_. **(in review process)** - Data Pipelines `#22878 `_. **(in review process)** - VPN `#24385 `_. **(in review process)** - DirectConnect `#26152 `_. **(connection module in review process, several more to come)** 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.