首页 > 解决方案 > Ansible playbook:如何获取服务器启动或关闭状态

问题描述

我正在设计一个仪表板,用于使用 ansible playbook 显示所有服务器状态(上/下)、可用 RAM、内核版本、处理器类型等。使用收集事实,我可以轻松获取所有服务器参数,但不确定如何使用剧本启动/关闭服务器。如果服务器关闭,ansible 无法连接到服务器,因此无法使用“ping”模块。请帮我。如果任何服务器的剧本失败,有什么方法可以捕获返回值?

ansible 连接的顺序是 1. 建立 ssh 连接 2. 如果 ssh 成功,收集事实 3. 一个一个执行 playbook taks。如果 ping 是 playbook 中的任务,则控制甚至不会到达该位置,并且 ansible 会在步骤 1 本身中引发连接错误。请参考以下https://docs.ansible.com/ansible/2.4/ping_module.html

另外,请注意我的库存包含许多服务器,我需要获取每个服务器的服务器状态。

标签: ansible

解决方案


您可以根据评论使用 ping 的结果,或者如果您想检查不同的端口,请使用 wait_for:

- hosts: all
  tasks:
    - wait_for: host=192.168.87.100 port=80 timeout=1
    - debug: msg=ok

推荐阅读