2017-10-24 2 views
0

Ich habe das Google Cloud Platform-Handbuch für Ansible (http://docs.ansible.com/ansible/latest/guide_gce.html) gelesen und kann eine Instanz aus einem Playbook erfolgreich erstellen, aber wenn ich versuche, die ansible-Befehle direkt auszuführen, geht das gibt mir eine Erlaubnis verweigert Nachricht.google cloud - Berechtigung verweigert, wenn dynamisches Inventar über ansible ausgeführt wird

Ich kann "gce.py --list" aus dem Inventarverzeichnis ausführen und es listet alle meine Instanzen auf, aber wenn ich versuche 'ansible all -i inventory -m setup' auszuführen, wird mir die Berechtigung verweigert. Ich habe die gce.ini richtig eingestellt und habe sogar alle env-Variablen gesetzt, wie der Guide suggeriert, aber kein Glück. Irgendwelche Ideen? Hier ist meine Spur

jonathan @ devopsbox: ~/ansible $ ansible alle -i Inventar -m Setup -vvv ansible 2.4.0.0 config file = /home/jonathan/ansible/ansible.cfg konfiguriertes Modul Suchpfad = [u '/ home/jonathan/.ansible/plugins/module', us/usr/share/ansible/plugins/modules '] ansible python modul location = /usr/lib/python2.7/dist- packages/ansible ausführbare Datei =/usr/bin/ansible Python-Version = 2.7.13 (Standard, 19. Januar 2017, 14:48:08) [GCC 6.3.0 20170118] Verwenden von/home/jonathan/ansible/ansible .cfg als Konfigurationsdatei Parsed /home/jonathan/ansible/inventory/gce.py inve ntory Quelle mit Skript-Plugin META: ran Handler Using Moduldatei /usr/lib/python2.7/dist Pakete/ansible/modules/system/setup.py SSH-Verbindung für Benutzer: Keine SSH: EXEC ssh -C -o ControlMaster = auto -o ControlPersist = 60s> -o KbdInteractiveAuthentication = Nein -o PreferredAuthentications = gssapi-mit Mikrofon, gssapi-keyex, hostbasiert, publickey -o PasswordAuthentication = Nein -o ConnectTimeout = 10 -o ControlPath =/home/jonathan /.ansible/cp/3d50765225 xxx.xxx.xxx.xxx '/ bin/sh -c' "'"' echo ~ & & Schlaf 0 '' '' '' (255, '', 'Berechtigung verweigert (publickey). \ r \ n ') MeinInstanzname | UNERREICHBAR! => { "geändert": false, "msg": "Fehler an den Host über SSH verbinden: Zugriff verweigert (publickey) \ r \ n." "nicht erreichbar": true }

Es sagt Benutzer: keine. Bedeutet das, dass es nicht in meinem Konto email/pem_file_path/proj_id übergeben wird? Es ist in gce.ini eingestellt.

ich auch gesetzt in Bashrc folgendes: GCE_INI_PATH GCE_EMAIL GCE_PROJECT GCE_CREDENTIALS_FILE

ich aber kein Glück im Grunde alles versucht haben. Laufende ansible 2.4 auf Ubuntu 17.04:

ansible --Version ansible 2.4.0.0 config file = /home/jonathan/ansible/ansible.cfg konfiguriert Modulsuchpfad = [u '/ home/jonathan/.ansible/plugins/modules ','/usr/share/ansible/plugins/modules '] ansible Python-Modul location = /usr/lib/python2.7/dist-packages/ansible ausführbare Datei =/usr/bin/ansible Python-Version = 2.7.13 (Standard, 19. Januar 2017, 14:48:08) [GCC 6.3.0 20170118]

+0

Sie müssen ansible/ssh mitteilen, welche Anmeldeinformationen zu verwenden sind (über ssh_config oder ssh-agent oder group_vars). –

+0

Ich habe nichts in der Dokumentation darüber gesehen. Es wurde nur erwähnt, dass der GCE-E-Mail- und Anmeldeinformationsdateipfad auf die JSON-Datei gesetzt wird. Ist das eine nicht dokumentierte Anforderung? Gibt es Tutorials zur Einrichtung von Google Cloud und dynamischem Inventar? – user3208751

+0

Das hat nichts mit GCE oder ansässigem dynamischem Inventar gemeinsam - es ist die übliche Frage der SSH-Authentifizierung. –

Antwort

0

Antwort aus den Kommentaren:

Sie haben ansible/ssh zu sagen, welche Anmeldeinformationen (über ssh_config oder ssh-agent oder group_vars) zu verwenden Datei.

-

Danke für den Tipp. Es stellte sich heraus, dass ich nur gcloud compute ssh... ausführen musste, um die Schlüssel zu generieren. Danach hat alles geklappt. Die Ansible-Dokumentation hätte diesbezüglich deutlicher sein können.

Verwandte Themen