我有一个场景,如果另一个服务已经在运行,我需要采取行动。具体来说,如果mysql已经在运行,我希望安装snmp监控。
我知道这样做的“正确”方法是安装mysql及其基于支柱数据、谷物数据或其他顶级文件过滤的监控。但是,在这个场景中,mysql是在配置管理之外安装的(例如,MSP有客户端安装mysql,然后依赖主机提供商进行配置监视)。
这种情况下的最佳实践是什么?
我想出了一些解决办法:
{% set mysqlrunning = salt['service.status'](mysql_service) %} {% if mysqlrunning %} <rest of state file> {% endif %}
虽然#4看起来很简单,但我担心它会很慢,并且在大规模部署(1000多台服务器)中使用大量的系统资源。
这种情况下的最佳实践是什么?
发布于 2020-02-11 17:26:11
通常,人们应该容易在州,但使用jinja 地图。
在您的示例中,我将使用require
mysqld:
service.running
insert_sql:
cmd.run:
- name: mysql < /tmp/src.sql
- require:
- service: mysqld 发布于 2018-01-23 10:45:23
我的SLS文件中也有类似的情况:
ipa-client-automount:
cmd.run:
- names:
{% if salt['cmd.run']('hostname -f | grep domain1') %}
- ipa-client-automount --location=domain1 -U
{% elif salt['cmd.run']('hostname -f | grep domain2') %}
- ipa-client-automount --location=domain2 -U
{% endif %}
- unless: ipa-client-automount 2>&1 | grep already您可以执行相同的结构,但在grep条件下服务的状态:
{% if salt['cmd.run']('systemctl status mysql | grep active'%}https://stackoverflow.com/questions/47721767
复制相似问题