• salt 使用state文件来配置zabbix客户端文件


    salt 调用pillar数据配置zabbix_agentd的配置文件

    先拷贝zabbix的安装包到minion端
    [root@cong-33 src]# scp zabbix-3.0.12.tar.gz 192.168.1.126:/usr/local/src/           ##我的机器做了密钥互信,所以不用密码

    这里先不用salt安装zabbix,(还不会。。。。)

    解压,编译安装zabbix
     
    [root@cong-55 src]# tar xf zabbix-3.0.12.tar.gz
    [root@cong-55 src]# cd zabbix-3.0.12
    [root@cong-55 zabbix-3.0.12]# ./configure --prefix=/usr/local/zabbix/ --enable-agent
    
    [root@cong-55 zabbix-3.0.12]# make && make install

    在master的file_roots目录下配置好zabbix_agentd的配置文件

    [root@cong-33 salt]# cat /srv/salt/file/zabbix/zabbix_agentd.conf
    EnableRemoteCommands=1
    LogRemoteCommands=1
    Server=192.168.1.33
    ServerActive=192.168.1.33
    Hostname={{ hostname }}
    UnsafeUserParameters=1
    Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
    PidFile=/var/run/zabbix/zabbix_agentd.pid
    LogFile=/var/log/zabbix/zabbix_agentd.log
    LogFileSize=0
    [root@cong-33 salt]#

    再编写pillar文件设置获取minion的hostname内容

    [root@cong-33 salt]# cat /srv/salt/pillar/top.sls
    base:
      '*':
      - ip
      - user
      - uid
      - httpd
      - hostname
    [root@cong-33 salt]# cat /srv/salt/pillar/hostname.sls
    hostname: {{ grains['nodename'] }}
    [root@cong-33 salt]# salt 'cong-55' pillar.item hostname      ##记得刷新pillar到minion端
    cong-55:
      ----------
      hostname:
      cong-55
    [root@cong-33 salt]#

    master端编写sls文件来拷贝zabbix_agentd的配置文件到minion

    [root@cong-33 salt]# cat /srv/salt/zabbix_agentd.sls
    zabbix_agentd:  ##sls的执行ID,可自定义
      file.managed:
      - source: salt://file/zabbix/zabbix_agentd.conf  ##源文件路径
      - name: /usr/local/zabbix/etc/zabbix_agentd.conf  ##目标文件路径
      - template: jinja
      - defaults:
           hostname: {{ pillar['hostname'] }}  ##设置hostname的key,在文件中可以调用这个key的值
    [root@cong-33 salt]#

    单独执行sls文件

    [root@cong-33 salt]# salt 'cong-55' state.sls zabbix_agentd      ##后面的文件名可以不加sls的后缀
    cong-55:
    ----------
      ID: zabbix_agentd
      Function: file.managed
      Name: /usr/local/zabbix/etc/zabbix_agentd.conf
      Result: True
      Comment: File /usr/local/zabbix/etc/zabbix_agentd.conf updated
      Started: 12:17:57.332941
      Duration: 184.585 ms
      Changes:
      ----------
      diff:      ##因为编译好的zabbix_agentd配置文件是有内容的,salt把文件替换会显示增加和减少的内容
      ---
    。。。。。。。。
      -# TLSPSKFile=
      +EnableRemoteCommands=1
      +LogRemoteCommands=1
      +Server=192.168.1.33
      +ServerActive=192.168.1.33
      +Hostname=cong-55
      +UnsafeUserParameters=1
      +Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
    
    Summary for cong-55
    ------------
    Succeeded: 1 (changed=1)
    Failed: 0
    ------------
    Total states run: 1
    Total run time: 184.585 ms
    [root@cong-33 salt]#
    在minoin端查看
    文件已经替换了,而且hostname也填充进去了
    [root@cong-55 salt]# cat /usr/local/zabbix/etc/zabbix_agentd.conf
    LogFile=/tmp/zabbix_agentd.log
    EnableRemoteCommands=1
    LogRemoteCommands=1
    Server=192.168.1.33
    ServerActive=192.168.1.33
    Hostname=cong-55
    UnsafeUserParameters=1
    Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
    [root@cong-55 salt]#
    修改sls文件,让其可以执行更多的操作
    配置拷贝过去后执行zabbix_agentd启动脚本,启动zabbix_agentd 服务
    [root@cong-33 salt]# cat zabbix_agentd.sls
    zabbix_agentd_conf:
      file.managed:
      - source: salt://file/zabbix/zabbix_agentd.conf
      - name: /usr/local/zabbix/etc/zabbix_agentd.conf
      - template: jinja
      - defaults:
          hostname: {{ pillar['hostname'] }}
    zabbix_agentd:
      file.managed:
      - source: salt://file/zabbix/zabbix_agentd      ##zabbix_agentd启动脚本,拷贝到minion端
      - name: /etc/init.d/zabbix_agentd
      - mode: 755
      service.running:           ##运行zabbix_agentd服务
      - name: zabbix_agentd
      - require:           ##依赖,如果下面的文件存在,才会执行启动服务
          - file: /etc/init.d/zabbix_agentd
    
    [root@cong-33 salt]#
    后面发现minion没有zabbix用户,zabbix不能运行在root用户上。
    好,我们使用sls来添加zabbix用户,然后再启动zabbix-agentd服务
    修改sls文件
    [root@cong-33 salt]# cat zabbix_agentd.sls
    
    zabbix_agentd_conf:      ##sls执行的一个ID,可以自定义,在添加用户的情况下,如果不知道添加用户的名称,自动会取ID的值做用户名
      file.managed:           ##文件管理的函数,这里是拷贝文件到minion服务器
      - source: salt://file/zabbix/zabbix_agentd.conf      ##指定源文件路径,这里是salt的file_roots的路径
      - name: /usr/local/zabbix/etc/zabbix_agentd.conf      ##目标文件路径
      - template: jinja
      - defaults:
          hostname: {{ pillar['hostname'] }}      ##设定一个变量名。在文件中可以继承这个变量的值
    zabbix_agentd:
      file.managed:
      - source: salt://file/zabbix/zabbix_agentd
      - name: /etc/init.d/zabbix_agentd
      - mode: 755
      service.running:      ##服务启动函数
      - name: zabbix_agentd
      - require:      ##依赖,如果下面的zabbix用户存在才会执行服务启动
          - user: zabbix
    
      user.present:      ##用户函数
      - home: /usr/local/zabbix      ##用户家目录
      - shell: /bin/nologin      ##用户shell环境
      - name: zabbix      ##用户名称,如果不指定,会取ID的值
      - uid: 188      ##uid
      - gid: 188      ##gid
      - require:      ##依赖下面的组名,组名存在才会执行这个添加用户的操作
          - group: zabbix
      group.present:      ##组函数
      - name: zabbix      ##组名称
      - gid: 188           ##组ID
      - require:           ##依赖,下面这个文件存在,才会执行添加组的操作
          - file: /usr/local/zabbix/etc/zabbix_agentd.conf
    [root@cong-33 salt]#

    执行sls文件

    [root@cong-33 salt]# salt 'cong-55' state.sls zabbix_agentd
    cong-55:
    ----------
      ID: zabbix_agentd_conf
      Function: file.managed
      Name: /usr/local/zabbix/etc/zabbix_agentd.conf
      Result: True
      Comment: File /usr/local/zabbix/etc/zabbix_agentd.conf is in the correct state
      Started: 15:54:28.866611
      Duration: 57.703 ms
      Changes:
    
    ----------
      ID: zabbix_agentd
      Function: file.managed
      Name: /etc/init.d/zabbix-agent
      Result: True
      Comment: File /etc/init.d/zabbix-agent is in the correct state
      Started: 15:54:28.924459
      Duration: 16.151 ms
      Changes:
    
    ----------
      ID: zabbix_agentd
      Function: group.present
      Name: zabbix
      Result: True
      Comment: Group zabbix is present and up to date
      Started: 15:54:28.948580
      Duration: 1.704 ms
      Changes:
    
    ----------
      ID: zabbix_agentd
      Function: user.present
      Name: zabbix
      Result: True
      Comment: User zabbix is present and up to date
      Started: 15:54:28.950437
      Duration: 7.137 ms
      Changes:
    
    ----------
      ID: zabbix_agentd
      Function: service.running
      Name: zabbix-agent
      Result: True
      Comment: Started Service zabbix-agent
      Started: 15:54:28.957773
      Duration: 113.605 ms
      Changes:
    
      ----------
      zabbix-agent:
      True
    
    Summary for cong-55
    ------------
    Succeeded: 5 (changed=1)
    Failed: 0
    ------------
    Total states run: 5
    Total run time: 196.300 ms
    [root@cong-33 salt]#
    原本自己写的zabbix_agentd启动脚本,手动可以起来,但是使用sls文件起不来,
    后来就使用zabbix  rpm包的启动脚本,修改一下就可以用来,但是注意一下目录的权限的一些配置要不会报错。
    先手动执行看看行不行,在用sls来启动
    服务起不来就看minion的salt日志,
     
     
    因为zabbix的配置中,每个机器的IP,Hostname 都不一样,如果是大批量机器,那么手动就不合适了,
     
    使用pillar来获取每个机器的IP,HostName,然后填写进zabbix的配置文件中,在拷贝过去
  • 相关阅读:
    对话框事件
    C# 实现retry
    Linq中的group by多表多字段,Sum求和
    词干提取(stemming)和词形还原(lemmatization)
    GIT简单应用实例
    像素、分辨率、dpi的区别和联系
    二值图像、灰度图像、彩色图像
    更好的做科研
    数据挖掘竞赛利器-Stacking和Blending方式
    如何成为一名成功的博士生
  • 原文地址:https://www.cnblogs.com/LYCong/p/7879805.html
Copyright © 2020-2023  润新知