我正在尝试重新启动在VirtualBox上运行CentOS 7
的服务器。我使用这个任务:
- name: Restart server
command: /sbin/reboot
async: 0
poll: 0
ignore_errors: true
服务器重新启动,但我收到以下错误:
TASK: [common | Restart server] ***********************************************
fatal: [rolcabox] => SSH Error: Shared connection to 127.0.0.1 closed.
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
FATAL: all hosts have already failed -- aborting
我做错了什么?我该如何解决这个问题呢?
发布于 2015-04-30 07:32:26
您可能没有做任何真正错误的事情,只是/sbin/reboot关闭服务器的速度太快了,以至于服务器在Ansible自己可以关闭它之前就断开了Ansible使用的SSH连接。因此,Ansible报告了一个错误,因为它发现SSH连接由于意外原因而失败。
为了解决这个问题,您可能需要从使用/sbin/reboot
切换到使用/sbin/shutdown
。shutdown命令让您通过一段时间,当与-r
交换机结合使用时,它将执行重新启动,而不是实际关闭。因此,您可能希望尝试这样的任务:
- name: Restart server
command: /sbin/shutdown -r +1
async: 0
poll: 0
ignore_errors: true
这将使服务器重新启动延迟1分钟,但这样做应该会让Ansible有足够的时间关闭SSH连接本身,从而避免您当前收到的错误。
发布于 2015-04-30 15:23:53
在重启任务之后,您应该有一个等待远程主机完成重启的local_action
任务,否则,ssh连接将终止,剧本也将终止。
- name: Reboot server
command: /sbin/reboot
- name: Wait for the server to finish rebooting
sudo: no
local_action: wait_for host="{{ inventory_hostname }}" search_regex=OpenSSH port=22 timeout=300
我还写了一篇关于实现类似解决方案的博客文章:https://oguya.github.io/linux/2015/02/22/ansible-reboot-servers/
发布于 2017-04-03 19:18:38
- name: restart server
shell: sleep 2 && shutdown -r now "Ansible updates triggered"
async: 1
poll: 0
become: true
ignore_errors: true
- name: waiting for the server to come back
local_action: wait_for host=testcentos state=started delay=30 timeout=300
sudo: false
https://stackoverflow.com/questions/29955605
复制相似问题