Ansible schlägt mit / bin / sh fehl: 1: / usr / bin / python: nicht gefunden
Hab ich, läuft in einen Fehler habe ich noch nie gesehen. Hier ist der Befehl und die Fehlermeldung:
$ ansible-playbook create_api.yml
PLAY [straw] ******************************************************************
GATHERING FACTS ***************************************************************
failed: [104.55.47.224] => {"failed": true, "parsed": false}
/bin/sh: 1: /usr/bin/python: not found
TASK: [typical | install required system packages] *****************************
FATAL: no hosts matched or all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/Users/john/create_api.retry
104.55.47.224 : ok=0 changed=0 unreachable=0 failed=1
Hier ist die create_api.yml-Datei:
---
- hosts: api
remote_user: root
roles:
- api
Und hier ist die hosts-Datei:
[api]
104.55.47.224
Ich kann entfernen Sie den Abschnitt "Rollen", und es wird nicht machen es zu der ersten AUFGABE, wird es stattdessen machen, es wird nur machen es auf die Linie /bin/sh: 1: /usr/bin/python: not found
. Was könnte hier Los?
HINWEIS: falls es jemanden anpingen der IP-Adresse und nicht, um eine Antwort zu bekommen, sollten Sie wissen, habe ich die IP-Adresse geändert, seit einfügen von code.
BEARBEITEN
python installiert war, das problem war, dass es nicht installiert ist auf dem remote-Rechner, das war unter Ubuntu 15.04
InformationsquelleAutor der Frage jdavis | 2015-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stolperte ich über diese Fehler ansible auf Ubuntu 15.10 server, weil es Schiffe mit Python 3.4.3 und ansible benötigt Python 2.
Dies ist, wie mein
provision.yml
jetzt aussieht:Nicht vergessen -y (sagt ja zu allen Fragen) option mit apt-get (oder raw-Modul stecken im hintergrund)
gather_facts: no
Linie ist auch entscheidend (denn wir können nicht Fakten Zusammentragen, ohne python)InformationsquelleAutor der Antwort lakesare
Ansible 2.2 verfügt über eine tech preview von Python-3-support. Um dies zu nutzen (so dass Sie nicht haben, um installieren von Python 2 auf Ubuntu 16.04), nur die
ansible_python_interpreter
config-option zu/usr/bin/python3
. Diese kann getan werden, auf einer pro-host-basis in Ihrem Inventur-Datei:InformationsquelleAutor der Antwort jamix
Lösung 1:
Wenn Sie
Ansible >2.2.0
können Sie dieansible_python_interpreter
Konfiguration option/usr/bin/python3
:oder in dein Inventar file:
Lösung 2:
Wenn Sie
Ansible <2.2.0
dann können Sie diesepre_tasks
zu Ihrem playbook:InformationsquelleAutor der Antwort Arbab Nazar
Können Sie die raw-Modul installieren Sie Python auf dem remote-Host:
InformationsquelleAutor der Antwort udondan
Zusammenfassen von allen anderen Antworten, hier sind die Einstellungen kombiniert, die für mich gearbeitet:
InformationsquelleAutor der Antwort Bobby
Was ich verwendet, um diese arbeiten auf ubuntu 15.10 auf einen frischen Digital Ocean Droplets:
Für ubuntu 16.04 auf einem frischen OVH-SSD musste ich apt-get upgrade die Pakete python2 zur Verfügung standen.
InformationsquelleAutor der Antwort deadghost
Benötigen Sie python 2.7 laufen Ansible.
Auf Ubuntu 16.04, die Sie installieren können Sie es über diesen Befehl:
sudo apt-get install python-minimal
Danach, konnte ich
ansible-playbook -i inventories/staging playbook.yml
Bitte überprüfen Sie mehr unter Mit ansible auf Ubuntu 16.04
InformationsquelleAutor der Antwort phanvugiap
Fand ich heraus, dass es tatsächlich möglich ist, mehrere Spiele in einem einzigen playbook, also mein setup enthält nun eine "Abhängigkeit provisioning" - spielen, die läuft auf allen Rechnern und anderen spielen für bestimmte hosts. Also nicht mehr
pre_tasks
.Beispiel:
InformationsquelleAutor der Antwort Koen.
Als andere sagte, ist dies aufgrund fehlender python2. Andere Antworten bieten hier eine Abhilfe, mit
pre_tasks
undgather_facts: no
jedoch, wenn Sie auf EC2 und drehen Sie, bis die Instanz mit ansible, die Sie verwenden könnenuser_data
option:Dann werden die Menschen in der Regel warten, für ssh verfügbar sein wie diese:
Allerdings habe ich festgestellt, dass dies nicht immer lange genug, als CloudInit ausgeführt wird ziemlich spät im boot-Prozess, so dass die python2 möglicherweise noch nicht installiert, direkt nach ssh verfügbar ist. So habe ich eine pause bei der Instanz, die gerade erstellt wurde:
Wird dies tun, die Arbeit perfekt und als einen Vorteil, du bist nicht die überprüfung für python2 auf jedem Lauf und Sie nicht zu tun haben, irgendwelche workarounds zu sammeln, Fakten später.
Ich bin sicher, dass andere cloud-Anbieter bieten ähnliche CloudInit Funktionalität, so zu adaptieren, für Ihren Fall.
InformationsquelleAutor der Antwort Miroslav
Laut diese Gist Sie installieren können Python2 auf Ubuntu 16.04 wie folgt:
InformationsquelleAutor der Antwort wedesoft
Viele Antworten.. Danke für das posting, als ich begonnen habe von dieser Seite auch!
Habe ich ein bisschen Graben, und es war solide mit Ubuntu 14.04 LTS, Ubuntu 15.04 LTS zu haben Schienen, fiel die neuesten
python
und Ubuntu 16.04 LTS erscheint fallengelassen zu habenaptitude
.Ich die folgende action in meinem bootstrap, bevor Sie jegliche
apt
Aufrufe:Wenn du es schaffst
become
anderswo, fühlen Sie sich frei, um Streifen.Quellen:
InformationsquelleAutor der Antwort sonjz
Konnte ich fix das gleiche problem durch die Installation von Python auf der Ziel-Maschine, d.h. die Maschine, die wir wollen, um SSH zu. Ich hatte folgenden Befehl ein:
InformationsquelleAutor der Antwort anshul
Standardmäßig Ansible benötigt Python 2, jedoch Ansible 2.2+ kann die Arbeit mit Python 3 als gut.
Also entweder install Python 2 verwenden des
raw
- Modul, z.B.oder set
ansible_python_interpreter
- Variablen in der Inventar-Datei, wie:Für Docker, können Sie die folgende Zeile hinzu:
oder als:
InformationsquelleAutor der Antwort kenorb
Ich hatte das gleiche Problem, bis ich merkte, müssen Sie auch installieren Sie python auf dem remote-host, als auch Ihre eigenen lokalen Maschine. jetzt funktioniert es!
InformationsquelleAutor der Antwort GAV
Wir nur in dieser.
Setzen wir ubuntu 16.04 auf einen Landstreicher gehalten, so dass, wenn Sie nicht mit vagrant mein Kommentar ist sinnlos.
Installierten wir die folgenden vagrant plugins (trigger, shell-commander) und wir bekommen python 2.7.6 installiert auf der Maschine (die waren nicht ohne thioose plugins) und nach ansible bereitstellen können
Es war unser letzter test, ansonsten waren wir rund um diese installation in einen shell-Befehl in der Vagrant Datei
Hoffe, es kann jemand helfen
InformationsquelleAutor der Antwort wadoo