ansible -m ping -u ubuntu us-west-2a
35.166.197.222 | GESCHEITERT! => {
"geändert": falsch,
"fehlgeschlagen": wahr,
"module_stderr": "Gemeinsame Verbindung zu 35.166.197.222 geschlossen.\r\n",
"module_stdout": "/bin/sh: 1: /usr/bin/python: nicht gefunden\r\n",
"msg": "MODULFEHLER"
}
Bitte verwenden Sie die Problemvorlage, anstatt sie zu löschen - dies ist kein umsetzbarer oder nützlicher Fehlerbericht. Ich vermute, Sie verwenden Ubuntu 16+ oder etwas anderes ohne installiertes Standard-Python3, aber das können wir ohne einen vollständigen Fehlerbericht nicht sagen.
In den neuesten Images in AWS ist kein verwendbares Python installiert ... Sie müssen dies als Voraufgabe hinzufügen:
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
Ich muss dies in meinen Aufgaben verwenden, damit das AMI gut mit Ansible funktioniert.
Ubuntu Xenial hat Python3 standardmäßig installiert und ich denke, es befindet sich unter /usr/bin/python3
(ich bin mir jedoch nicht ganz sicher).
Siehe diese Antwort: http://stackoverflow.com/questions/32429259/ansible-fails-with-bin-sh-1-usr-bin-python-not-found
Beachten Sie, dass es wichtig ist, das Sammeln von Fakten für die Initialisierungsaufgaben zu deaktivieren.
Ja, der Pfad des Python-Interpreters kann zur Laufzeit angegeben werden als
-e 'ansible_python_interpreter=/usr/local/bin/python' während das Skript ausgeführt wird.
Aber es muss eine Möglichkeit in der ansible-Konfigurationsdatei geben, wo wir den Python-Interpreter-Pfad erwähnen können ODER ist er dort?
Wenn nicht, muss es implementiert werden.
Verwenden Sie einfach ansible_python_interpreter=/usr/bin/python3
in Ihrer Inventardatei
@guruprasad85 Dieses Problem wartet auf Ihre Antwort. Bitte antworten Sie oder das Problem wird geschlossen.
@guruprasad85 Grüße! Vielen Dank, dass Sie sich die Zeit genommen haben, dieses Thema zu öffnen. Damit die Community Ihr Problem effektiv bearbeiten kann, benötigen wir einige weitere Informationen.
Hier sind die Artikel, die wir in Ihrer Beschreibung nicht finden konnten:
Bitte legen Sie die Beschreibung dieses Problems mit dieser Vorlage fest:
https://raw.githubusercontent.com/ansible/ansible/devel/.github/ISSUE_TEMPLATE.md
Da ich Python2 brauchte, habe ich als erste Aufgabe hinzugefügt:
- 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
Mehr Infos hier
@guruprasad85 Dieses Problem wartet auf Ihre Antwort. Bitte antworten Sie oder das Problem wird geschlossen.
Die obigen Erläuterungen reichen aus, um dieses Problem zu lösen.
Einige zusätzliche Lektüre:
http://docs.ansible.com/ansible/faq.html#how -do-i-handle-python-pathing-not-have-a-python-2-x-in-usr-bin-python-on- a-remote-maschine
Bei weiteren Fragen wenden Sie sich bitte an IRC oder die Mailingliste:
Sie können auch die _Sammeln von Fakten_ deaktivieren, fügen Sie dies in Ihr Buch ein
- hosts: anything
gather_facts: False
@bcoca @sivel Gibt es Pläne, dies noch einmal zu besuchen? Es scheint mir, dass Ansible zumindest versuchen sollte, /usr/bin/python3
(oder /usr/bin/python2
nach Bedarf) zu verwenden, wenn /usr/bin/python
nicht verfügbar ist.
@SpamapS berichtete, dass offizielle Ubuntu-AMIs auf AWS nur mit /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
Für die Nachwelt ist dies eine bekannte Verbesserungsmöglichkeit für Ansible und wird für >=2.8 . in die Roadmap aufgenommen
In meinem Fall (ansible 2.7.0):
myIp | GESCHEITERT! => {
"geändert": falsch,
"module_stderr": "",
"module_stdout": "/bin/sh: /usr/bin/python: No such file or directory\r\n",
"msg": "MODULE FAILURE\nSiehe stdout/stderr für den genauen Fehler",
"rc": 127
}
$ll |grep python
lrwxrwxrwx 1 root root 32 5. Juni 15:44 kylinpy -> /usr/local/python2.7/bin/kylinpy
lrwxrwxrwx 1 root root 34 16. November 2016 python -> /usr/local/python2.7/bin/python2.7
lrwxrwxrwx 1 root root 6 Sep 8 2016 python2 -> python
-rwxr-xr-x 1 root root 4864 29. Mai 2014 python2.6
-rwxr-xr-x 1 root root 1418 29. Mai 2014 python2.6-config
Warum funktioniert Softlink auch nicht?
In meinem Fall (ansible 2.7.0):
myIp | GESCHEITERT! => {
"geändert": falsch,
"module_stderr": "",
"module_stdout": "/bin/sh: /usr/bin/python: No such file or directory\r\n",
"msg": "MODULE FAILURE\nSiehe stdout/stderr für den genauen Fehler",
"rc": 127
}$ll |grep python
lrwxrwxrwx 1 root root 32 5. Juni 15:44 kylinpy -> /usr/local/python2.7/bin/kylinpy
lrwxrwxrwx 1 root root 34 16. November 2016 python -> /usr/local/python2.7/bin/python2.7
lrwxrwxrwx 1 root root 6 Sep 8 2016 python2 -> python
-rwxr-xr-x 1 root root 4864 29. Mai 2014 python2.6
-rwxr-xr-x 1 root root 1418 29. Mai 2014 python2.6-configWarum funktioniert Softlink auch nicht?
Entschuldigung, es ist meine Schuld. Verwenden Sie Softlink, es funktioniert
ein einfaches: ln -s /usr/bin/python3 /usr/bin/python hat mein Problem gelöst
Verwenden Sie einfach
ansible_python_interpreter=/usr/bin/python3
in Ihrer Inventardatei
Danke, es funktioniert jetzt
Dies scheint Probleme mit pyenv pyenv global <version>
.
Es sollte es verschieben, aber ich vermute, dass Ansible hart codiert ist, um /usr/bin/python
, anstatt nur den Befehl python
?
Wenn ja, wird sich das jemals ändern? Oder gibt es einen Workaround, den ich verwenden kann?
Wenn ja, wird sich das jemals ändern?
Nein ist es nicht.
Sie müssten ansible_python_interpreter
explizit auf einen Python-Interpreter setzen, wenn Sie etwas anderes als /usr/bin/python
möchten.
Was im Fall von pyenv
wahrscheinlich nur der Pfad zum Shim ( which python3.6
) oder zur echten Binärdatei ( pyenv which python3.6
) wäre. Beachten Sie, dass Sie dies in vielen Fällen hart codieren müssen und die Shell-Erweiterung nicht verwenden können.
Hilfreichster Kommentar
Verwenden Sie einfach
ansible_python_interpreter=/usr/bin/python3
in Ihrer Inventardatei