如何使用ansible playbook重启ubuntu服务器?

我正在尝试构建一个ansible playbook来配置一个ubuntu流浪盒.
除了在升级内核后控制ubuntu盒重启之外,该手册几乎可以正常工作.

我有一个ansible主机文件如下:

localhost ansible_connection=local
dockerhost ansible_ssh_port=2222 ansible_ssh_host=127.0.0.1

我试图解决这个问题的最新版本如下:

- name: Restart the server
    shell: sleep 2s && reboot & executable=/bin/bash

  - name: Wait until the virtual machine stop ie: ssh port stop responding
    local_action: wait_for host={{ansible_ssh_host}} port={{ansible_ssh_port}} state=stopped
    sudo: false

  - name: Wait for server to come up
    local_action: wait_for host={{ansible_ssh_host}} port={{ansible_ssh_port}} delay=30
    sudo: false

使用此playbook步骤等待ssh端口停止响应的进程块,直到它达到超时并退出playbook,我猜测如果重启速度特别快,可能会在wait_for命令的轮询间隔之间发生并且错过ssh端口实际关闭的时间很短.
ansible返回的错误是:

Failed: [dockerhost] => {“elapsed”: 300,“Failed”: true} msg: Timeout
when waiting for 127.0.0.1:2222 to stop.

至少一次它管理到了ansible等待ssh端口再次可用的步骤,但挂在那里直到超时.
我认为这种解决方案对重启速度的差异过于敏感,这在虚拟环境中可能会有很大差异.
我使用的ansible版本是1.5.3
Ubuntu为12.04lte,内核升级到3.8
完整的playbook安装docker和所有依赖项.

我尝试了各种网站中发现的许多变化和想法,但从未设法正确控制重启并继续我的剧本与下一步.

我正在寻找一种简单而简单的方法来重启服务器,并在机器恢复运行后继续执行剧本中的后续步骤

我没有探索运行本地流浪汉重装的可能性,因为我想在操作中使用相同的剧本我不会在流浪汉中运行,我只提到了流浪汉,以防它产生一些我不知道的复杂性.
我也不想暂停5分钟并希望服务器再次启动,使用这种工具的关键是以可预测和及时的方式配置服务器并从环境移植到环境,暂停只是似乎不对.

我也四处寻找可以管理这个要求的ansible模块,但是对ansible网站的评论似乎排除了这一点.

谢谢

解决方法

我建议使用网桥或专用网络.使用前端端口可能很棘手.我使用私有和桥接网络的代码与两者完美配合.

相关文章

ubuntu退出redis的示例:指定配置文件方式启动源码redis:roo...
ubuntu中mysql改密码忘了的解决方法:1.在终端中切换到root权...
ubuntu安装mysql失败的解决方法原因:可能是原有的MySQL还有...
使用centos和ubuntu建站的区别有以下几点1.CentOS是Linux发行...
ubuntu图形界面和字符界面切换的方法:可以通过快捷键CTRL+A...
ubuntu中重启mysql失败的解决方法1.首先,在ubuntu命令行中,...