saltstack-----state.sls引用grains

本文介绍如何使用SaltStack进行批量配置Nagios插件NRPE,并通过Grains获取主机信息实现动态配置server_address参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在生产环境中普遍会有很多主机,当需要批量修改配置文件的时候,某些配置文件可能跟主机信息相关,需要作出对应的调整,那此时可以利用grains获取不同主机来做相应的修改同步,批量的修改配置文件。

例如在生产环境中配置nagios插件nrpe配置文件是,server_address是客户端主机IP地址,当需要批量修改客户端配置的时候,此时客户端的配置文件中server_address肯定不是固定的,需要配置客户端自身地址。


创建nrped.sls

# cat nagios/nrped.sls 
nrpe.cfg:
  file.managed:
    - name: /usr/local/nagios/etc/nrpe.cfg
    - source: salt://nagios/files/nrpe.cfg.jinja
    - user: support
    - group: support
    - mode: 644
    - template: jinja

创建nrpe.cfg.jinja配置文件模板

# cat nagios/files/nrpe.cfg.jinja 
log_facility=daemon
pid_file=/var/run/nrpe.pid
server_port=5666
server_address={{ grains['fqdn_ip4'][0] }}     ##利用grains来获取客户端自身地址
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx   ###nagios主机地址,多个主机用,逗号隔开
dont_blame_nrpe=0
allow_bash_command_substitution=0
debug=0
command_timeout=60
connection_timeout=300


####### command #######
command[check_proc]=/usr/local/nagios/libexec/proc.sh
command[check_local_swap]=/usr/local/nagios/libexec/check_swap -w 40% -c 30%
command[check_local_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% 


注意:nrped.sls配置中的template: jinja这个非常关键,如果没有配置这个选项,nrpe.cfg.jinja配置文件无法引用到grains数据,同步到客户端会直接同步为server_address={{ grains['fqdn_ip4'][0] }};如下

没有添加template: jinja选项

# cat nrped.sls
nrpe.cfg:
  file.managed:
    - name: /usr/local/nagios/etc/nrpe.cfg
    - source: salt://nagios/files/nrpe.cfg.jinja
    - user: support
    - group: support
    - mode: 644

# salt \*-vm234-158 state.sls nagios.nrped test=True
*-vm234-158:
----------
          ID: nrpe.cfg
    Function: file.managed
        Name: /usr/local/nagios/etc/nrpe.cfg
      Result: None
     Comment: The file /usr/local/nagios/etc/nrpe.cfg is set to be changed
     Started: 22:34:31.157748
    Duration: 34.201 ms
     Changes:   
              ----------
              diff:
                  ---  
                  +++  
                  @@ -1,7 +1,7 @@
                   log_facility=daemon
                   pid_file=/var/run/nrpe.pid
                   server_port=5666
                  -server_address=192.168.xxx.xxx
                  +server_address={{ grains['fqdn_ip4'][0] }}
                   nrpe_user=nagios
                   nrpe_group=nagios
                   allowed_hosts=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx   


Summary for *-vm234-158
------------
Succeeded: 1 (unchanged=1, changed=1)
Failed:    0
------------
Total states run:     1
Total run time:  34.201 ms


# salt \*-vm234-158 state.sls nagios.nrped test=True
*-vm234-158:
----------
          ID: nrpe.cfg
    Function: file.managed
        Name: /usr/local/nagios/etc/nrpe.cfg
      Result: True
     Comment: The file /usr/local/nagios/etc/nrpe.cfg is in the correct state
     Started: 22:40:31.532780
    Duration: 26.22 ms
     Changes:   


Summary for *-vm234-158
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time:  26.220 ms

# cat /usr/local/nagios/etc/nrpe.cfg 
log_facility=daemon
pid_file=/var/run/nrpe.pid
server_port=5666
server_address=192.168.xxx.xxx
nrpe_user=nagios
nrpe_group=nagios
allowed_hosts=xxx.xxx.xxx.xxx,xxx.xxx.xxx.xxx
dont_blame_nrpe=0
allow_bash_command_substitution=0
debug=0
command_timeout=60
connection_timeout=300


####### command #######
command[check_proc]=/usr/local/nagios/libexec/proc.sh
command[check_local_swap]=/usr/local/nagios/libexec/check_swap -w 40% -c 30%
command[check_local_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值