使用saltstack部署zabbix-agent

使用saltstack批量部署服务是工作中一种常见的内容,对于一个服务的部署可以分为:前期准备(系统资源的设定、参数调整、软件包的下载)、安装、配置、启动这几个步骤。
本文以zabbix客户端的设定为例,向大家展示如何用saltstack部署服务。

部署步骤

1.首先利用pillar定义配置文件中一些关键的数据,例如zabbix server的IP(如果有需求还可以设置开放端口、客户端名称)。在整个部署开始之前,我们需要了解pillar和file的相关目录信息,在master的配置文件中:

file_roots:    base:      - /srv/salt/prod    dev:      - /srv/salt/dev/services      - /srv/salt/dev/states    prod:      - /srv/salt/prod/services      - /srv/salt/prod/states  以及:  pillar_roots:    base:      - /srv/pillar  

file_roots以及pillar_roots里的base、dev和prod会在后续的配置中经常使用,默认情况下我们在每个base地址下创建一个top.sls文件。

2.pillar文件的配置

pillar的根文件top.sls:

[[email protected] pillar]# cat top.sls  base:    '*':      - zabbix  

指定了任何minion都包含zabbix.sls的静态数据,在zabbix.sls文件中我们指定了zabbix_server的ip地址:

[[email protected] pillar]# cat zabbix.sls  zabbix-agent:    Zabbix_Server: 192.168.42.129    port: 10050  

查看下pillar中定义的Zabbix_Server和port的值:

[[email protected] pillar]#  salt '*' pillar.items  minion-192.168.42.130:      ----------      zabbix_agent:          ----------          Zabbix_Server:              192.168.42.129          port:              10050  minion-192.168.42.128:      ----------      zabbix_agent:          ----------          Zabbix_Server:              192.168.42.129          port:              10050  

3.zabbix服务配置

此示例中使用源码进行安装,请提前准备好zabbix 源码包以及配置文件的模板。

[[email protected] files]# pwd  /srv/salt/prod/zabbix/files  [ro[email protected] files]# ls  zabbix-3.2.1.tar.gz  zabbix_agentd.conf  

查看file_roots目录(/srv/salt/prod)中的内容:

[[email protected] prod]# ls  top.sls  zabbix  

首先编写top.sls文件:

[[email protected] prod]# cat top.sls    base:    '*':      - zabbix.zabbix_agent  

这里的base指的是file_roots定义目录中的base:

file_roots:    base:      - /srv/salt/prod  

在这个目录中有一个zabbix目录,该目录中有一个zabbix_agent.sls文件,主要的配置都在该文件中:

[[email protected] zabbix]# cat zabbix_agent.sls  include:    - zabbix.common_install    create_zabbix_user:    user.present:      - name: zabbix      - shell: /sbin/nologin    group.present:      - name: zabbix    zabbix_tar:    file.managed:      - name: /tmp/zabbix-3.2.1.tar.gz      - source: salt://zabbix/files/zabbix-3.2.1.tar.gz      - user: zabbix      - group: zabbix      - mode: 0644    /opt/app:    file.directory:      - user: zabbix      - group: zabbix    zabbix_decompression:    cmd.run:      - name: tar xvf /tmp/zabbix-3.2.1.tar.gz -C /opt/app      - unless: test -d /opt/app/zabbix-3.2.1      - require:        - file: /tmp/zabbix-3.2.1.tar.gz    zabbix_install:    cmd.run:      - name: cd /opt/app/zabbix-3.2.1 && ./configure --enable-agent && make && make install      - require:        - cmd: zabbix_decompression    /usr/local/etc/zabbix_agented.conf:    file.managed:      - name: /usr/local/etc/zabbix_agentd.conf      - source: salt://zabbix/files/zabbix_agentd.conf      - user: zabbix      - group: zabbix      - mode: 0644      - template: jinja      - defaults:        Server: {{pillar['zabbix_agent']['Zabbix_Server']}}      - require:        - cmd: zabbix_install  run_zabbix:    cmd.run:      - name: /usr/local/sbin/zabbix_agentd -c /usr/local/etc/zabbix_agentd.conf      - require:        - cmd: zabbix_install      - watch:        - file: /usr/local/etc/zabbix_agentd.conf  

在该文件的开始有一个include操作,安装zabbix之前系统可能需要先安装相关软件包和编译工具,所以把这个操作放在单独的zabbix.common_install文件中,该文件也在/srv/salt/prod/zabbix目录。内容如下:

[[email protected] zabbix]# cat common_install.sls  pkg-init:    pkg.installed:      - names:        - gcc        - gcc-c++        - glibc        - make        - autoconf        - openssl        - openssl-devel  

接下来的过程包括:
(1)zabbix用户和组的创建;
(2)zabbix源码包的拷贝;
(3)源码包的解压缩和配置安装;
(4)zabbix客户端配置文件(zabbix_agentd.conf)的部署;
(5)zabbix服务的开启;

4.执行过程:

-------------    [[email protected] zabbix]# salt '*' state.highstate    Succeeded: 15 (changed=3)  Failed:     0  -------------  Total states run:     15  Total run time:   26.597 s  

原文出处:csdn -> https://blog.csdn.net/bbwangj/article/details/80746604

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。