微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用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网站的评论似乎排除了这一点.

谢谢

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐