* Pr 72292- Add context to inventory plugins (#78070) * Add context to inventory plugins documentation * Show how to add the inventory plugin to the `enable_plugins` configuration item - not just replace it. * Show adding tags to `keyed_groups` without specifying the separator. * Show adding more complex `groups` and `compose` statements, including using the ternary filter. * As I added an additional group, I've updated the resulting `ansible-inventory` output accordingly. (cherry picked from commita77fc2e822) * Update dpkg_selections.py (#78177) * Update dpkg_selections.py to include an syntax example showing how to remove package holds * Fix pep8 issue: dpkg_selections.py Missed some trailing spaces when adding example text. (cherry picked from commit489b7f1859) * fix ternary problem (#78186) (cherry picked from commit7ec8916097) * documentation: become plugins: correct pluralization in description (#78196) fixes #78195 (cherry picked from commite10851d495) * Update python_3_support.rst (#78239) Fix invalid characters warning when using example group names. (Replace dashes in example group name with underscores.) (cherry picked from commitbe88250a83) * Adding applicable licensing requirements (#78162) (cherry picked from commit6ddccc1604) * Document choice to use Ansible Project in copyright lines (#78164) Co-authored-by: Sviatoslav Sydorenko <wk.cvs.github@sydorenko.org.ua> (cherry picked from commitc9a341902b) * stat only returns pw_name/gr_name if those can be looked up (#78183) (cherry picked from commit221af7640d) * example showing how to deal with keys w/o apt_key (#78206) (cherry picked from commit0590ce065c) * Migrate vmware.vmware_rest Dev Guide to collection (#78255) (cherry picked from commit048adac5b7) * Updated release_and_maintenance.rst (#78272) (cherry picked from commit358a8ad7af) Co-authored-by: Micah Beasley <MBfromOK@users.noreply.github.com> Co-authored-by: Alex Willmer <alex@moreati.org.uk> Co-authored-by: Nathan Hyde <nathanhyde@gmail.com> Co-authored-by: Desmond Obisi <51109125+DesmondSanctity@users.noreply.github.com> Co-authored-by: Evgeni Golov <evgeni@golov.de> Co-authored-by: Brian Coca <bcoca@users.noreply.github.com> Co-authored-by: Mario Lenz <m@riolenz.de> Co-authored-by: Ompragash Viswanathan <21008429+Ompragash@users.noreply.github.com>
96 lines
3.9 KiB
ReStructuredText
96 lines
3.9 KiB
ReStructuredText
================
|
|
Python 3 Support
|
|
================
|
|
|
|
Ansible 2.5 and above work with Python 3. Previous to 2.5, using Python 3 was
|
|
considered a tech preview. This topic discusses how to set up your controller and managed machines
|
|
to use Python 3.
|
|
|
|
.. note:: On the controller we support Python 3.5 or greater and Python 2.7 or greater. Module-side, we support Python 3.5 or greater and Python 2.6 or greater.
|
|
|
|
On the controller side
|
|
----------------------
|
|
|
|
The easiest way to run :command:`/usr/bin/ansible` under Python 3 is to install it with the Python3
|
|
version of pip. This will make the default :command:`/usr/bin/ansible` run with Python3:
|
|
|
|
.. code-block:: shell
|
|
|
|
$ pip3 install ansible
|
|
$ ansible --version | grep "python version"
|
|
python version = 3.6.2 (default, Sep 22 2017, 08:28:09) [GCC 7.2.1 20170915 (Red Hat 7.2.1-2)]
|
|
|
|
If you are running Ansible :ref:`from_source` and want to use Python 3 with your source checkout, run your
|
|
command via ``python3``. For example:
|
|
|
|
.. code-block:: shell
|
|
|
|
$ source ./hacking/env-setup
|
|
$ python3 $(which ansible) localhost -m ping
|
|
$ python3 $(which ansible-playbook) sample-playbook.yml
|
|
|
|
.. note:: Individual Linux distribution packages may be packaged for Python2 or Python3. When running from
|
|
distro packages you'll only be able to use Ansible with the Python version for which it was
|
|
installed. Sometimes distros will provide a means of installing for several Python versions
|
|
(via a separate package or via some commands that are run after install). You'll need to check
|
|
with your distro to see if that applies in your case.
|
|
|
|
|
|
Using Python 3 on the managed machines with commands and playbooks
|
|
------------------------------------------------------------------
|
|
|
|
* Ansible will automatically detect and use Python 3 on many platforms that ship with it. To explicitly configure a
|
|
Python 3 interpreter, set the ``ansible_python_interpreter`` inventory variable at a group or host level to the
|
|
location of a Python 3 interpreter, such as :command:`/usr/bin/python3`. The default interpreter path may also be
|
|
set in ``ansible.cfg``.
|
|
|
|
.. seealso:: :ref:`interpreter_discovery` for more information.
|
|
|
|
.. code-block:: ini
|
|
|
|
# Example inventory that makes an alias for localhost that uses Python3
|
|
localhost-py3 ansible_host=localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python3
|
|
|
|
# Example of setting a group of hosts to use Python3
|
|
[py3_hosts]
|
|
ubuntu16
|
|
fedora27
|
|
|
|
[py3_hosts:vars]
|
|
ansible_python_interpreter=/usr/bin/python3
|
|
|
|
.. seealso:: :ref:`intro_inventory` for more information.
|
|
|
|
* Run your command or playbook:
|
|
|
|
.. code-block:: shell
|
|
|
|
$ ansible localhost-py3 -m ping
|
|
$ ansible-playbook sample-playbook.yml
|
|
|
|
|
|
Note that you can also use the `-e` command line option to manually
|
|
set the python interpreter when you run a command. This can be useful if you want to test whether
|
|
a specific module or playbook has any bugs under Python 3. For example:
|
|
|
|
.. code-block:: shell
|
|
|
|
$ ansible localhost -m ping -e 'ansible_python_interpreter=/usr/bin/python3'
|
|
$ ansible-playbook sample-playbook.yml -e 'ansible_python_interpreter=/usr/bin/python3'
|
|
|
|
What to do if an incompatibility is found
|
|
-----------------------------------------
|
|
|
|
We have spent several releases squashing bugs and adding new tests so that Ansible's core feature
|
|
set runs under both Python 2 and Python 3. However, bugs may still exist in edge cases and many of
|
|
the modules shipped with Ansible are maintained by the community and not all of those may be ported
|
|
yet.
|
|
|
|
If you find a bug running under Python 3 you can submit a bug report on `Ansible's GitHub project
|
|
<https://github.com/ansible/ansible/issues/>`_. Be sure to mention Python3 in the bug report so
|
|
that the right people look at it.
|
|
|
|
If you would like to fix the code and submit a pull request on github, you can
|
|
refer to :ref:`developing_python_3` for information on how we fix
|
|
common Python3 compatibility issues in the Ansible codebase.
|