2016-07-29 4 views
4

Wenn ich weder über ein AWS-Schlüsselpaar noch über Berechtigungen zum Erstellen/Löschen von EC2-Instanzen, sondern nur Zugriff auf eine Instanz über SSH mit einer keypair.pem verfüge, kann ich dann einfach nur Ansible zum Einrichten meines Servers verwenden?kann ich ansible playbook auf ec2 nur mit ssh keyfile keine aws schlüssel/paar?

Da ich nicht auf alle EC2-Instanzen zugreifen kann, kann ich überhaupt kein boto/aws-Schlüsselpaar verwenden und nur diese eindeutige EC2-Instanz hinzufügen, auf die ich Zugriff in der Inventardatei habe?

habe ich versucht, diese auf meiner Inventar-Datei:

fatal: [aws_instance]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true} 

PS:

[aws_server] 
aws_instance ansible_host='MY_EC2_INSTANCE.us-west-2.compute.amazonaws.com' ansible_user='ubuntu' ansible_ssh_private_key_file='/myproject/testkey.pem' 

aber nicht in der Lage mit ansible-playbook -i inventory site.yml verbinden ich ssh -i testkey.pem [email protected]_EC2_INSTANCE.us-west-2.compute.amazonaws.com ohne Probleme

+1

Ihr Setup scheint in Ordnung zu sein. Führen Sie das Playbook mit '-vvvv' aus, um den Fehler zu überprüfen. Oder aktivieren Sie sogar 'ANSIBLE_DEBUG = 1', um die ausführlichste Ausgabe zu erhalten, um den tatsächlichen Fehler zu erhalten. –

Antwort

0

Das Schlüsselpaar sollte laufen kann ausreichend sein, damit Sie sich mit Ihrer EC2-Instanz verbinden können. Ich habe es gerade mit meinem Setup versucht und es scheint zu funktionieren.

Haben Sie versucht, den vollständigen Pfad zum betreffenden Schlüsselpaar zu verwenden? Für mich hat es den Trick gemacht.

+0

Ja, ich habe den vollständigen Pfad hinzugefügt, aber immer noch den gleichen Fehler. Welche Version von Ansible verwenden Sie? Ich bin auf 2.1.1.0 und ich sehe 2.x hat wenige Unterschiede – vmenezes

+0

Ich bin auf 2.1.0, also sollte wahrscheinlich die gleiche Syntax gut funktionieren. Ich kann einen anderen Unterschied zwischen Ihrer Host-Datei und meinem sehen - versuchen Sie 'ansible_user' zu' ansible_ssh_user' und 'ansible_host' zu' ansible_ssh_host' zu ändern –

+0

danke, aber immer noch nicht funktioniert (und eigentlich würde es mich überraschen, wie ansible_ssh_user und ssh_host veraltet waren auf 2.x http://docs.ansible.com/ansible/intro_inventory.html) – vmenezes

2

Das Problem passierte, weil ich den AWS-Hostnamen anstelle von IP verwendete und aus irgendeinem Grund "zu lang" war. Wie habe ich es entdeckt? Wie von Benutzern aus #ansible IRC-Kanal vorgeschlagen, habe ich es mit -vvvv ausgeführt, um das vollständige Protokoll zu erhalten und konnte den SSH-Befehl sehen, der den Fehler gab.

ansible-playbook -vvvv -i inventory site.yml 

ich versuchte mit dem SSH-Befehl ansible mit den gleichen Optionen lief Plus -vvvv und die letzten Zeilen des Protokolls, bevor sie ausfällt waren:

debug1: setting up multiplex master socket 
debug3: muxserver_listen: temporary control path /Users/vmenezes/.ansible/cp/ansible-ssh-MY_EC2_INSTANCE.us-west-2.compute.amazonaws.com-22-ubuntu.NSUADT9KwyIpvhWi 
unix_listener: "/path/to/my/project/.ansible/cp/ansible-ssh-MY_EC2_INSTANCE.us-west-2.compute.amazonaws.com-22-ubuntu.NSUADT9KwyIpvhWi" too long for Unix domain socket 

und wie Sie die letzte Zeile deutlich sehen können, sagt too long for Unix domain socket. Ich weiß nicht genau warum diese Einschränkung, da es sich tatsächlich um eine gültige URL handelt aber das für die IP-Adresse geänderte Problem.

Etwas zu beachten, wenn alles versagt, ist -vvvv wirklich hilfreich zu sehen, was unter der Haube passiert.