- Add a debug flag that prints log entries to stdout
- Investigate implementing subcommands
- Clean up output formatting
- Reimplement task result `invocation` injection control-side, but only when module didn't return it.
- always use heuristic sensitive-value filtering on injected values
- if heuristic filter triggers, add a warning that perhaps use of task-level no_log should be considered
- consider skipping injection for Python module type (even if it's missing, eg catastrophic module failure) to prevent potentially injecting a value that was arg-level no_log'd on the target side.
- consider addition of NO_INVOCATION config
- Assemble module improvements
- assemble just skips when in check mode, it should be able to test if there is a difference and changed=true/false.
- The same with diff, it should work as template modules does
- Include AWX facts as default fact modules in Ansible
- Handle Password reset prompts cleaner
- Tasks stats for rescues and ignores
- Make 'persistent' a generic feature so multiple actions can occur seamlessly in same connection.
- New property for module documentation to manage expectations of the behaviour of the module.
- Normalize temp dir usage across all subsystems
- Currently ignored keywords do not notify user they were ignored, throw a warning on these.
- Deprecation version enforcement
- sysvinit service module
- Add option to set playbook dir for adhoc, inventory and console to allow for 'relative path loading'
Ansible Content Management
--------------------------
- Have ansible-galaxy handle installation of modules, plugins, etc not included with the install package
Ansible-Config
--------------
- New yaml format for config
- Extend config to rest of plugin types and update plugins to support the new config
- Create an playbook directory option
Inventory
---------
- ansible-inventory option to output group variable assignment and data
- Convert the following dynamic inventory scripts into plugins:
- ec2
- Azure
- GCE
- Foreman
Facts
-----
- Namespacing fact variables (via a config option) implemented in ansible/ansible PR `#18445 <https://github.com/ansible/ansible/pull/18445>`_. **(done)**
Proposal found in ansible/proposals issue `#17 <https://github.com/ansible/proposals/issues/17>`_.
- Make fact collectors and gather_subset specs finer grained
- Eliminate unneeded deps between fact collectors
- Allow fact collectors to indicate if they need information from another fact collector to be gathered first.
PluginLoader
------------
- 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.
- On role install, If an existing role is found in the 'bare name' handle version
- removing roles should detect multiple versions and prompt for 'all' or a specific version(s)
- When referencing a role in a play, ansible-playbook should now also check if version is specified and use that if found
- Option for galaxy to remove 'old roles' on install (upgrade?), this is not clear cut as version can be a commit SHA and order there is not related to sorting, clear 'versions 1.1, 1.2' can use loose versioning comparisons.
- ansible-galaxy cli should also be able to change the 'base role name' to point to specific versions, this solves the issue when the 'latest' is not actually the one existing plays should be using, again this mimics the 'alternatives' functionality.
Globalize Callbacks
-------------------
- 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
Runtime Check on Modules for Blacklisting
-----------------------------------------
- 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