我如何让ansible报告一个守护进程是否运行在linux上?我不想在结果的基础上采取行动。我只想要一个运行Apache的服务器列表。我正在运行RHEL 6和7,所以RHEL 7使用的是systemd,RHEL 6使用的是旧的init脚本。
发布于 2019-10-30 14:04:08
Ansible 服务_事实模块可能是个不错的选择。
在所有主要的RHEL版本中,Apache服务都被命名为httpd,因此您不必根据播放情况进行发布,并且Ansible模块负责处理系统和新启动模块之间的差异。
下面的示例中的一些内容应该可以做到这一点(注意,在检查服务是否启用或实际运行方面存在差异。当前未运行的服务,因为它失败或被管理员停止,但应该运行,因为服务已启用,反之亦然)
- name: Check for apache status
service_facts:
- debug:
var: ansible_facts.services.httpd.state发布于 2019-10-29 21:10:37
最好使用一些监控工具。Ansible是config mgt。基于动作的工具通过ssh在服务器端执行。这不是一个有成效的想法。
如果这是唯一的选择,那么您可以使用Ansible ->和调度(比如cron) ->,它可以与Slack/email通知一起使用。
您可以使用命令/etc/init.d/httpd状态和寄存器检查stdout输出,如果它符合条件,则可以触发警报。例如:
- name: check http
command: /etc/init.d/httpd status
register: httpd_status
failed_when: "'NOT' in httpd_status.stdout"
changed_when: False检查状态时所看到的任何其他输出都不要更改。
发布于 2019-11-19 14:52:18
使用service_facts的答案非常有趣,但是您也可以通过实现一些可以返回自定义值的"custom_facts“来解决这个问题。
自定义事实是在实际收集和返回JSON对象时执行的脚本。
https://serverfault.com/questions/989824
复制相似问题