1===========
2Ansible 2.2
3===========
4**Target: September 2016**
5
6.. contents:: Topics
7
8Docker
9------
10Lead by Chris Houseknecht
11
12- Docker_network: **done**
13- Docker_volume: Not in this release
14- Docker_file: Not in this release.
15- Openshift:  oso_deployment, oso_route, oso_service, oso_login (...and possibly others. These are modules being developed to support `ansible-container <https://github.com/ansible/ansible-container>`_.): Deferred for later release
16- Kubernetes: kube_deployment, kube_service, kube_login (...and possibly others. These too are modules being developed to support `ansible-container <https://github.com/ansible/ansible-container>`_): Deferred for later release
17
18Extras split from Core
19----------------------
20Lead by Jason M and Jimi-c (Targeting 2.2, could move into 2.3).
21
22Targeted towards the 2.2 release or shortly after, we are planning on splitting Extras out of the "Ansible Core" project.  That means that modules that are shipped with Ansible by default are **only** the modules in ansibl-modules-core.  Ansible extras will become a separate project, managed by the community standard.  Over the next few months we're going to have a lot of work to do on getting all of the modules in the right places for this to work.
23
24- Create proposal (Jason or Jimi)
25- Review modules for correct location (extras v core)
26- Extras is a completely different package (does not install with ansible)
27- Library dependencies
28- Decide and implement release schedules between Ansible Core and Extras to ensure compatibility and longevity for modules and versions of Ansible.
29
30Tweaks/Fixes
31------------
32- Connection handling stuff. (Toshio K. and Brian C.): This is a stretch goal for 2.2.  **This work got pushed out**
33
34  - Change connection polling to avoid resource limitations, see `<https://github.com/ansible/ansible/issues/14143>`_
35  - `<https://docs.python.org/3/library/selectors.html#module-selectors>`_
36  - Code: https://github.com/kai11/ansible/blob/fix/select_fd_out_of_range_wip/lib/ansible/plugins/connection/ssh.py
37
38
39AWS
40---
41Lead by Ryan Brown
42
43- Pagination for all AWS modules (generic pagination exists, but isn't used everywhere) (bumped to 2.3)
44- Refactoring ec2.py to be more digestible (bumped to 2.3)
45- Fix inconsistencies with different authentication methods (STS, environment creds, ~/.aws/credentials) (done)
46- AWS Lambda modules (lambda_execute done, others pending)
47- Ryan Brown and Robyn Bergeron work on bug/PR triage to reduce backlog (reduced - continuing to work on it)
48
49Google
50------
51Lead by Ryan Brown and Tom Melendez
52
53- Add support for Google Cloud DNS
54- Add support for Google Cloud managed instance groups (done)
55- Support restoring instances from snapshots
56- Improved handling of scratch disks on instances (done)
57
58OpenStack
59---------
60Lead by Ryan Brown
61
62Stretch goal for this release
63
64- Ryan with some help from David Shrewsbury (Zuul/Openstack at RedHat).
65- Support Heat stack resources (done)
66- Support LBaaS load balancers
67
68Azure load balancer
69-------------------
70- Feature parity for AWS ELB (Stretch Goal)
71
72VMware
73------
74Lead by Brian, Jtanner
75
76- *module/inventory script: port to pyvmomi (jtanner, bcoca)*
77  **done:** https://github.com/ansible/ansible/pull/15967
78- *inventory script: allow filtering ala ec2 (jtanner) (undergoing PR process)*
79  **done:** https://github.com/ansible/ansible/pull/15967
80- vsphere: feature parity with whereismyjetpack and viasat modules 
81
82Windows
83-------
84Lead by Matt D
85
86- Feature parity
87
88  - PS module API (mirror Python module API where appropriate). Note: We don't necessarily like the current python module API (AnsibleModule is a huge class with many unrelated utility functions.  Maybe we should redesign both at the same time?) (bumped to 2.3+ due to "moving target" uncertainty)
89  - Environment keyword support (done)
90  - win_shell/win_command (done)
91  - Async support (done)
92  - (stretch goal) Pipelining (bumped to 2.3+)
93
94- Windows-specific enhancements
95
96  - Multiple Kerberos credential support (done)
97  - Server 2016 testing/fixes (done, awaiting next TP/RTM)
98  - (stretch goal) Nano Server connection + module_utils working (bumped to 2.3)
99  - (stretch goal) Encrypted kerberos support in pywinrm (bumped to 2.3)
100
101Network
102-------
103Lead by Nate C, Peter S
104
105- **Done:** Unify NetworkModules (module_utils/network.py) as much as possible 
106- **Done:** Add support for config diff and replace on supported platforms (2 weeks)
107- **Done:** Support for VyOS network operating system
108- **Done:** Add support for RestConf for IOS/XE
109- **Done:** Support for Dell Networking OS10
110- **Done:** Add support for Nokia SR OS modules
111- **Done:** Network facts modules (dellos, eos, ios, iosxr, junos, nxos, openswitch, vyos)
112- **Deferred:** Network facts modules (cumulus, netvisor, sros)
113- **Deferred:** Add support for NetConf for IOS/XE
114- **Deferred:** (stretch goal) Quagga modules
115- **Deferred:** (stretch goal) Bird modules
116- **Deferred:** (stretch goal) GoBGP modules
117
118Role revamp
119-----------
120- Implement 'role revamp' proposal to give users more control on role/task execution (Brian)
121
122  - **https://github.com/ansible/proposals/blob/master/roles_revamp.md**
123
124Vault
125-----
126Lead by Jtanner, Adrian
127
128- *Extend 'transparent vault file usage' to other action plugins other than 'copy'(https://github.com/ansible/ansible/issues/7298)*
129  **done:** https://github.com/ansible/ansible/pull/16957
130- Add 'per variable' vault support (!vault YAML directive, existing PR already) https://github.com/ansible/ansible/issues/13287 https://github.com/ansible/ansible/issues/14721
131- Add vault/unvault filters https://github.com/ansible/ansible/issues/12087 (deferred to 2.3)
132- Add vault support to lookups (likely deferred to 2.3 or until lookup plugins are revamped)
133- Allow for multiple vault secrets https://github.com/ansible/ansible/issues/13243
134- Config option to turn 'unvaulting' failures into warnings https://github.com/ansible/ansible/issues/13244
135
136Python3
137-------
138Lead by Toshio
139
140A note here from Jason M: Getting to complete, tested Python 3 is both
141a critical task and one that has so much work and so many moving parts
142that we don't expect this to be complete by the 2.2 release.  Toshio will
143lead this overall effort.
144
145- Motivation:
146  - Ubuntu LTS (16.04) already ships without python2.  RHEL8 is coming which is also expected to be python3 based.  These considerations make this high priority.
147  - Ansible users are getting restless: https://groups.google.com/forum/#!topic/ansible-project/DUKzTho3OCI
148  - This is probably going to take multiple releases to complete; need to get started now
149
150- Baselines:
151  - We're targeting Python-3.5 and above.
152
153- Goals for 2.2:
154
155  - Tech preview level of support
156  - Controller-side code can run on Python3
157  - Update: Essential features have been shown to work on Python3.
158    Currently all unittests and all but three integration tests are
159    passing on Python3.  Code has not been line-by-line audited so bugs
160    remain but can be treated as bugs, not as massive, invasive new features.
161  - Almost all of our deps have been ported:
162
163    - The base deps in setup.py are ported: ['paramiko', 'jinja2', "PyYAML", 'setuptools', 'pycrypto &gt;= 2.6']
164    - python-six from the rpm spec file has been ported
165    - Python-keyczar from the rpm spec file is not.
166    - Strategy: removing keyczar when we drop accelerate for 2.3. Print deprecation in 2.1.
167
168  - Module_utils ported to dual python3/python2(2.4 for much of it, python2.6 for specific things)
169    **Mostly done:**  Also not line-by-line audited but the unittests
170    and integration tests do show that the most use functionality is working.
171  - Add module_utils files to help port
172
173    - Update: copy of the six library (v1.4.1 for python2.4 compat) and unicode helpers are here (ansible.module_utils._text.{to_bytes,to_text,to_native})
174  - A few basic modules ported to python3
175
176    - Stat module best example module since it's essential.
177    - Update:
178
179      - A handful of modules like stat have been line-by-line ported.  They should work reliably with few python3-specific bugs.  All but three integration tests pass which means that most essential modules are working to some extent on Python3.
180
181        - The three failing tests are: service, hg, and uri.
182        - Note, large swaths of the modules are not tested.  The status of
183           these is unknown
184
185  - All code should compile under Python3.
186    - lib/ansible/* and all modules now compile under Python-3.5
187
188  - Side work to do:
189    - Figure out best ways to run unit-tests on modules.  Start unit-testing modules.  This is going to become important so we don't regress python3 or python2.4 support in modules  (Going to largely punt on this for 2.2.  Matt Clay is working on building us a testing foundation for the first half of 2.2 development so we'll re-evaluate towards the middle of the dev cycle).
190    - More unit tests of module_utils
191    - More integration tests.  Currently integration tests are the best way to test ansible modules so we have to rely on those.
192
193  - Goals for 2.3:
194
195    - Bugfixing, bugfixing, bugfixing.  We need community members to test,
196      submit bugs, and add new unit and integration tests.  I'll have some
197      time allocated both to review any Python3 bugfixes that they submit
198      and to work on bug reports without PRs.  The overall goal is to make
199      the things that people do in production with Ansible work on Python 3.
200
201Infrastructure Buildout and Changes
202-----------------------------------
203Lead by Matt Clay
204
205Another note from Jason M: A lot of this work is to ease the burden of CI, CI performance, increase our testing coverage and all of that sort of thing.  It's not necessarily feature work, but it's \*\*critical\*\* to growing our product and our ability to get community changes in more securely and quickly.
206
207- **CI Performance**
208  Reduce time spent waiting on CI for PRs. Combination of optimizing existing Travis setup and offloading work to other services. Will be impacted by available budget.
209
210  **Done:** Most tests have been migrated from Travis to Shippable.
211
212- **Core Module Test Organization**
213  Relocate core module tests to ansible-modules-core to encourage inclusion of tests in core module PRs.
214
215  **Deferred:** Relocation of core module tests has been deferred due to proposed changes in `modules management <https://github.com/ansible/proposals/blob/master/modules-management.md>`_.
216
217- **Documentation**
218  Expand documentation on setting up a development and test environment, as well as writing tests. The goal is to ease development for new contributors and encourage more testing, particularly with module contributions.
219- **Test Coverage**
220
221  - Expand test coverage, particularly for CI. Being testing, this is open ended. Will be impacted by available budget.
222
223    **Done:** Module PRs now run integration tests for the module(s) being changed.
224
225  - Python 3 - Run integration tests using Python 3 on CI with tagging for those which should pass, so we can track progress and detect regressions.
226
227    **Done:** Integration tests now run on Shippable using a Ubuntu 16.04 docker image with only Python 3 installed.
228
229  - Windows - Create framework for running Windows integration tests, ideally both locally and on CI.
230
231    **Done:** Windows integration tests now run on Shippable.
232
233  - FreeBSD - Include FreeBSD in CI coverage. Not originally on the roadmap, this is an intermediary step for CI coverage for macOS.
234
235    **Done:** FreeBSD integration tests now run on Shippable.
236
237  - macOS - Include macOS in CI coverage.
238
239    **Done:** macOS integration tests now run on Shippable.
240