EC2(Amazon Linux 2)にAnsibleをインストールしてアドホックコマンドを実行したら、Python絡みの警告が表示された。
1 2 |
$ ansible web -i inventory -m ping -o 127.0.0.1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong", "warnings": ["Platform linux on host 127.0.0.1 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information."]} |
Ansibleのバージョンを表示すると、Python 2.7.18が連携している模様。
1 2 3 4 5 6 7 |
$ ansible --version ansible 2.9.23 config file = /etc/ansible/ansible.cfg configured module search path = [u'/home/ec2-user/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.18 (default, Jun 10 2021, 00:11:02) [GCC 7.3.1 20180712 (Red Hat 7.3.1-13)] |
公式サイトの Python 3 サポート ページを見ると以下の記述がある。
- Ansible は Python バージョン 3.5 以降でのみ動作します。
- Ansible は、多数のプラットフォームに同梱されている Python 3 を自動的に検出して使用します。
Amazonのリポジトリからインストールしたのだけど、Python 3の自動検知が上手くいかずにPython 2が使われているのかなあ。
1 2 |
$ whereis python python: /usr/bin/python /usr/bin/python2.7 /usr/bin/python2.7-config /usr/bin/python3.7 /usr/bin/python3.7m /usr/bin/python3.7m-x86_64-config /usr/bin/python3.7-config /usr/bin/python3.7m-config /usr/lib/python2.7 /usr/lib/python3.7 /usr/lib64/python2.7 /usr/lib64/python3.7 /etc/python /usr/local/lib/python3.7 /usr/include/python2.7 /usr/include/python3.7m /usr/share/man/man1/python.1.gz |
-eオプションを使って明示的にPythonモジュールを指定したら警告は消えたけど、
1 2 |
$ ansible web -i inventory -m ping -o -e ansible_python_interpreter=/usr/bin/python3 127.0.0.1 | SUCCESS => {"changed": false, "ping": "pong"} |
根本的な原因究明は後回し。
参考サイト
Python 3 サポート — Ansible Documentation
https://docs.ansible.com/ansible/2.9_ja/reference_appendices/python_3_support.html
ansible — Ansible Documentation
https://docs.ansible.com/ansible/2.9_ja/cli/ansible.html#ansible