Python 3 サポート¶
Ansible 2.5 以降では、Python 3 を使用しますが、Python 3 を使用する 2.5 よりも前のバージョンは、 テクノロジープレビューとみなされます。 以下のトピックでは、 Python 3 を使用できるようにコントローラーと管理マシンを設定する方法を説明します。
Note
Ansible は Python バージョン 3.5 以降でのみ動作します。
コントローラー側¶
Python 3 で /usr/bin/ansible を最も簡単に実行するには、pip の Python 3 バージョンをインストールします。 これでデフォルトで、Python 3 を使用して /usr/bin/ansible を実行できます。
$ 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)]
Ansible ソース (devel) からの Ansible の実行 を実行していて、ソースのチェックアウトに Python 3 を使用する
には、python3
でコマンドを実行します。 例:
$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
Note
Python 2 または Python 3 向けに、Linux ディストリビューションパッケージが個別でパッケージされている場合があります。 ディストリビューションパッケージから実行する場合には、 インストールされている Python のバージョンでのみ、 Ansible を使用できます。 ディストリビューションによっては、 複数の Python バージョンをインストールする手段を提供するところもあります (別のパッケージや、インストール後に実行するコマンドなど)。 お客様の状況に該当するかどうかは、 ディストリビューションの情報を確認してください。
コマンドおよび Playbook を使用した管理マシンでの Python 3 の使用¶
- Ansible は、多数のプラットフォームに同梱されている Python 3 を自動的に検出して使用します。Python 3 インタープリターを明示的に設定するには、
グループまたはホストレベルで、/usr/bin/python3 などのように、
ansible_python_interpreter
のインベントリー変数を Python 3 インタープリターの場所に指定します。デフォルトのインタープリターパスも、ansible.cfg
に設定できます。
See also
詳細は「インタープリターの検出」を参照してください。
# 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
See also
詳細は「インベントリーの構築方法」を参照してください。
- コマンドまたは Playbook を実行します。
$ ansible localhost-py3 -m ping
$ ansible-playbook sample-playbook.yml
コマンドの実行時に、-e コマンドラインオプションを指定して、 手動で Python インタープリターを設定することもできる点に注意してください。 これは、 Python 3で固有のモジュールや Playbook にバグが発生しているかをテストする場合に便利です。 例:
$ ansible localhost -m ping -e 'ansible_python_interpreter=/usr/bin/python3'
$ ansible-playbook sample-playbook.yml -e 'ansible_python_interpreter=/usr/bin/python3'
非互換性が見つかった場合の対処方法¶
Python 2 および Python 3 の両方で Ansible でコアとなる機能が実行できるように、 複数リリースにわたってバグ修正や、新規テストが追加されました。 ただし、バグはエッジケースなどでまだ存在する可能性があります。 また、Ansible に同梱されている多くのモジュールは、コミュニティーがメンテナンスを実施しており、 すべてがポーティングされているわけではありません。
Python 3 で実行中にバグを発見した場合には、 Ansible の GitHub プロジェクト からバグ報告を提出してください。 適切な担当者が対応できるように、 バグ報告には Python3 と記載するようにしてください。
コードを修正して github へのプルリクエストを送信する場合は、 Ansible コードベースで一般的な Python 3 の互換性の問題を修正する方法について、 Ansible および Python 3 を参照してください。