我是ansible的新手,我想检查一些主机是否存在不存在的服务,以便根据事后的事实做事。
到处都有大约100台具有相同debian的服务器,但是工作负载不同,所以我需要检查是否存在任何服务并正在运行。
示例剧本检查zabbix,mysql和postgres(实际上应该检查)
- hosts: all
remote_user: root
vars:
zabb: "{{ ansible_facts.services['zabbix-agent']['state'] == 'running' }}"
mysql: "{{ ansible_facts.services['mariadb']['state'] == 'running' }}"
postgres: "{{ ansible_facts.services['postgresql']['state'] == 'running' }}"
tasks:
- name: populate
service_facts:
- name: checking mysql
# any action here
when: mysql
ignore_errors: yes
- name: checking postgres
# any action here
when: postgres
ignore_errors: yes
如何避免服务解析失败?检查服务是否存在的最佳方法是什么?
有一个选项可以通过ansible的命令模块来解析ps | lsof输出,但这看起来并不是一个很好的解决方案。
可用版本为2.7.4