2013-09-21 23 views
10

ho tirato giù un repo git e corsi Vagrant su ma sto ottenendo questo messaggio di errorevagabondo ansible non esistono le seguenti impostazioni: inventory_file

The following settings don't exist: inventory_file 

Ho installato Virtual Box e vagabonda e ansible per osx mountain lion.

Ma non riesco a far funzionare niente.

anche quando corro ansible all -m ping -vvvv ottengo

<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 

Tutte le idee su ciò che sta accadendo sarà apprezzato :)

risposta

11

per il rilascio inventory_file provare a modificare il Vagrantfile di utilizzare inventory_path invece. Penso che questo sottile cambiamento sia avvenuto con Vagrant 1.3.x. Se non si desidera modificare Vagrantfile, provare a utilizzare Vagrant 1.2.x.

Quando si esegue:

ansible all -m ping -vvvv 

Questo userà il vostro utente corrente e sarà nella posizione predefinita per l'inventario Ansible host (/etc/ansible/hosts).

Per poter funzionare con una VM definita Vagrant, è necessario utilizzare l'utente vagrant, specificare la chiave SSH da utilizzare durante la connessione e specificare il percorso dell'inventario degli host, ad es.

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 

funziona.

3

È stato ripetuto in tutto il blocco sull'utilizzo di ~/.vagrant.d/insecure_private_key ma ho scoperto che stava effettivamente utilizzando .vagrant/machines/default/virtualbox/private_key, nel percorso in cui è lo Vagrantfile. Probabilmente hanno cambiato la loro generazione di chiavi in ​​modo che fossero per macchina, non a livello di utente, ma la documentazione non lo rispecchia ancora.

Così per tutta comando, sarebbe:

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

È possibile verificare se è uno o l'altro eseguendo vagrant ssh-config e alla ricerca per il valore IdentityFile.