首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何让ansible报告一个守护进程是否运行在linux上?

我如何让ansible报告一个守护进程是否运行在linux上?
EN

Server Fault用户
提问于 2019-10-29 20:23:00
回答 3查看 3.5K关注 0票数 1

我如何让ansible报告一个守护进程是否运行在linux上?我不想在结果的基础上采取行动。我只想要一个运行Apache的服务器列表。我正在运行RHEL 6和7,所以RHEL 7使用的是systemd,RHEL 6使用的是旧的init脚本。

EN

回答 3

Server Fault用户

发布于 2019-10-30 14:04:08

Ansible 服务_事实模块可能是个不错的选择。

在所有主要的RHEL版本中,Apache服务都被命名为httpd,因此您不必根据播放情况进行发布,并且Ansible模块负责处理系统和新启动模块之间的差异。

下面的示例中的一些内容应该可以做到这一点(注意,在检查服务是否启用或实际运行方面存在差异。当前未运行的服务,因为它失败或被管理员停止,但应该运行,因为服务已启用,反之亦然)

代码语言:javascript
复制
- name: Check for apache status
   service_facts:
- debug:
    var: ansible_facts.services.httpd.state
票数 2
EN

Server Fault用户

发布于 2019-10-29 21:10:37

最好使用一些监控工具。Ansible是config mgt。基于动作的工具通过ssh在服务器端执行。这不是一个有成效的想法。

如果这是唯一的选择,那么您可以使用Ansible ->和调度(比如cron) ->,它可以与Slack/email通知一起使用。

您可以使用命令/etc/init.d/httpd状态和寄存器检查stdout输出,如果它符合条件,则可以触发警报。例如:

代码语言:javascript
复制
- name: check http
  command: /etc/init.d/httpd status
  register: httpd_status
  failed_when: "'NOT' in httpd_status.stdout"
  changed_when: False

检查状态时所看到的任何其他输出都不要更改。

票数 0
EN

Server Fault用户

发布于 2019-11-19 14:52:18

使用service_facts的答案非常有趣,但是您也可以通过实现一些可以返回自定义值的"custom_facts“来解决这个问题。

自定义事实是在实际收集和返回JSON对象时执行的脚本。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/989824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档