summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Asselstine <mark.asselstine@windriver.com>2018-09-18 16:27:26 -0400
committerBruce Ashfield <bruce.ashfield@windriver.com>2018-09-25 17:40:49 -0400
commit492de1f32fc0053b692e3173ea6d3d19052f7c97 (patch)
tree8483c70e61ac33cb291100a39c3f1440cad7854e
parent25b67706fe7a7969da3af52bb7b912bf3a02510e (diff)
downloadmeta-cloud-services-492de1f32fc0053b692e3173ea6d3d19052f7c97.tar.gz
python-ansible: copy recipe from meta-overc (branch:master-oci)
This recipe was part of meta-overc as ansible was originally used to configure things in the OverC framework. The use of ansible was dropped, however, due to size concerns, the limited functionality we were using, increased boot times and other factors. It no longer makes sense to host this recipe in meta-overc and thus we are making it available as part of meta-cloud-services as it is still a useful tool for cloud deployments. Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
-rw-r--r--recipes-devtools/python/python-ansible.inc76
-rw-r--r--recipes-devtools/python/python-ansible_2.3.1.0.bb4
-rw-r--r--recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch1232
-rw-r--r--recipes-devtools/python/python3-ansible_2.3.1.0.bb8
4 files changed, 1320 insertions, 0 deletions
diff --git a/recipes-devtools/python/python-ansible.inc b/recipes-devtools/python/python-ansible.inc
new file mode 100644
index 0000000..f1b3771
--- /dev/null
+++ b/recipes-devtools/python/python-ansible.inc
@@ -0,0 +1,76 @@
1DESCRIPTION = "Ansible is a simple IT automation platform that makes your applications and systems easier to deploy."
2HOMEPAGE = "https://github.com/ansible/ansible/"
3SECTION = "devel/python"
4LICENSE = "GPLv3"
5LIC_FILES_CHKSUM = "file://COPYING;md5=8f0e2cd40e05189ec81232da84bd6e1a"
6
7SRCNAME = "ansible"
8
9SRC_URI = "http://releases.ansible.com/ansible/${SRCNAME}-${PV}.tar.gz"
10
11SRC_URI[md5sum] = "b1be8f05864a07c06b8a767dcd48ba1b"
12SRC_URI[sha256sum] = "cd4b8f53720fcd0c351156b840fdd15ecfbec22c951b5406ec503de49d40b9f5"
13
14
15S = "${WORKDIR}/${SRCNAME}-${PV}"
16
17ANSIBLE_WHITELIST_MODULES ?= "commands files system network/ovs __pycache__ service"
18
19do_install_append() {
20 set +e
21
22 # install hosts and conf
23 install -d ${D}/${sysconfdir}/ansible
24
25 # There is no default inventory configuration installed for ansible,
26 # so we use the example as a template to improve OOBE.
27 install ${S}/examples/hosts ${D}/${sysconfdir}/ansible/
28 install ${S}/examples/ansible.cfg ${D}/${sysconfdir}/ansible/
29
30 # do not gather machine's information, which could reduce setup time
31 sed -i "s|^#gathering = implicit|gathering = explicit|g" \
32 ${D}/${sysconfdir}/ansible/ansible.cfg
33
34 for d in $(ls ${D}/${libdir}/python${PYTHON_BASEVERSION}/site-packages/ansible/modules); do
35 if [ -d ${D}/${libdir}/python${PYTHON_BASEVERSION}/site-packages/ansible/modules/$d ]; then
36 match=
37 rm_target=
38 for w in ${ANSIBLE_WHITELIST_MODULES}; do
39 m=$(echo $w | grep $d)
40 if [ $? -eq 0 ]; then
41 match=t
42 match_word=$m
43 fi
44 done
45 if [ -n "$match" ]; then
46 echo $match_word | grep -q "/"
47 if [ $? -eq 0 ]; then
48 for d2 in $(ls ${D}/${libdir}/python${PYTHON_BASEVERSION}/site-packages/ansible/modules/$d); do
49 if [ -d ${D}/${libdir}/python${PYTHON_BASEVERSION}/site-packages/ansible/modules/$d/$d2 ]; then
50 sub_remove=t
51 for w in ${ANSIBLE_WHITELIST_MODULES}; do
52 m=$(echo $w | grep $d2)
53 if [ $? -eq 0 ]; then
54 sub_remove=
55 fi
56 done
57 if [ -n "$sub_remove" ]; then
58 echo "[info]: removing $d/$d2"
59 rm -rf ${D}/${libdir}/python${PYTHON_BASEVERSION}/site-packages/ansible/modules/$d/$d2
60 else
61 echo "[info]: whitlisting $d/$d2"
62 fi
63 fi
64 done
65 else
66 echo "[info]: whitlisting $d"
67 fi
68 else
69 echo "[info]: removing $d"
70 rm -rf ${D}/${libdir}/python${PYTHON_BASEVERSION}/site-packages/ansible/modules/$d
71 fi
72 fi
73 done
74}
75
76CLEANBROKEN = "1"
diff --git a/recipes-devtools/python/python-ansible_2.3.1.0.bb b/recipes-devtools/python/python-ansible_2.3.1.0.bb
new file mode 100644
index 0000000..b6659fc
--- /dev/null
+++ b/recipes-devtools/python/python-ansible_2.3.1.0.bb
@@ -0,0 +1,4 @@
1inherit setuptools
2require python-ansible.inc
3
4RDEPENDS_${PN} += "python-pyyaml python-jinja2 python-modules"
diff --git a/recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch b/recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch
new file mode 100644
index 0000000..e98eb46
--- /dev/null
+++ b/recipes-devtools/python/python3-ansible/python3-ensure-py-scripts-use-py3-for-shebang.patch
@@ -0,0 +1,1232 @@
1From 66b824da2fadfd5760040be244f89fa8320df55b Mon Sep 17 00:00:00 2001
2From: Mark Asselstine <mark.asselstine@windriver.com>
3Date: Thu, 13 Jul 2017 14:11:46 -0400
4Subject: [PATCH] python3: ensure py scripts use py3 for shebang
5
6Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
7---
8 bin/ansible | 2 +-
9 bin/ansible-connection | 2 +-
10 bin/ansible-console | 2 +-
11 bin/ansible-doc | 2 +-
12 bin/ansible-galaxy | 2 +-
13 bin/ansible-playbook | 2 +-
14 bin/ansible-pull | 2 +-
15 bin/ansible-vault | 2 +-
16 contrib/inventory/abiquo.py | 2 +-
17 contrib/inventory/apache-libcloud.py | 2 +-
18 contrib/inventory/apstra_aos.py | 2 +-
19 contrib/inventory/azure_rm.py | 2 +-
20 contrib/inventory/brook.py | 2 +-
21 contrib/inventory/cloudforms.py | 2 +-
22 contrib/inventory/cloudstack.py | 2 +-
23 contrib/inventory/cobbler.py | 2 +-
24 contrib/inventory/collins.py | 2 +-
25 contrib/inventory/consul_io.py | 2 +-
26 contrib/inventory/digital_ocean.py | 2 +-
27 contrib/inventory/docker.py | 2 +-
28 contrib/inventory/ec2.py | 2 +-
29 contrib/inventory/fleet.py | 2 +-
30 contrib/inventory/foreman.py | 2 +-
31 contrib/inventory/freeipa.py | 2 +-
32 contrib/inventory/gce.py | 2 +-
33 contrib/inventory/jail.py | 2 +-
34 contrib/inventory/landscape.py | 2 +-
35 contrib/inventory/libvirt_lxc.py | 2 +-
36 contrib/inventory/linode.py | 2 +-
37 contrib/inventory/lxc_inventory.py | 2 +-
38 contrib/inventory/mdt_dynamic_inventory.py | 2 +-
39 contrib/inventory/nagios_livestatus.py | 2 +-
40 contrib/inventory/nagios_ndo.py | 2 +-
41 contrib/inventory/nova.py | 2 +-
42 contrib/inventory/nsot.py | 2 +-
43 contrib/inventory/openshift.py | 2 +-
44 contrib/inventory/openstack.py | 2 +-
45 contrib/inventory/openvz.py | 2 +-
46 contrib/inventory/ovirt.py | 2 +-
47 contrib/inventory/ovirt4.py | 2 +-
48 contrib/inventory/packet_net.py | 2 +-
49 contrib/inventory/proxmox.py | 2 +-
50 contrib/inventory/rackhd.py | 2 +-
51 contrib/inventory/rax.py | 2 +-
52 contrib/inventory/rhv.py | 2 +-
53 contrib/inventory/rudder.py | 2 +-
54 contrib/inventory/serf.py | 2 +-
55 contrib/inventory/softlayer.py | 2 +-
56 contrib/inventory/spacewalk.py | 2 +-
57 contrib/inventory/ssh_config.py | 2 +-
58 contrib/inventory/stacki.py | 2 +-
59 contrib/inventory/vagrant.py | 2 +-
60 contrib/inventory/vbox.py | 2 +-
61 contrib/inventory/vmware.py | 2 +-
62 contrib/inventory/vmware_inventory.py | 2 +-
63 contrib/inventory/windows_azure.py | 2 +-
64 contrib/inventory/zabbix.py | 2 +-
65 contrib/inventory/zone.py | 2 +-
66 docs/docsite/rst/dev_guide/developing_api.rst | 2 +-
67 hacking/dump_playbook_attributes.py | 2 +-
68 hacking/module_formatter.py | 2 +-
69 lib/ansible/modules/web_infrastructure/django_manage.py | 2 +-
70 lib/ansible/modules/windows/win_file_version.py | 2 +-
71 lib/ansible/modules/windows/win_firewall_rule.py | 2 +-
72 test/compile/compile.py | 2 +-
73 test/integration/cleanup_rax.py | 2 +-
74 .../targets/embedded_module/library/test_integration_module | 2 +-
75 test/integration/targets/module_utils/module_utils/foo.py | 2 +-
76 test/integration/targets/module_utils/module_utils/sub/bam.py | 2 +-
77 test/integration/targets/module_utils/module_utils/sub/bam/bam.py | 2 +-
78 test/integration/targets/module_utils/module_utils/sub/bar/bam.py | 2 +-
79 test/integration/targets/module_utils/module_utils/sub/bar/bar.py | 2 +-
80 test/integration/targets/service/files/ansible_test_service | 2 +-
81 test/runner/ansible-test | 2 +-
82 test/runner/injector/ansible | 2 +-
83 test/runner/injector/ansible-console | 2 +-
84 test/runner/injector/ansible-doc | 2 +-
85 test/runner/injector/ansible-galaxy | 2 +-
86 test/runner/injector/ansible-playbook | 2 +-
87 test/runner/injector/ansible-pull | 2 +-
88 test/runner/injector/ansible-vault | 2 +-
89 test/runner/injector/cover | 2 +-
90 test/runner/injector/cover2 | 2 +-
91 test/runner/injector/cover2.4 | 2 +-
92 test/runner/injector/cover2.6 | 2 +-
93 test/runner/injector/cover2.7 | 2 +-
94 test/runner/injector/cover3 | 2 +-
95 test/runner/injector/cover3.5 | 2 +-
96 test/runner/injector/cover3.6 | 2 +-
97 test/runner/injector/injector.py | 2 +-
98 test/runner/injector/pytest | 2 +-
99 test/runner/injector/runner | 2 +-
100 test/runner/injector/runner2 | 2 +-
101 test/runner/injector/runner2.4 | 2 +-
102 test/runner/injector/runner2.6 | 2 +-
103 test/runner/injector/runner2.7 | 2 +-
104 test/runner/injector/runner3 | 2 +-
105 test/runner/injector/runner3.5 | 2 +-
106 test/runner/injector/runner3.6 | 2 +-
107 test/runner/retry.py | 2 +-
108 test/runner/test.py | 2 +-
109 test/sanity/code-smell/ansible-var-precedence-check.py | 2 +-
110 test/sanity/code-smell/integration-aliases.py | 2 +-
111 test/sanity/code-smell/shebang.sh | 4 ++--
112 test/sanity/validate-modules/test_validate_modules_regex.py | 2 +-
113 test/sanity/validate-modules/validate-modules | 2 +-
114 test/units/executor/module_common/test_module_common.py | 4 ++--
115 test/units/modules/network/nxos/test_nxos_config.py | 2 +-
116 test/utils/shippable/ansible-core-ci | 2 +-
117 test/utils/shippable/download.py | 2 +-
118 121 files changed, 123 insertions(+), 123 deletions(-)
119
120diff --git a/bin/ansible b/bin/ansible
121index 24550b9..0587499 100755
122--- a/bin/ansible
123+++ b/bin/ansible
124@@ -1,4 +1,4 @@
125-#!/usr/bin/env python
126+#!/usr/bin/env python3
127
128 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
129 #
130diff --git a/bin/ansible-connection b/bin/ansible-connection
131index 93d787e..f0b9aa3 100755
132--- a/bin/ansible-connection
133+++ b/bin/ansible-connection
134@@ -1,4 +1,4 @@
135-#!/usr/bin/env python
136+#!/usr/bin/env python3
137
138 # (c) 2016, Ansible, Inc. <support@ansible.com>
139 #
140diff --git a/bin/ansible-console b/bin/ansible-console
141index 24550b9..0587499 100755
142--- a/bin/ansible-console
143+++ b/bin/ansible-console
144@@ -1,4 +1,4 @@
145-#!/usr/bin/env python
146+#!/usr/bin/env python3
147
148 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
149 #
150diff --git a/bin/ansible-doc b/bin/ansible-doc
151index 24550b9..0587499 100755
152--- a/bin/ansible-doc
153+++ b/bin/ansible-doc
154@@ -1,4 +1,4 @@
155-#!/usr/bin/env python
156+#!/usr/bin/env python3
157
158 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
159 #
160diff --git a/bin/ansible-galaxy b/bin/ansible-galaxy
161index 24550b9..0587499 100755
162--- a/bin/ansible-galaxy
163+++ b/bin/ansible-galaxy
164@@ -1,4 +1,4 @@
165-#!/usr/bin/env python
166+#!/usr/bin/env python3
167
168 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
169 #
170diff --git a/bin/ansible-playbook b/bin/ansible-playbook
171index 24550b9..0587499 100755
172--- a/bin/ansible-playbook
173+++ b/bin/ansible-playbook
174@@ -1,4 +1,4 @@
175-#!/usr/bin/env python
176+#!/usr/bin/env python3
177
178 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
179 #
180diff --git a/bin/ansible-pull b/bin/ansible-pull
181index 24550b9..0587499 100755
182--- a/bin/ansible-pull
183+++ b/bin/ansible-pull
184@@ -1,4 +1,4 @@
185-#!/usr/bin/env python
186+#!/usr/bin/env python3
187
188 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
189 #
190diff --git a/bin/ansible-vault b/bin/ansible-vault
191index 24550b9..0587499 100755
192--- a/bin/ansible-vault
193+++ b/bin/ansible-vault
194@@ -1,4 +1,4 @@
195-#!/usr/bin/env python
196+#!/usr/bin/env python3
197
198 # (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>
199 #
200diff --git a/contrib/inventory/abiquo.py b/contrib/inventory/abiquo.py
201index 405bbbb..d318949 100755
202--- a/contrib/inventory/abiquo.py
203+++ b/contrib/inventory/abiquo.py
204@@ -1,4 +1,4 @@
205-#!/usr/bin/env python
206+#!/usr/bin/env python3
207 # -*- coding: utf-8 -*-
208
209 '''
210diff --git a/contrib/inventory/apache-libcloud.py b/contrib/inventory/apache-libcloud.py
211index 0120d2b..ce92843 100755
212--- a/contrib/inventory/apache-libcloud.py
213+++ b/contrib/inventory/apache-libcloud.py
214@@ -1,4 +1,4 @@
215-#!/usr/bin/env python
216+#!/usr/bin/env python3
217
218 # (c) 2013, Sebastien Goasguen <runseb@gmail.com>
219 #
220diff --git a/contrib/inventory/apstra_aos.py b/contrib/inventory/apstra_aos.py
221index 65838c0..48d293e 100755
222--- a/contrib/inventory/apstra_aos.py
223+++ b/contrib/inventory/apstra_aos.py
224@@ -1,4 +1,4 @@
225-#!/usr/bin/env python
226+#!/usr/bin/env python3
227 #
228 # (c) 2017 Apstra Inc, <community@apstra.com>
229 #
230diff --git a/contrib/inventory/azure_rm.py b/contrib/inventory/azure_rm.py
231index 73b8b95..87b31b0 100755
232--- a/contrib/inventory/azure_rm.py
233+++ b/contrib/inventory/azure_rm.py
234@@ -1,4 +1,4 @@
235-#!/usr/bin/env python
236+#!/usr/bin/env python3
237 #
238 # Copyright (c) 2016 Matt Davis, <mdavis@ansible.com>
239 # Chris Houseknecht, <house@redhat.com>
240diff --git a/contrib/inventory/brook.py b/contrib/inventory/brook.py
241index a7d4741..e4de982 100755
242--- a/contrib/inventory/brook.py
243+++ b/contrib/inventory/brook.py
244@@ -1,4 +1,4 @@
245-#!/usr/bin/env python
246+#!/usr/bin/env python3
247 # Copyright 2016 Doalitic.
248 #
249 # This file is part of Ansible
250diff --git a/contrib/inventory/cloudforms.py b/contrib/inventory/cloudforms.py
251index 69c149b..202a6c9 100755
252--- a/contrib/inventory/cloudforms.py
253+++ b/contrib/inventory/cloudforms.py
254@@ -1,4 +1,4 @@
255-#!/usr/bin/env python
256+#!/usr/bin/env python3
257 # vim: set fileencoding=utf-8 :
258 #
259 # Copyright (C) 2016 Guido Günther <agx@sigxcpu.org>
260diff --git a/contrib/inventory/cloudstack.py b/contrib/inventory/cloudstack.py
261index a9b6b9f..d7f05ff 100755
262--- a/contrib/inventory/cloudstack.py
263+++ b/contrib/inventory/cloudstack.py
264@@ -1,4 +1,4 @@
265-#!/usr/bin/env python
266+#!/usr/bin/env python3
267 # -*- coding: utf-8 -*-
268 #
269 # (c) 2015, René Moser <mail@renemoser.net>
270diff --git a/contrib/inventory/cobbler.py b/contrib/inventory/cobbler.py
271index 89f9bf7..f2a9ff7 100755
272--- a/contrib/inventory/cobbler.py
273+++ b/contrib/inventory/cobbler.py
274@@ -1,4 +1,4 @@
275-#!/usr/bin/env python
276+#!/usr/bin/env python3
277
278 """
279 Cobbler external inventory script
280diff --git a/contrib/inventory/collins.py b/contrib/inventory/collins.py
281index b7193e2..f0bc2a1 100755
282--- a/contrib/inventory/collins.py
283+++ b/contrib/inventory/collins.py
284@@ -1,4 +1,4 @@
285-#!/usr/bin/env python
286+#!/usr/bin/env python3
287
288 """
289 Collins external inventory script
290diff --git a/contrib/inventory/consul_io.py b/contrib/inventory/consul_io.py
291index 8106097..2cdc523 100755
292--- a/contrib/inventory/consul_io.py
293+++ b/contrib/inventory/consul_io.py
294@@ -1,4 +1,4 @@
295-#!/usr/bin/env python
296+#!/usr/bin/env python3
297
298 #
299 # (c) 2015, Steve Gargan <steve.gargan@gmail.com>
300diff --git a/contrib/inventory/digital_ocean.py b/contrib/inventory/digital_ocean.py
301index 07c124b..0b0e587 100755
302--- a/contrib/inventory/digital_ocean.py
303+++ b/contrib/inventory/digital_ocean.py
304@@ -1,4 +1,4 @@
305-#!/usr/bin/env python
306+#!/usr/bin/env python3
307
308 '''
309 DigitalOcean external inventory script
310diff --git a/contrib/inventory/docker.py b/contrib/inventory/docker.py
311index da051dd..9b88d0c 100755
312--- a/contrib/inventory/docker.py
313+++ b/contrib/inventory/docker.py
314@@ -1,4 +1,4 @@
315-#!/usr/bin/env python
316+#!/usr/bin/env python3
317 #
318 # (c) 2016 Paul Durivage <paul.durivage@gmail.com>
319 # Chris Houseknecht <house@redhat.com>
320diff --git a/contrib/inventory/ec2.py b/contrib/inventory/ec2.py
321index 03b9820..9c9b2e4 100755
322--- a/contrib/inventory/ec2.py
323+++ b/contrib/inventory/ec2.py
324@@ -1,4 +1,4 @@
325-#!/usr/bin/env python
326+#!/usr/bin/env python3
327
328 '''
329 EC2 external inventory script
330diff --git a/contrib/inventory/fleet.py b/contrib/inventory/fleet.py
331index 4db4ea1..8790f2b 100755
332--- a/contrib/inventory/fleet.py
333+++ b/contrib/inventory/fleet.py
334@@ -1,4 +1,4 @@
335-#!/usr/bin/env python
336+#!/usr/bin/env python3
337 """
338 fleetctl base external inventory script. Automatically finds the IPs of the booted coreos instances and
339 returns it under the host group 'coreos'
340diff --git a/contrib/inventory/foreman.py b/contrib/inventory/foreman.py
341index 9a87397..2483cce 100755
342--- a/contrib/inventory/foreman.py
343+++ b/contrib/inventory/foreman.py
344@@ -1,4 +1,4 @@
345-#!/usr/bin/env python
346+#!/usr/bin/env python3
347 # vim: set fileencoding=utf-8 :
348 #
349 # Copyright (C) 2016 Guido Günther <agx@sigxcpu.org>,
350diff --git a/contrib/inventory/freeipa.py b/contrib/inventory/freeipa.py
351index a72b774..1f092b2 100755
352--- a/contrib/inventory/freeipa.py
353+++ b/contrib/inventory/freeipa.py
354@@ -1,4 +1,4 @@
355-#!/usr/bin/env python
356+#!/usr/bin/env python3
357
358 import argparse
359 from ipalib import api
360diff --git a/contrib/inventory/gce.py b/contrib/inventory/gce.py
361index 5c58146..7616843 100755
362--- a/contrib/inventory/gce.py
363+++ b/contrib/inventory/gce.py
364@@ -1,4 +1,4 @@
365-#!/usr/bin/env python
366+#!/usr/bin/env python3
367 # Copyright 2013 Google Inc.
368 #
369 # This file is part of Ansible
370diff --git a/contrib/inventory/jail.py b/contrib/inventory/jail.py
371index 98b6acf..b12289c 100755
372--- a/contrib/inventory/jail.py
373+++ b/contrib/inventory/jail.py
374@@ -1,4 +1,4 @@
375-#!/usr/bin/env python
376+#!/usr/bin/env python3
377
378 # (c) 2013, Michael Scherer <misc@zarb.org>
379 #
380diff --git a/contrib/inventory/landscape.py b/contrib/inventory/landscape.py
381index 4b53171..7f52639 100755
382--- a/contrib/inventory/landscape.py
383+++ b/contrib/inventory/landscape.py
384@@ -1,4 +1,4 @@
385-#!/usr/bin/env python
386+#!/usr/bin/env python3
387
388 # (c) 2015, Marc Abramowitz <marca@surveymonkey.com>
389 #
390diff --git a/contrib/inventory/libvirt_lxc.py b/contrib/inventory/libvirt_lxc.py
391index 35ccf40..ba3496d 100755
392--- a/contrib/inventory/libvirt_lxc.py
393+++ b/contrib/inventory/libvirt_lxc.py
394@@ -1,4 +1,4 @@
395-#!/usr/bin/env python
396+#!/usr/bin/env python3
397
398 # (c) 2013, Michael Scherer <misc@zarb.org>
399 #
400diff --git a/contrib/inventory/linode.py b/contrib/inventory/linode.py
401index 6fd922f..cab7a70 100755
402--- a/contrib/inventory/linode.py
403+++ b/contrib/inventory/linode.py
404@@ -1,4 +1,4 @@
405-#!/usr/bin/env python
406+#!/usr/bin/env python3
407
408 '''
409 Linode external inventory script
410diff --git a/contrib/inventory/lxc_inventory.py b/contrib/inventory/lxc_inventory.py
411index d82bb61..f7ac67c 100755
412--- a/contrib/inventory/lxc_inventory.py
413+++ b/contrib/inventory/lxc_inventory.py
414@@ -1,4 +1,4 @@
415-#!/usr/bin/env python
416+#!/usr/bin/env python3
417 #
418 # (c) 2015-16 Florian Haas, hastexo Professional Services GmbH
419 # <florian@hastexo.com>
420diff --git a/contrib/inventory/mdt_dynamic_inventory.py b/contrib/inventory/mdt_dynamic_inventory.py
421index 89ecc3e..5540a41 100755
422--- a/contrib/inventory/mdt_dynamic_inventory.py
423+++ b/contrib/inventory/mdt_dynamic_inventory.py
424@@ -1,4 +1,4 @@
425-#!/usr/bin/env python
426+#!/usr/bin/env python3
427
428 # (c) 2016, Julian Barnett <jbarnett@tableau.com>
429 #
430diff --git a/contrib/inventory/nagios_livestatus.py b/contrib/inventory/nagios_livestatus.py
431index e1c145e..3e250cb 100755
432--- a/contrib/inventory/nagios_livestatus.py
433+++ b/contrib/inventory/nagios_livestatus.py
434@@ -1,4 +1,4 @@
435-#!/usr/bin/env python
436+#!/usr/bin/env python3
437
438 # (c) 2015, Yannig Perre <yannig.perre@gmail.com>
439 #
440diff --git a/contrib/inventory/nagios_ndo.py b/contrib/inventory/nagios_ndo.py
441index 49ec563..cc10a51 100755
442--- a/contrib/inventory/nagios_ndo.py
443+++ b/contrib/inventory/nagios_ndo.py
444@@ -1,4 +1,4 @@
445-#!/usr/bin/env python
446+#!/usr/bin/env python3
447
448 # (c) 2014, Jonathan Lestrelin <jonathan.lestrelin@gmail.com>
449 #
450diff --git a/contrib/inventory/nova.py b/contrib/inventory/nova.py
451index f8c1617..d0ad7f0 100755
452--- a/contrib/inventory/nova.py
453+++ b/contrib/inventory/nova.py
454@@ -1,4 +1,4 @@
455-#!/usr/bin/env python
456+#!/usr/bin/env python3
457
458 # (c) 2012, Marco Vito Moscaritolo <marco@agavee.com>
459 #
460diff --git a/contrib/inventory/nsot.py b/contrib/inventory/nsot.py
461index 62be85a..0a8dc9b 100755
462--- a/contrib/inventory/nsot.py
463+++ b/contrib/inventory/nsot.py
464@@ -1,4 +1,4 @@
465-#!/usr/bin/env python
466+#!/usr/bin/env python3
467
468 '''
469 nsot
470diff --git a/contrib/inventory/openshift.py b/contrib/inventory/openshift.py
471index 479b808..dc398b5 100755
472--- a/contrib/inventory/openshift.py
473+++ b/contrib/inventory/openshift.py
474@@ -1,4 +1,4 @@
475-#!/usr/bin/env python
476+#!/usr/bin/env python3
477
478 # (c) 2013, Michael Scherer <misc@zarb.org>
479 #
480diff --git a/contrib/inventory/openstack.py b/contrib/inventory/openstack.py
481index 6679a2c..eb38742 100755
482--- a/contrib/inventory/openstack.py
483+++ b/contrib/inventory/openstack.py
484@@ -1,4 +1,4 @@
485-#!/usr/bin/env python
486+#!/usr/bin/env python3
487
488 # Copyright (c) 2012, Marco Vito Moscaritolo <marco@agavee.com>
489 # Copyright (c) 2013, Jesse Keating <jesse.keating@rackspace.com>
490diff --git a/contrib/inventory/openvz.py b/contrib/inventory/openvz.py
491index 1ef8ab1..d4dfcde 100755
492--- a/contrib/inventory/openvz.py
493+++ b/contrib/inventory/openvz.py
494@@ -1,4 +1,4 @@
495-#!/usr/bin/env python
496+#!/usr/bin/env python3
497 # -*- coding: utf-8 -*-
498 #
499 # openvz.py
500diff --git a/contrib/inventory/ovirt.py b/contrib/inventory/ovirt.py
501index 7f505d9..ada01fa 100755
502--- a/contrib/inventory/ovirt.py
503+++ b/contrib/inventory/ovirt.py
504@@ -1,4 +1,4 @@
505-#!/usr/bin/env python
506+#!/usr/bin/env python3
507 # Copyright 2015 IIX Inc.
508 #
509 # This file is part of Ansible
510diff --git a/contrib/inventory/ovirt4.py b/contrib/inventory/ovirt4.py
511index 5ee5986..9d9e940 100755
512--- a/contrib/inventory/ovirt4.py
513+++ b/contrib/inventory/ovirt4.py
514@@ -1,4 +1,4 @@
515-#!/usr/bin/env python
516+#!/usr/bin/env python3
517 # -*- coding: utf-8 -*-
518 #
519 # Copyright (c) 2016 Red Hat, Inc.
520diff --git a/contrib/inventory/packet_net.py b/contrib/inventory/packet_net.py
521index c40c821..d23eba1 100755
522--- a/contrib/inventory/packet_net.py
523+++ b/contrib/inventory/packet_net.py
524@@ -1,4 +1,4 @@
525-#!/usr/bin/env python
526+#!/usr/bin/env python3
527
528 '''
529 Packet.net external inventory script
530diff --git a/contrib/inventory/proxmox.py b/contrib/inventory/proxmox.py
531index c0ffb0b..ef7a394 100755
532--- a/contrib/inventory/proxmox.py
533+++ b/contrib/inventory/proxmox.py
534@@ -1,4 +1,4 @@
535-#!/usr/bin/env python
536+#!/usr/bin/env python3
537
538 # Copyright (C) 2014 Mathieu GAUTHIER-LAFAYE <gauthierl@lapth.cnrs.fr>
539 #
540diff --git a/contrib/inventory/rackhd.py b/contrib/inventory/rackhd.py
541index a89cb04..05b3ada 100755
542--- a/contrib/inventory/rackhd.py
543+++ b/contrib/inventory/rackhd.py
544@@ -1,4 +1,4 @@
545-#!/usr/bin/env python
546+#!/usr/bin/env python3
547
548 import json
549 import requests
550diff --git a/contrib/inventory/rax.py b/contrib/inventory/rax.py
551index d20a8ab..6c34753 100755
552--- a/contrib/inventory/rax.py
553+++ b/contrib/inventory/rax.py
554@@ -1,4 +1,4 @@
555-#!/usr/bin/env python
556+#!/usr/bin/env python3
557
558 # (c) 2013, Jesse Keating <jesse.keating@rackspace.com,
559 # Paul Durivage <paul.durivage@rackspace.com>,
560diff --git a/contrib/inventory/rhv.py b/contrib/inventory/rhv.py
561index 5ee5986..9d9e940 100755
562--- a/contrib/inventory/rhv.py
563+++ b/contrib/inventory/rhv.py
564@@ -1,4 +1,4 @@
565-#!/usr/bin/env python
566+#!/usr/bin/env python3
567 # -*- coding: utf-8 -*-
568 #
569 # Copyright (c) 2016 Red Hat, Inc.
570diff --git a/contrib/inventory/rudder.py b/contrib/inventory/rudder.py
571index 5cf16c9..a669c37 100755
572--- a/contrib/inventory/rudder.py
573+++ b/contrib/inventory/rudder.py
574@@ -1,4 +1,4 @@
575-#!/usr/bin/env python
576+#!/usr/bin/env python3
577
578 # Copyright (c) 2015, Normation SAS
579 #
580diff --git a/contrib/inventory/serf.py b/contrib/inventory/serf.py
581index e1340da..6242eda 100755
582--- a/contrib/inventory/serf.py
583+++ b/contrib/inventory/serf.py
584@@ -1,4 +1,4 @@
585-#!/usr/bin/env python
586+#!/usr/bin/env python3
587
588 # (c) 2015, Marc Abramowitz <marca@surveymonkey.com>
589 #
590diff --git a/contrib/inventory/softlayer.py b/contrib/inventory/softlayer.py
591index 3933eb4..519092f 100755
592--- a/contrib/inventory/softlayer.py
593+++ b/contrib/inventory/softlayer.py
594@@ -1,4 +1,4 @@
595-#!/usr/bin/env python
596+#!/usr/bin/env python3
597 """
598 SoftLayer external inventory script.
599
600diff --git a/contrib/inventory/spacewalk.py b/contrib/inventory/spacewalk.py
601index 2735a81..2da2720 100755
602--- a/contrib/inventory/spacewalk.py
603+++ b/contrib/inventory/spacewalk.py
604@@ -1,4 +1,4 @@
605-#!/usr/bin/env python
606+#!/usr/bin/env python3
607
608 """
609 Spacewalk external inventory script
610diff --git a/contrib/inventory/ssh_config.py b/contrib/inventory/ssh_config.py
611index ae41e58..05373ec 100755
612--- a/contrib/inventory/ssh_config.py
613+++ b/contrib/inventory/ssh_config.py
614@@ -1,4 +1,4 @@
615-#!/usr/bin/env python
616+#!/usr/bin/env python3
617
618 # (c) 2014, Tomas Karasek <tomas.karasek@digile.fi>
619 #
620diff --git a/contrib/inventory/stacki.py b/contrib/inventory/stacki.py
621index fd4cda5..d6acda3 100755
622--- a/contrib/inventory/stacki.py
623+++ b/contrib/inventory/stacki.py
624@@ -1,4 +1,4 @@
625-#!/usr/bin/env python
626+#!/usr/bin/env python3
627
628 # Copyright (c) 2016, Hugh Ma <hugh.ma@flextronics.com>
629 #
630diff --git a/contrib/inventory/vagrant.py b/contrib/inventory/vagrant.py
631index 37a6741..86fc67d 100755
632--- a/contrib/inventory/vagrant.py
633+++ b/contrib/inventory/vagrant.py
634@@ -1,4 +1,4 @@
635-#!/usr/bin/env python
636+#!/usr/bin/env python3
637 """
638 Vagrant external inventory script. Automatically finds the IP of the booted vagrant vm(s), and
639 returns it under the host group 'vagrant'
640diff --git a/contrib/inventory/vbox.py b/contrib/inventory/vbox.py
641index 8905fab..141b01a 100755
642--- a/contrib/inventory/vbox.py
643+++ b/contrib/inventory/vbox.py
644@@ -1,4 +1,4 @@
645-#!/usr/bin/env python
646+#!/usr/bin/env python3
647
648 # This file is part of Ansible,
649 #
650diff --git a/contrib/inventory/vmware.py b/contrib/inventory/vmware.py
651index 377c7cb..cee232a 100755
652--- a/contrib/inventory/vmware.py
653+++ b/contrib/inventory/vmware.py
654@@ -1,4 +1,4 @@
655-#!/usr/bin/env python
656+#!/usr/bin/env python3
657 # -*- coding: utf-8 -*-
658 '''
659 VMware Inventory Script
660diff --git a/contrib/inventory/vmware_inventory.py b/contrib/inventory/vmware_inventory.py
661index 58ee473..4300fe5 100755
662--- a/contrib/inventory/vmware_inventory.py
663+++ b/contrib/inventory/vmware_inventory.py
664@@ -1,4 +1,4 @@
665-#!/usr/bin/env python
666+#!/usr/bin/env python3
667
668 # Requirements
669 # - pyvmomi >= 6.0.0.2016.4
670diff --git a/contrib/inventory/windows_azure.py b/contrib/inventory/windows_azure.py
671index cceed36..f8777be 100755
672--- a/contrib/inventory/windows_azure.py
673+++ b/contrib/inventory/windows_azure.py
674@@ -1,4 +1,4 @@
675-#!/usr/bin/env python
676+#!/usr/bin/env python3
677
678 '''
679 Windows Azure external inventory script
680diff --git a/contrib/inventory/zabbix.py b/contrib/inventory/zabbix.py
681index f6b37b9..241823b 100755
682--- a/contrib/inventory/zabbix.py
683+++ b/contrib/inventory/zabbix.py
684@@ -1,4 +1,4 @@
685-#!/usr/bin/env python
686+#!/usr/bin/env python3
687
688 # (c) 2013, Greg Buehler
689 #
690diff --git a/contrib/inventory/zone.py b/contrib/inventory/zone.py
691index 893953e..b049fd7 100755
692--- a/contrib/inventory/zone.py
693+++ b/contrib/inventory/zone.py
694@@ -1,4 +1,4 @@
695-#!/usr/bin/env python
696+#!/usr/bin/env python3
697
698 # (c) 2015, Dagobert Michelsen <dam@baltic-online.de>
699 #
700diff --git a/docs/docsite/rst/dev_guide/developing_api.rst b/docs/docsite/rst/dev_guide/developing_api.rst
701index bb2cbc4..55d4212 100644
702--- a/docs/docsite/rst/dev_guide/developing_api.rst
703+++ b/docs/docsite/rst/dev_guide/developing_api.rst
704@@ -37,7 +37,7 @@ Python API 2.0
705 In 2.0 things get a bit more complicated to start, but you end up with much more discrete and readable classes::
706
707
708- #!/usr/bin/env python
709+ #!/usr/bin/env python3
710
711 import json
712 from collections import namedtuple
713diff --git a/hacking/dump_playbook_attributes.py b/hacking/dump_playbook_attributes.py
714index 204fe3f..9d86b66 100755
715--- a/hacking/dump_playbook_attributes.py
716+++ b/hacking/dump_playbook_attributes.py
717@@ -1,4 +1,4 @@
718-#!/usr/bin/env python
719+#!/usr/bin/env python3
720
721 import optparse
722 from jinja2 import Environment, FileSystemLoader
723diff --git a/hacking/module_formatter.py b/hacking/module_formatter.py
724index 4f132aa..1bee33a 100755
725--- a/hacking/module_formatter.py
726+++ b/hacking/module_formatter.py
727@@ -1,4 +1,4 @@
728-#!/usr/bin/env python
729+#!/usr/bin/env python3
730 # (c) 2012, Jan-Piet Mens <jpmens () gmail.com>
731 # (c) 2012-2014, Michael DeHaan <michael@ansible.com> and others
732 #
733diff --git a/lib/ansible/modules/web_infrastructure/django_manage.py b/lib/ansible/modules/web_infrastructure/django_manage.py
734index ac24829..90aee1b 100644
735--- a/lib/ansible/modules/web_infrastructure/django_manage.py
736+++ b/lib/ansible/modules/web_infrastructure/django_manage.py
737@@ -97,7 +97,7 @@ notes:
738 - This module assumes English error messages for the 'createcachetable' command to detect table existence, unfortunately.
739 - To be able to use the migrate command with django versions < 1.7, you must have south installed and added as an app in your settings.
740 - To be able to use the collectstatic command, you must have enabled staticfiles in your settings.
741- - As of ansible 2.x, your I(manage.py) application must be executable (rwxr-xr-x), and must have a valid I(shebang), i.e. "#!/usr/bin/env python", for invoking the appropriate Python interpreter.
742+ - As of ansible 2.x, your I(manage.py) application must be executable (rwxr-xr-x), and must have a valid I(shebang), i.e. "#!/usr/bin/env python3", for invoking the appropriate Python interpreter.
743 requirements: [ "virtualenv", "django" ]
744 author: "Scott Anderson (@tastychutney)"
745 '''
746diff --git a/lib/ansible/modules/windows/win_file_version.py b/lib/ansible/modules/windows/win_file_version.py
747index 399c978..1225a06 100644
748--- a/lib/ansible/modules/windows/win_file_version.py
749+++ b/lib/ansible/modules/windows/win_file_version.py
750@@ -1,4 +1,4 @@
751-#!/usr/bin/env python
752+#!/usr/bin/env python3
753 # -*- coding: utf-8 -*-
754
755 # Get DLL or EXE build version
756diff --git a/lib/ansible/modules/windows/win_firewall_rule.py b/lib/ansible/modules/windows/win_firewall_rule.py
757index e4ab1e4..456523d 100644
758--- a/lib/ansible/modules/windows/win_firewall_rule.py
759+++ b/lib/ansible/modules/windows/win_firewall_rule.py
760@@ -1,4 +1,4 @@
761-#!/usr/bin/env python
762+#!/usr/bin/env python3
763
764 # (c) 2014, Timothy Vandenbrande <timothy.vandenbrande@gmail.com>
765 #
766diff --git a/test/compile/compile.py b/test/compile/compile.py
767index 01144c6..6e332a9 100755
768--- a/test/compile/compile.py
769+++ b/test/compile/compile.py
770@@ -1,4 +1,4 @@
771-#!/usr/bin/env python
772+#!/usr/bin/env python3
773 """Python syntax checker with lint friendly output."""
774
775 import os
776diff --git a/test/integration/cleanup_rax.py b/test/integration/cleanup_rax.py
777index 5c757f5..bc3448b 100755
778--- a/test/integration/cleanup_rax.py
779+++ b/test/integration/cleanup_rax.py
780@@ -1,4 +1,4 @@
781-#!/usr/bin/env python
782+#!/usr/bin/env python3
783
784 import os
785 import re
786diff --git a/test/integration/targets/embedded_module/library/test_integration_module b/test/integration/targets/embedded_module/library/test_integration_module
787index f564619..0d46d15 100644
788--- a/test/integration/targets/embedded_module/library/test_integration_module
789+++ b/test/integration/targets/embedded_module/library/test_integration_module
790@@ -1,3 +1,3 @@
791-#!/usr/bin/env python
792+#!/usr/bin/env python3
793
794 print('{"changed":false, "msg":"this is the embedded module"}')
795diff --git a/test/integration/targets/module_utils/module_utils/foo.py b/test/integration/targets/module_utils/module_utils/foo.py
796index 20698f1..0cd5c85 100644
797--- a/test/integration/targets/module_utils/module_utils/foo.py
798+++ b/test/integration/targets/module_utils/module_utils/foo.py
799@@ -1,3 +1,3 @@
800-#!/usr/bin/env python
801+#!/usr/bin/env python3
802
803 foo = "FOO FROM foo.py"
804diff --git a/test/integration/targets/module_utils/module_utils/sub/bam.py b/test/integration/targets/module_utils/module_utils/sub/bam.py
805index 566f8b7..0814485 100644
806--- a/test/integration/targets/module_utils/module_utils/sub/bam.py
807+++ b/test/integration/targets/module_utils/module_utils/sub/bam.py
808@@ -1,3 +1,3 @@
809-#!/usr/bin/env python
810+#!/usr/bin/env python3
811
812 bam = "BAM FROM sub/bam.py"
813diff --git a/test/integration/targets/module_utils/module_utils/sub/bam/bam.py b/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
814index b7ed707..97f9eed 100644
815--- a/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
816+++ b/test/integration/targets/module_utils/module_utils/sub/bam/bam.py
817@@ -1,3 +1,3 @@
818-#!/usr/bin/env python
819+#!/usr/bin/env python3
820
821 bam = "BAM FROM sub/bam/bam.py"
822diff --git a/test/integration/targets/module_utils/module_utils/sub/bar/bam.py b/test/integration/targets/module_utils/module_utils/sub/bar/bam.py
823index 02fafd4..3a93360 100644
824--- a/test/integration/targets/module_utils/module_utils/sub/bar/bam.py
825+++ b/test/integration/targets/module_utils/module_utils/sub/bar/bam.py
826@@ -1,3 +1,3 @@
827-#!/usr/bin/env python
828+#!/usr/bin/env python3
829
830 bam = "BAM FROM sub/bar/bam.py"
831diff --git a/test/integration/targets/module_utils/module_utils/sub/bar/bar.py b/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
832index 8566901..40f0c94 100644
833--- a/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
834+++ b/test/integration/targets/module_utils/module_utils/sub/bar/bar.py
835@@ -1,3 +1,3 @@
836-#!/usr/bin/env python
837+#!/usr/bin/env python3
838
839 bar = "BAR FROM sub/bar/bar.py"
840diff --git a/test/integration/targets/service/files/ansible_test_service b/test/integration/targets/service/files/ansible_test_service
841index 682edeb..e858909 100755
842--- a/test/integration/targets/service/files/ansible_test_service
843+++ b/test/integration/targets/service/files/ansible_test_service
844@@ -1,4 +1,4 @@
845-#!/usr/bin/env python
846+#!/usr/bin/env python3
847
848 # this is mostly based off of the code found here:
849 # http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
850diff --git a/test/runner/ansible-test b/test/runner/ansible-test
851index 801f07f..804aa8f 100755
852--- a/test/runner/ansible-test
853+++ b/test/runner/ansible-test
854@@ -1,4 +1,4 @@
855-#!/usr/bin/env python
856+#!/usr/bin/env python3
857 # PYTHON_ARGCOMPLETE_OK
858 """Test runner for all Ansible tests."""
859
860diff --git a/test/runner/injector/ansible b/test/runner/injector/ansible
861index 57241c9..c463946 100755
862--- a/test/runner/injector/ansible
863+++ b/test/runner/injector/ansible
864@@ -1,4 +1,4 @@
865-#!/usr/bin/env python
866+#!/usr/bin/env python3
867 """Code coverage wrapper."""
868
869 from __future__ import absolute_import, print_function
870diff --git a/test/runner/injector/ansible-console b/test/runner/injector/ansible-console
871index 57241c9..c463946 100755
872--- a/test/runner/injector/ansible-console
873+++ b/test/runner/injector/ansible-console
874@@ -1,4 +1,4 @@
875-#!/usr/bin/env python
876+#!/usr/bin/env python3
877 """Code coverage wrapper."""
878
879 from __future__ import absolute_import, print_function
880diff --git a/test/runner/injector/ansible-doc b/test/runner/injector/ansible-doc
881index 57241c9..c463946 100755
882--- a/test/runner/injector/ansible-doc
883+++ b/test/runner/injector/ansible-doc
884@@ -1,4 +1,4 @@
885-#!/usr/bin/env python
886+#!/usr/bin/env python3
887 """Code coverage wrapper."""
888
889 from __future__ import absolute_import, print_function
890diff --git a/test/runner/injector/ansible-galaxy b/test/runner/injector/ansible-galaxy
891index 57241c9..c463946 100755
892--- a/test/runner/injector/ansible-galaxy
893+++ b/test/runner/injector/ansible-galaxy
894@@ -1,4 +1,4 @@
895-#!/usr/bin/env python
896+#!/usr/bin/env python3
897 """Code coverage wrapper."""
898
899 from __future__ import absolute_import, print_function
900diff --git a/test/runner/injector/ansible-playbook b/test/runner/injector/ansible-playbook
901index 57241c9..c463946 100755
902--- a/test/runner/injector/ansible-playbook
903+++ b/test/runner/injector/ansible-playbook
904@@ -1,4 +1,4 @@
905-#!/usr/bin/env python
906+#!/usr/bin/env python3
907 """Code coverage wrapper."""
908
909 from __future__ import absolute_import, print_function
910diff --git a/test/runner/injector/ansible-pull b/test/runner/injector/ansible-pull
911index 57241c9..c463946 100755
912--- a/test/runner/injector/ansible-pull
913+++ b/test/runner/injector/ansible-pull
914@@ -1,4 +1,4 @@
915-#!/usr/bin/env python
916+#!/usr/bin/env python3
917 """Code coverage wrapper."""
918
919 from __future__ import absolute_import, print_function
920diff --git a/test/runner/injector/ansible-vault b/test/runner/injector/ansible-vault
921index 57241c9..c463946 100755
922--- a/test/runner/injector/ansible-vault
923+++ b/test/runner/injector/ansible-vault
924@@ -1,4 +1,4 @@
925-#!/usr/bin/env python
926+#!/usr/bin/env python3
927 """Code coverage wrapper."""
928
929 from __future__ import absolute_import, print_function
930diff --git a/test/runner/injector/cover b/test/runner/injector/cover
931index 57241c9..c463946 100755
932--- a/test/runner/injector/cover
933+++ b/test/runner/injector/cover
934@@ -1,4 +1,4 @@
935-#!/usr/bin/env python
936+#!/usr/bin/env python3
937 """Code coverage wrapper."""
938
939 from __future__ import absolute_import, print_function
940diff --git a/test/runner/injector/cover2 b/test/runner/injector/cover2
941index 57241c9..c463946 100755
942--- a/test/runner/injector/cover2
943+++ b/test/runner/injector/cover2
944@@ -1,4 +1,4 @@
945-#!/usr/bin/env python
946+#!/usr/bin/env python3
947 """Code coverage wrapper."""
948
949 from __future__ import absolute_import, print_function
950diff --git a/test/runner/injector/cover2.4 b/test/runner/injector/cover2.4
951index 57241c9..c463946 100755
952--- a/test/runner/injector/cover2.4
953+++ b/test/runner/injector/cover2.4
954@@ -1,4 +1,4 @@
955-#!/usr/bin/env python
956+#!/usr/bin/env python3
957 """Code coverage wrapper."""
958
959 from __future__ import absolute_import, print_function
960diff --git a/test/runner/injector/cover2.6 b/test/runner/injector/cover2.6
961index 57241c9..c463946 100755
962--- a/test/runner/injector/cover2.6
963+++ b/test/runner/injector/cover2.6
964@@ -1,4 +1,4 @@
965-#!/usr/bin/env python
966+#!/usr/bin/env python3
967 """Code coverage wrapper."""
968
969 from __future__ import absolute_import, print_function
970diff --git a/test/runner/injector/cover2.7 b/test/runner/injector/cover2.7
971index 57241c9..c463946 100755
972--- a/test/runner/injector/cover2.7
973+++ b/test/runner/injector/cover2.7
974@@ -1,4 +1,4 @@
975-#!/usr/bin/env python
976+#!/usr/bin/env python3
977 """Code coverage wrapper."""
978
979 from __future__ import absolute_import, print_function
980diff --git a/test/runner/injector/cover3 b/test/runner/injector/cover3
981index 57241c9..c463946 100755
982--- a/test/runner/injector/cover3
983+++ b/test/runner/injector/cover3
984@@ -1,4 +1,4 @@
985-#!/usr/bin/env python
986+#!/usr/bin/env python3
987 """Code coverage wrapper."""
988
989 from __future__ import absolute_import, print_function
990diff --git a/test/runner/injector/cover3.5 b/test/runner/injector/cover3.5
991index 57241c9..c463946 100755
992--- a/test/runner/injector/cover3.5
993+++ b/test/runner/injector/cover3.5
994@@ -1,4 +1,4 @@
995-#!/usr/bin/env python
996+#!/usr/bin/env python3
997 """Code coverage wrapper."""
998
999 from __future__ import absolute_import, print_function
1000diff --git a/test/runner/injector/cover3.6 b/test/runner/injector/cover3.6
1001index 57241c9..c463946 100755
1002--- a/test/runner/injector/cover3.6
1003+++ b/test/runner/injector/cover3.6
1004@@ -1,4 +1,4 @@
1005-#!/usr/bin/env python
1006+#!/usr/bin/env python3
1007 """Code coverage wrapper."""
1008
1009 from __future__ import absolute_import, print_function
1010diff --git a/test/runner/injector/injector.py b/test/runner/injector/injector.py
1011index 57241c9..c463946 100755
1012--- a/test/runner/injector/injector.py
1013+++ b/test/runner/injector/injector.py
1014@@ -1,4 +1,4 @@
1015-#!/usr/bin/env python
1016+#!/usr/bin/env python3
1017 """Code coverage wrapper."""
1018
1019 from __future__ import absolute_import, print_function
1020diff --git a/test/runner/injector/pytest b/test/runner/injector/pytest
1021index 57241c9..c463946 100755
1022--- a/test/runner/injector/pytest
1023+++ b/test/runner/injector/pytest
1024@@ -1,4 +1,4 @@
1025-#!/usr/bin/env python
1026+#!/usr/bin/env python3
1027 """Code coverage wrapper."""
1028
1029 from __future__ import absolute_import, print_function
1030diff --git a/test/runner/injector/runner b/test/runner/injector/runner
1031index 57241c9..c463946 100755
1032--- a/test/runner/injector/runner
1033+++ b/test/runner/injector/runner
1034@@ -1,4 +1,4 @@
1035-#!/usr/bin/env python
1036+#!/usr/bin/env python3
1037 """Code coverage wrapper."""
1038
1039 from __future__ import absolute_import, print_function
1040diff --git a/test/runner/injector/runner2 b/test/runner/injector/runner2
1041index 57241c9..c463946 100755
1042--- a/test/runner/injector/runner2
1043+++ b/test/runner/injector/runner2
1044@@ -1,4 +1,4 @@
1045-#!/usr/bin/env python
1046+#!/usr/bin/env python3
1047 """Code coverage wrapper."""
1048
1049 from __future__ import absolute_import, print_function
1050diff --git a/test/runner/injector/runner2.4 b/test/runner/injector/runner2.4
1051index 57241c9..c463946 100755
1052--- a/test/runner/injector/runner2.4
1053+++ b/test/runner/injector/runner2.4
1054@@ -1,4 +1,4 @@
1055-#!/usr/bin/env python
1056+#!/usr/bin/env python3
1057 """Code coverage wrapper."""
1058
1059 from __future__ import absolute_import, print_function
1060diff --git a/test/runner/injector/runner2.6 b/test/runner/injector/runner2.6
1061index 57241c9..c463946 100755
1062--- a/test/runner/injector/runner2.6
1063+++ b/test/runner/injector/runner2.6
1064@@ -1,4 +1,4 @@
1065-#!/usr/bin/env python
1066+#!/usr/bin/env python3
1067 """Code coverage wrapper."""
1068
1069 from __future__ import absolute_import, print_function
1070diff --git a/test/runner/injector/runner2.7 b/test/runner/injector/runner2.7
1071index 57241c9..c463946 100755
1072--- a/test/runner/injector/runner2.7
1073+++ b/test/runner/injector/runner2.7
1074@@ -1,4 +1,4 @@
1075-#!/usr/bin/env python
1076+#!/usr/bin/env python3
1077 """Code coverage wrapper."""
1078
1079 from __future__ import absolute_import, print_function
1080diff --git a/test/runner/injector/runner3 b/test/runner/injector/runner3
1081index 57241c9..c463946 100755
1082--- a/test/runner/injector/runner3
1083+++ b/test/runner/injector/runner3
1084@@ -1,4 +1,4 @@
1085-#!/usr/bin/env python
1086+#!/usr/bin/env python3
1087 """Code coverage wrapper."""
1088
1089 from __future__ import absolute_import, print_function
1090diff --git a/test/runner/injector/runner3.5 b/test/runner/injector/runner3.5
1091index 57241c9..c463946 100755
1092--- a/test/runner/injector/runner3.5
1093+++ b/test/runner/injector/runner3.5
1094@@ -1,4 +1,4 @@
1095-#!/usr/bin/env python
1096+#!/usr/bin/env python3
1097 """Code coverage wrapper."""
1098
1099 from __future__ import absolute_import, print_function
1100diff --git a/test/runner/injector/runner3.6 b/test/runner/injector/runner3.6
1101index 57241c9..c463946 100755
1102--- a/test/runner/injector/runner3.6
1103+++ b/test/runner/injector/runner3.6
1104@@ -1,4 +1,4 @@
1105-#!/usr/bin/env python
1106+#!/usr/bin/env python3
1107 """Code coverage wrapper."""
1108
1109 from __future__ import absolute_import, print_function
1110diff --git a/test/runner/retry.py b/test/runner/retry.py
1111index 4972131..a9ffb07 100755
1112--- a/test/runner/retry.py
1113+++ b/test/runner/retry.py
1114@@ -1,4 +1,4 @@
1115-#!/usr/bin/env python
1116+#!/usr/bin/env python3
1117 # PYTHON_ARGCOMPLETE_OK
1118 """Automatically retry failed commands."""
1119
1120diff --git a/test/runner/test.py b/test/runner/test.py
1121index 801f07f..804aa8f 100755
1122--- a/test/runner/test.py
1123+++ b/test/runner/test.py
1124@@ -1,4 +1,4 @@
1125-#!/usr/bin/env python
1126+#!/usr/bin/env python3
1127 # PYTHON_ARGCOMPLETE_OK
1128 """Test runner for all Ansible tests."""
1129
1130diff --git a/test/sanity/code-smell/ansible-var-precedence-check.py b/test/sanity/code-smell/ansible-var-precedence-check.py
1131index e10c097..13c7a73 100755
1132--- a/test/sanity/code-smell/ansible-var-precedence-check.py
1133+++ b/test/sanity/code-smell/ansible-var-precedence-check.py
1134@@ -1,4 +1,4 @@
1135-#!/usr/bin/env python
1136+#!/usr/bin/env python3
1137
1138 # A tool to check the order of precedence for ansible variables
1139 # https://github.com/ansible/ansible/blob/devel/test/integration/test_var_precedence.yml
1140diff --git a/test/sanity/code-smell/integration-aliases.py b/test/sanity/code-smell/integration-aliases.py
1141index 50301e3..ac53ca9 100755
1142--- a/test/sanity/code-smell/integration-aliases.py
1143+++ b/test/sanity/code-smell/integration-aliases.py
1144@@ -1,4 +1,4 @@
1145-#!/usr/bin/env python
1146+#!/usr/bin/env python3
1147
1148 import os
1149 import textwrap
1150diff --git a/test/sanity/code-smell/shebang.sh b/test/sanity/code-smell/shebang.sh
1151index 76d72c1..565a198 100755
1152--- a/test/sanity/code-smell/shebang.sh
1153+++ b/test/sanity/code-smell/shebang.sh
1154@@ -8,11 +8,11 @@ grep '^#!' -rIn . \
1155 -e '^\./test/integration/targets/[^/]*/library/[^/]*:#!powershell$' \
1156 -e '^\./test/integration/targets/[^/]*/library/[^/]*:#!/usr/bin/python$' \
1157 -e '^\./test/integration/targets/module_precedence/.*lib.*:#!/usr/bin/python$' \
1158- -e '^\./hacking/cherrypick.py:#!/usr/bin/env python3$' \
1159+ -e '^\./hacking/cherrypick.py:#!/usr/bin/env python33$' \
1160 -e ':#!/bin/sh$' \
1161 -e ':#!/bin/bash( -[eux]|$)' \
1162 -e ':#!/usr/bin/make -f$' \
1163- -e ':#!/usr/bin/env python$' \
1164+ -e ':#!/usr/bin/env python3$' \
1165 -e ':#!/usr/bin/env bash$' \
1166 -e ':#!/usr/bin/env fish$' \
1167
1168diff --git a/test/sanity/validate-modules/test_validate_modules_regex.py b/test/sanity/validate-modules/test_validate_modules_regex.py
1169index 0e41ee7..8a86b07 100644
1170--- a/test/sanity/validate-modules/test_validate_modules_regex.py
1171+++ b/test/sanity/validate-modules/test_validate_modules_regex.py
1172@@ -1,4 +1,4 @@
1173-#!/usr/bin/env python
1174+#!/usr/bin/env python3
1175
1176 # This is a standalone test for the regex inside validate-modules
1177 # It is not suitable to add to the make tests target because the
1178diff --git a/test/sanity/validate-modules/validate-modules b/test/sanity/validate-modules/validate-modules
1179index d03bff1..201cd41 100755
1180--- a/test/sanity/validate-modules/validate-modules
1181+++ b/test/sanity/validate-modules/validate-modules
1182@@ -1,4 +1,4 @@
1183-#!/usr/bin/env python
1184+#!/usr/bin/env python3
1185 # -*- coding: utf-8 -*-
1186 #
1187 # Copyright (C) 2015 Matt Martz <matt@sivel.net>
1188diff --git a/test/units/executor/module_common/test_module_common.py b/test/units/executor/module_common/test_module_common.py
1189index edbf836..1f3bb5a 100644
1190--- a/test/units/executor/module_common/test_module_common.py
1191+++ b/test/units/executor/module_common/test_module_common.py
1192@@ -114,5 +114,5 @@ class TestGetShebang(object):
1193 (u'#!/usr/bin/python3 -tt -OO', u'/usr/bin/python3')
1194
1195 def test_python_via_env(self):
1196- assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python'}) == \
1197- (u'#!/usr/bin/env python', u'/usr/bin/env python')
1198+ assert amc._get_shebang(u'/usr/bin/python', {u'ansible_python_interpreter': u'/usr/bin/env python3'}) == \
1199+ (u'#!/usr/bin/env python3', u'/usr/bin/env python')
1200diff --git a/test/units/modules/network/nxos/test_nxos_config.py b/test/units/modules/network/nxos/test_nxos_config.py
1201index 8e3a59c..46764a8 100644
1202--- a/test/units/modules/network/nxos/test_nxos_config.py
1203+++ b/test/units/modules/network/nxos/test_nxos_config.py
1204@@ -1,4 +1,4 @@
1205-#!/usr/bin/env python
1206+#!/usr/bin/env python3
1207 #
1208 # (c) 2016 Red Hat Inc.
1209 #
1210diff --git a/test/utils/shippable/ansible-core-ci b/test/utils/shippable/ansible-core-ci
1211index e91b426..44f8fb9 100755
1212--- a/test/utils/shippable/ansible-core-ci
1213+++ b/test/utils/shippable/ansible-core-ci
1214@@ -1,4 +1,4 @@
1215-#!/usr/bin/env python
1216+#!/usr/bin/env python3
1217
1218 # (c) 2016 Matt Clay <matt@mystile.com>
1219 #
1220diff --git a/test/utils/shippable/download.py b/test/utils/shippable/download.py
1221index cbda144..e86c8e6 100755
1222--- a/test/utils/shippable/download.py
1223+++ b/test/utils/shippable/download.py
1224@@ -1,4 +1,4 @@
1225-#!/usr/bin/env python
1226+#!/usr/bin/env python3
1227 # PYTHON_ARGCOMPLETE_OK
1228
1229 # (c) 2016 Red Hat, Inc.
1230--
12312.7.4
1232
diff --git a/recipes-devtools/python/python3-ansible_2.3.1.0.bb b/recipes-devtools/python/python3-ansible_2.3.1.0.bb
new file mode 100644
index 0000000..55dd118
--- /dev/null
+++ b/recipes-devtools/python/python3-ansible_2.3.1.0.bb
@@ -0,0 +1,8 @@
1inherit setuptools3
2require python-ansible.inc
3
4RDEPENDS_${PN} += "python3-pyyaml python3-jinja2 python3-modules"
5
6SRC_URI += " \
7 file://python3-ensure-py-scripts-use-py3-for-shebang.patch \
8"