我目前正在构建一个基础设施管理工具,用于配置裸机和虚拟机等。我们有一个工作虚拟机,它通过 SSH 在远程节点上运行命令(通过 ansible)。
其中一个步骤需要重新启动节点以应用一些配置。重启完成后,工作进程必须在节点上运行更多命令(必须同步完成)。
我的问题是,如何检查重启是否完成?
我可以添加一个睡眠定时器(等到重启完成),但我觉得这是一个糟糕的解决方案,原因有很多。
另一种选择是每隔 5 秒左右从我的工作进程尝试 SSH 到远程节点,如果失败,请继续重试,直到我获得成功连接。
还有另一种方法吗?
正如您提到您正在通过 ansible 运行命令,这是我在剧本中用于重新启动的内容(我正在管理 Ubuntu 14/16.04 机器):
更新
Ansible 2.7 现在有一个reboot 模块,所以你不需要自己创建命令。上面的剧本将转化为:
如果你想检查主机的状态、重启时间和许多其他参数,那么你应该使用Zabbix、Nagios等监控软件。
重启时间可以通过
uptime
系统参数检查。它显示自上次启动以来的时间。您可以uptime
在 Linux/UNIX 主机上通过命令或在主机上运行 snmpd 服务时通过 SNMP 协议远程获取它: