ansible -m ping -u ubuntu us-west-2a
35.166.197.222 | 失敗した! => {
「変更された」:false、
「失敗」:true、
"module_stderr": "35.166.197.222への共有接続が閉じられました。\ r \ n"、
"module_stdout": "/ bin / sh:1:/ usr / bin / python:見つかりません\ r \ n"、
"msg": "MODULE FAILURE"
}
課題テンプレートを削除するのではなく、使用してください。これは、実用的または有用なバグレポートではありません。 デフォルトのpython3がインストールされていないUbuntu16 +などを実行していると思われますが、完全なバグレポートがないとわかりません。
AWSの最新のイメージには、使用可能なPythonがインストールされていません...これをプレタスクとして追加する必要があります。
pre_tasks:
- name: Refresh apt cache
become: no
local_action: shell ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 {{ inventory_hostname }} sudo apt-get update
- name: Install Python-apt to pull in Python
become: no
local_action: shell ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 {{ inventory_hostname }} sudo apt-get install --no-install-recommends --assume-yes python-apt
AMIをAnsibleとうまく連携させるには、これをタスクで使用する必要があります。
Ubuntu XenialにはデフォルトでPython3がインストールされており、 /usr/bin/python3
あると思います(私にはよくわかりませんが)。
この回答を参照してください: http :
初期化タスクのファクト収集を無効にすることが重要であることに注意してください。
ええ、Pythonインタープリターのパスは実行時に次のように指定できます
-e'ansible_python_interpreter = / usr / local / bin / python 'スクリプトの実行中。
しかし、Pythonインタープリターパスに言及できる方法がansible構成ファイルにある必要がありますか、それともそこにありますか?
そこにない場合は、実装する必要があります。
インベントリファイルでansible_python_interpreter=/usr/bin/python3
を使用するだけです
@ guruprasad85この問題はあなたの応答を待っています。 返信しないと、問題は解決されます。
@ guruprasad85ご挨拶! この号を開くために時間を割いていただきありがとうございます。 コミュニティがあなたの問題を効果的に処理するために、私たちはもう少し情報が必要です。
説明で見つからなかったアイテムは次のとおりです。
このテンプレートを使用して、この問題の説明を設定してください。
https://raw.githubusercontent.com/ansible/ansible/devel/.github/ISSUE_TEMPLATE.md
python2が必要だったので、最初のタスクとして追加しました。
- name: dependency provisioning
hosts: all
become: yes
become_method: sudo
gather_facts: false
tasks:
- name: install python2
raw: sudo apt-get -y install python-simplejson
詳細はこちら
@ guruprasad85この問題はあなたの応答を待っています。 返信しないと、問題は解決されます。
上記の説明は、この問題を解決するのに十分です。
いくつかの追加の読書:
http://docs.ansible.com/ansible/faq.html#how -do-i-handle-python-pathing-not-having-a-python-2-x-in-usr-bin-python-on- a-リモートマシン
さらに質問がある場合は、IRCまたはメーリングリストに立ち寄ってください。
_Gathering Facts_を無効にして、これを本に入れることもできます
- hosts: anything
gather_facts: False
@bcoca @sivelこれを再検討する計画はありますか? /usr/bin/python
が利用できない場合、Ansibleは少なくとも/usr/bin/python3
(または必要に応じて/usr/bin/python2
)の使用を試みる必要があるように思われます。
@SpamapSは、AWS上の公式/usr/bin/python3
のみ出荷されると報告しました:
ubuntu@ip-172-16-178-247:~$ uname -a
Linux ip-172-16-178-247 4.4.0-1065-aws #75-Ubuntu SMP Fri Aug 10 11:14:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@ip-172-16-178-247:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
ubuntu@ip-172-16-178-247:~$ ls -al /usr/bin |grep python
lrwxrwxrwx 1 root root 26 May 18 2016 dh_pypy -> ../share/dh-python/dh_pypy
lrwxrwxrwx 1 root root 29 May 18 2016 dh_python3 -> ../share/dh-python/dh_python3
lrwxrwxrwx 1 root root 23 Nov 28 2017 pdb3.5 -> ../lib/python3.5/pdb.py
lrwxrwxrwx 1 root root 31 Mar 23 2016 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx 1 root root 26 May 18 2016 pybuild -> ../share/dh-python/pybuild
lrwxrwxrwx 1 root root 9 Mar 23 2016 python3 -> python3.5
-rwxr-xr-x 2 root root 4464400 Nov 28 2017 python3.5
-rwxr-xr-x 2 root root 4464400 Nov 28 2017 python3.5m
-rwxr-xr-x 1 root root 976 Nov 27 2015 python3-jsondiff
-rwxr-xr-x 1 root root 3662 Nov 27 2015 python3-jsonpatch
-rwxr-xr-x 1 root root 1342 Oct 24 2015 python3-jsonpointer
lrwxrwxrwx 1 root root 10 Mar 23 2016 python3m -> python3.5m
後世のために、これはAnsibleの既知の改善の機会であり、2.8以上のロードマップに含めることを検討しています。
私の場合(ansible 2.7.0):
myIp | 失敗した! => {
「変更された」:false、
"module_stderr": ""、
"module_stdout": "/ bin / sh:/ usr / bin / python:そのようなファイルまたはディレクトリはありません\ r \ n"、
"msg": "MODULE FAILURE \ n正確なエラーについては、stdout / stderrを参照してください"、
「rc」:127
}
$ ll | grep python
lrwxrwxrwx1ルートルート32Jun 5 15:44 kylinpy-> /usr/local/python2.7/bin/kylinpy
lrwxrwxrwx1ルートルート34 2016年11月16日python-> / usr / local / python2.7 / bin / python2.7
lrwxrwxrwx1ルートルート6 2016年9月8日python2-> python
-rwxr-xr-x1ルートルート4864 2014年5月29日python2.6
-rwxr-xr-x1ルートルート1418 2014年5月29日python2.6-config
ソフトリンクも機能しないのはなぜですか?
私の場合(ansible 2.7.0):
myIp | 失敗した! => {
「変更された」:false、
"module_stderr": ""、
"module_stdout": "/ bin / sh:/ usr / bin / python:そのようなファイルまたはディレクトリはありません\ r \ n"、
"msg": "MODULE FAILURE \ n正確なエラーについては、stdout / stderrを参照してください"、
「rc」:127
}$ ll | grep python
lrwxrwxrwx1ルートルート32Jun 5 15:44 kylinpy-> /usr/local/python2.7/bin/kylinpy
lrwxrwxrwx1ルートルート34 2016年11月16日python-> / usr / local / python2.7 / bin / python2.7
lrwxrwxrwx1ルートルート6 2016年9月8日python2-> python
-rwxr-xr-x1ルートルート4864 2014年5月29日python2.6
-rwxr-xr-x1ルートルート1418 2014年5月29日python2.6-configソフトリンクも機能しないのはなぜですか?
申し訳ありませんが、それは私のせいです。ソフトリンクを使用してください、それは動作します
単純な: ln -s / usr / bin / python3 / usr / bin / pythonは私の問題を解決しました
インベントリファイルで
ansible_python_interpreter=/usr/bin/python3
を使用するだけです
おかげで、それは今動作します
これには、 pyenv pyenv global <version>
問題があるようです。
それはそれをシムする必要がありますが、Ansibleはpython
コマンドを使用するのではなく、 /usr/bin/python
を見るようにハードコーディングされていると思いますか?
もしそうなら、これは変わる可能性がありますか? または、使用できる回避策はありますか?
もしそうなら、これは変わる可能性がありますか?
いいえそうではありません。
/usr/bin/python
以外のものを使用する場合は、 ansible_python_interpreter
をPythonインタープリターに明示的に設定する必要があります。
pyenv
の場合、シム( which python3.6
)または実際のバイナリ( pyenv which python3.6
)へのパスである可能性があります。 多くの場合、シェル拡張を使用できないようにハードコーディングする必要があることに注意してください。
最も参考になるコメント
インベントリファイルで
ansible_python_interpreter=/usr/bin/python3
を使用するだけです