2013-09-21 20 views
10

Ich habe ein Git-Repo nach unten gezogen und lief Vagrant, aber ich bin immer diese Fehlermeldungvagrant ansible Folgende Einstellungen existieren nicht: inventory_file

The following settings don't exist: inventory_file 

ich Virtual Box und Vagabund installiert haben und Ansible für osx Berglöwe.

Aber ich kann nichts zur Arbeit bekommen.

auch wenn ich ansible all -m ping -vvvv laufen bekomme ich

<192.168.0.62> ESTABLISH CONNECTION FOR USER: Grant 
<192.168.0.62> EXEC ['ssh', '-tt', '-vvv', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s', '-o', 'ControlPath=/Users/Grant/.ansible/cp/ansible-ssh-%h-%p-%r', '-o', 'Port=22', '-o', 'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o', 'PasswordAuthentication=no', '-o', 'ConnectTimeout=10', '192.168.0.62', "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-1379790346.17-244145524385544 && chmod a+rx $HOME/.ansible/tmp/ansible-1379790346.17-244145524385544 && echo $HOME/.ansible/tmp/ansible-1379790346.17-244145524385544'"] 
192.168.0.62 | FAILED => SSH encountered an unknown error. The output was: 
OpenSSH_5.9p1, OpenSSL 0.9.8y 5 Feb 2013 
debug1: Reading configuration data /etc/ssh_config 
debug1: /etc/ssh_config line 20: Applying options for * 
debug1: auto-mux: Trying existing master 
debug1: Control socket "/Users/Grant/.ansible/cp/ansible-ssh-192.168.0.62-22-Grant" does not exist 
debug2: ssh_connect: needpriv 0 
debug1: Connecting to 192.168.0.62 [192.168.0.62] port 22. 
debug2: fd 3 setting O_NONBLOCK 
debug1: connect to address 192.168.0.62 port 22: Operation timed out 
ssh: connect to host 192.168.0.62 port 22: Operation timed out 

Irgendwelche Ideen auf, was vor sich geht klar sein :)

Antwort

11

Für die inventory_file Ausgabe versuchen, die Vagrantfile Ändern inventory_path stattdessen zu verwenden. Ich denke, diese subtile Veränderung trat mit Vagrant 1.3.x auf. Wenn Sie die Vagrantfile nicht mit Vagrant 1.2.x ändern möchten.

Beim Laufen:

ansible all -m ping -vvvv 

Diese Ihre aktuellen Benutzer verwenden und wird im Standardverzeichnis für das ansible Hosts Inventar (/etc/ansible/hosts) suchen.

Um mit einer Vagrant definierten VM arbeiten zu können, müssen Sie den Benutzer vagrant verwenden, den während der Verbindung zu verwendenden SSH-Schlüssel angeben und den Speicherort des Host-Inventars angeben, z.

ansible all \ 
    -i provisioning/inventory # <-- or wherever the inventory is \ 
    -m ping \ 
    -u vagrant \ 
    --private-key ~/.vagrant.d/insecure_private_key 
0
$ ansible all -i inventory -m ping -u vagrant --private-key ~/.vagrant.d/insecure_private_key 
ansible_ssh_private_key_file=/Users/dxiao/.vagrant.d/insecure_private_key | FAILED => SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue 
ansible_ssh_user=vagrant | FAILED => SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue 
testserver | success >> { 
    "changed": false, 
    "ping": "pong" 
} 

$ cat inventory 
testserver ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 
ansible_ssh_user=vagrant 
ansible_ssh_private_key_file=/Users/dxiao/.vagrant.d/insecure_private_key 

es funktioniert.

3

Es wurde über den ganzen Block über die Verwendung von ~/.vagrant.d/insecure_private_key wiederholt, aber ich fand, dass es tatsächlich .vagrant/machines/default/virtualbox/private_key, in dem Pfad war, wo die Vagrantfile ist. Sie haben wahrscheinlich ihre Schlüsselgenerierung geändert, um pro Maschine zu sein, nicht benutzerweit, aber die Dokumentation spiegelt das noch nicht wider.

So für den ganzen Befehl, wäre es:

ansible-playbook -i .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory --private-key=.vagrant/machines/default/virtualbox/private_key -u vagrant playbook.yml

Sie können, ob überprüfen sind oder die andere von vagrant ssh-config und der Suche nach dem IdentityFile Wert ausgeführt wird.