使用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