2016-05-13 6 views
21

Я пытаюсь запустить анзибль роль на нескольких серверах, но я получаю сообщение об ошибке:анзибль соединение SSH сбой

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

Мой/и т.д./анзибль/хосты файл выглядит следующим образом:

192.168.0.10 ansible_sudo_pass='passphrase' ansible_ssh_user=user 
192.168.0.11 ansible_sudo_pass='passphrase' ansible_ssh_user=user 
192.168.0.12 ansible_sudo_pass='passphrase' ansible_ssh_user=user 

Я понятия не имею, что происходит - все выглядит хорошо - я могу войти через SSH, но непонятный пинг возвращает ту же ошибку.

Бревно от многословной исполнения:

<192.168.0.10> ESTABLISH SSH CONNECTION FOR USER: user <192.168.0.10> SSH: EXEC ssh -C -vvv -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=user -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/ansible-ssh-%h-%p-%r 192.168.0.10 '/bin/sh -c '"'"'(umask 22 && mkdir -p " echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829 " && echo " echo $HOME/.ansible/tmp/ansible-tmp-1463151813.31-156630225033829 " )'"'"''

Можете ли вы помочь мне каким-то образом? Если мне нужно использовать в локальном режиме (-c local), то это бесполезно.

Я попытался удалить ansible_sudo_pass и ansible_ssh_user, но это не помогло.

ответ

30

Вы должны изменить ansible_ssh_pass, а также клавишу или SSH, например, я использую это в моем файле инвентаризации:

192.168.33.100 ansible_ssh_pass=vagrant ansible_ssh_user=vagrant 

После того, что я могу подключиться к удаленному хосту:

ansible all -i tests -m ping 

Со следующим текстом:

192.168.33.100 | SUCCESS => { 
    "changed": false, 
    "ping": "pong" 
} 

Надеюсь, что вам помогут.

+1

Да! Мне не хватало переменную ansible_ssh_pass. Сейчас все работает как шарм. Спасибо огромное! – Thomas

+1

В соответствии с http://docs.ansible.com/ansible/intro_inventory.html это должно быть 'ansible_user', а не' ansible_ssh_user'. – Matthias

+0

Если вы ищете 'ansible_ssh_user', то вы можете найти в упомянутой ссылке, он использовался в unsible 1.9, но в незаменимом 2.0 они изменили его на' ansible_user', но 'ansible_ssh_user' все еще действует в обоих. –

2

Попробуйте изменить файл хоста:

192.168.0.10 
192.168.0.11 
192.168.0.12 
0

ansible_ssh_port изменен во время перезагрузки виртуальной машины.

==> по умолчанию: Загрузка VM ...

==> по умолчанию: Ожидание машины для загрузки. Это может занять несколько минут ...

default: SSH address: 127.0.0.1:2222 

default: SSH username: vagrant 

default: SSH auth method: private key 

Так что мне пришлось обновить инвентарь/файл хостов следующим образом:

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user='centos' ansible_ssh_private_key_file=<key path> 
4
mkdir /etc/ansible 
cat > hosts 
default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key 

Перейти к каталогу PlayBook и запустить анзибль все -m ping

+0

Это сработало для меня – suyesh

0

У меня была эта проблема, но это было по другой причине, чем было описано в других ответах. Мой хост, который я пытался развернуть, был доступен только через переходную площадку. Первоначально я думал, что это произошло потому, что Ansible не узнал мой конфигурационный файл SSH, но это было так. Решение для меня состояло в том, чтобы убедиться, что пользователь, присутствовавший в конфигурационном файле SSH, соответствовал пользователю в загрузочной книге Ansible. Это решило проблему для меня.

Смежные вопросы