Назад | Перейти на главную страницу

Использование ansible cli для перезапуска серверов возвращает ошибку (при перезапуске серверов)

Я могу успешно подключиться к своему серверу с помощью ssh. Тем не менее, когда я пытаюсь выполнить команду через Ansible cli, это не удается:

ansible en2 -a "/sbin/reboot" -vvv
Using /etc/ansible/ansible.cfg as config file
<en2> ESTABLISH SSH CONNECTION FOR USER: None
<en2> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/buzut/.ansible/cp/ansible-ssh-%h-%p-%r en2 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1470744750.87-182962282383475 `" && echo ansible-tmp-1470744750.87-182962282383475="` echo $HOME/.ansible/tmp/ansible-tmp-1470744750.87-182962282383475 `" ) && sleep 0'"'"''
<en2> PUT /tmp/tmpampMBF TO /root/.ansible/tmp/ansible-tmp-1470744750.87-182962282383475/command
<en2> SSH: EXEC sftp -b - -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/buzut/.ansible/cp/ansible-ssh-%h-%p-%r '[en2]'
<en2> ESTABLISH SSH CONNECTION FOR USER: None
<en2> SSH: EXEC ssh -C -q -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 -o ControlPath=/home/buzut/.ansible/cp/ansible-ssh-%h-%p-%r -tt en2 '/bin/sh -c '"'"'LANG=fr_FR.UTF-8 LC_ALL=fr_FR.UTF-8 LC_MESSAGES=fr_FR.UTF-8 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1470744750.87-182962282383475/command; rm -rf "/root/.ansible/tmp/ansible-tmp-1470744750.87-182962282383475/" > /dev/null 2>&1 && sleep 0'"'"''
en2 | UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh.", 
    "unreachable": true
}

Все в вашем выводе выглядит правильно.

Ansible устанавливает SSH-соединение, запускает свой сценарий (содержащий вашу команду) и ждет кода выхода.

Однако вы приказываете ему выпустить /sbin/reboot команда, которая перезагружает сервер. Таким образом, SSH-соединение разрывается до того, как код выхода возвращается в Ansible, и Ansible сообщает об ошибке.

Сообщение об ошибке на самом деле немного вводит в заблуждение, но означает, что соединение было прервано.