2016-02-03 6 views
7

Ich verwende ansijet, um das Ansible-Playbook zu automatisieren, das auf Knopfdruck ausgeführt werden soll. Das Playbook soll die laufenden Instanzen in AWS stoppen. Wenn es manuell über die Befehlszeile ausgeführt wird, läuft das Playbook gut und erledigt die Aufgaben. Aber wenn über das Webinterface von ansijet ausführen, wird folgende Fehler aufgetretenAuthentifizierung oder Berechtigung fehlgeschlagen, keine Berechtigungen für das Remote-Verzeichnis

Authentication or permission failure. In some cases, you may have been able to authenticate and did not have permissions on the remote directory. Consider changing the remote temp path in ansible.cfg to a path rooted in "/tmp". Failed command was: mkdir -p $HOME/.ansible/tmp/ansible-tmp-1390414200.76-192986604554742 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1390414200.76-192986604554742 && echo $HOME/.ansible/tmp/ansible-tmp-1390414200.76-192986604554742, exited with result 1: 

Es folgt die ansible.cfg Konfiguration.

# some basic default values... 

inventory  = /etc/ansible/hosts 
#library  = /usr/share/my_modules/ 
remote_tmp  = $HOME/.ansible/tmp/ 
pattern  = * 
forks   = 5 
poll_interval = 15 
sudo_user  = root 
#ask_sudo_pass = True 
#ask_pass  = True 
transport  = smart 
#remote_port = 22 
module_lang = C 

Ich versuche, die remote_tmp Weg zu /home/ubuntu/.ansible/tmp aber immer noch die gleichen Fehler zu ändern.

Antwort

2

Standardmäßig verbindet sich der Benutzer Ansible mit Remote-Servern, da er denselben Namen hat wie der Benutzer ansible. Im Fall von Ansijet versucht es, sich mit den entfernten Servern zu verbinden, mit dem Benutzer, der den node.js-Prozess von Ansijet gestartet hat. Sie können dies überschreiben, indem Sie remote_user in einem Playbook oder global in der Datei ansible.cfg angeben.

Ansible wird versuchen, das temporäre Verzeichnis zu erstellen, wenn es nicht bereits vorhanden ist, aber nicht ausgeführt werden kann, wenn dieser Benutzer kein Basisverzeichnis hat oder wenn seine Home-Verzeichnis-Berechtigungen ihnen keinen Schreibzugriff erlauben.

Ich habe tatsächlich das temporäre Verzeichnis in meiner ansible.cfg Datei geändert, um auf einen Speicherort in/tmp zu zeigen, der diese Art von Problemen behebt.

remote_tmp = /tmp/.ansible-${USER}/tmp

+0

ansijet läuft als Ubuntu-Benutzer. Ich habe 'remote_user' und' remote_tmp'-Pfad geändert, wie du gesagt hast. Aber immer noch vor dem gleichen Fehler. –

+0

Ist es derselbe genaue Fehler oder hat sich die Nachricht nach dem Bearbeiten der Datei ansible.cfg remote_tmp geändert? –

+0

Es gab zwei Playbooks, eines ist die Instanz zu starten andere ist es zu stoppen. Nun, nachdem Sie Ihren Vorschlag geändert haben, läuft das Playbook zum Starten der Instanzen gut, aber Sie erhalten den gleichen Fehler im Playbook, um die Instanz zu stoppen. –

-1

konfrontiert ich das gleiche Problem vor einer Weile und wie diese gelöst. Der mögliche Fall besteht darin, dass das Verzeichnis /tmp des Remote-Servers nicht über ausreichende Schreibberechtigung verfügt. Führen Sie den Befehl ls -ld /tmp, um sicherzustellen, dass seine Ausgabe etwa so aussieht drwxrwxrwt 7 root root 20480 Feb 4 14:18 /tmp Ich habe root Benutzer als Super User und /tmp hat 1777 Erlaubnis.

Auch für mich einfach - remote_tmp = /tmp hat gut funktioniert.

Eine weitere Überprüfung wäre, sicherzustellen, dass $ HOME von der Shell vorhanden ist, die Sie ausführen möchten. Ansible führt Befehle über /bin/sh Shell und nicht /bin/bash. Stellen Sie sicher, dass $ HOME in sh Shell vorhanden ist.

+0

/tmp hat spezielle Berechtigungen für Linux-Systeme (sticky bit), es ist nicht einfach 777, was eine Sicherheitslücke für bestimmte Anwendungen sein könnte, die/tmp verwenden. Die Verwendung von/tmp selbst bricht ab, wenn ein anderer Benutzer jemals Playbooks für diese Maschinen ausführt (sie erhalten einen Berechtigungsfehler) –

+0

Ja, Sie haben Recht. Sticky Bit sollte auf '/ tmp' gesetzt werden. Es ist auch auf meiner gesetzt, so dass die Berechtigungen 1777 und nicht 0777 sein sollten. In obiger Antwort korrigiert.Vielen Dank, dass Sie darauf hingewiesen haben. –

+0

Spielbuch wurde nie gleichzeitig mit zwei Benutzern ausgeführt. Aber es könnte ein möglicher Fall sein und könnte brechen, wenn zwei verschiedene Benutzer es gleichzeitig benutzen. –

Verwandte Themen