环境
node1 192.168.56.11 角色 salt-master
node2 192.168.56.12 角色 salt-minon
实现内容
使用salt远程安装zabbix-agent
步骤
环境是基于前几篇博客基础上Master和minion已经配置完成
一,创建zabbix项目文件夹,用于存放状态文件
[root@linux-node1 base]# mkdir /srv/salt/base/zabbix -p [root@linux-node1 base]# mkdir /srv/salt/base/init/files -p #用于存放系统相关初始化的信息
二,配置salt的epel源文件
[root@linux-node1 files]# pwd /srv/salt/base/init/files [root@linux-node1 files]# wget http://mirrors.aliyun.com/repo/epel-7.repo --2017-10-22 19:50:35-- http://mirrors.aliyun.com/repo/epel-7.repo
......
三,拷贝zabbix配置文件作为salt的zabbix源文件
[root@linux-node1 zabbix]# yum list |grep zabbix22-agent zabbix22-agent.x86_64 2.2.20-1.el7 epel [root@linux-node1 zabbix]# ll /etc/zabbix/zabbix_agentd.conf lrwxrwxrwx 1 root root 22 Oct 22 20:03 /etc/zabbix/zabbix_agent.conf -> /etc/zabbix_agent.conf [root@linux-node1 zabbix]# mkdir /srv/salt/base/zabbix/files [root@linux-node1 zabbix]# cp /etc/zabbix_agentd.conf /srv/salt/base/zabbix/files
四,添加jiaja模板变量到salt的zabbix源文件
[root@linux-node1 files]# grep ^[a-Z] zabbix_agentd.conf PidFile=/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server={{ ZABBIX_SERVER }} Hostname={{ AGENT_HOSTNAME }} Include=/etc/zabbix_agentd.conf.d/
五,配置epel状态文件管理
[root@linux-node1 init]# pwd /srv/salt/base/init [root@linux-node1 init]# vim yum-repo.sls [root@linux-node1 init]# cat yum-repo.sls /etc/yum.repos.d/epel-7.repo: file.managed: - source: salt://init/files/epel-7.repo - user: root - group: root - mode: 644
六,写zabbix-agent的状态文件
[root@linux-node1 zabbix]# pwd /srv/salt/base/zabbix [root@linux-node1 zabbix]# cat zabbix-agent.sls include: #支持include功能 - init.yum-repo zabbix-agent: pkg.installed: - name: zabbix22-agent - require: - file: /etc/yum.repos.d/epel-7.repo file.managed: - name: /etc/zabbix_agentd.conf - source: salt://zabbix/files/zabbix_agentd.conf - user: root - group: root - mode: 644 - template: jinja - defaults: ZABBIX_SERVER: 192.168.56.12 AGENT_HOSTNAME: {{ grains['fqdn'] }} - require: - pkg: zabbix-agent service.running: - name: zabbix-agent - enable: True - watch: - file: zabbix-agent - pkg: zabbix-agent zabbix_agentd.conf.d: file.directory: - name: /etc/zabbix_agentd.conf.d - watch_in: - service: zabbix-agent - require: - pkg: zabbix-agent - file: zabbix-agent
七,测试

[root@linux-node1 files]# salt 'linux-node2*' state.sls zabbix.zabbix-agent test=True linux-node2.example.com: ---------- ID: /etc/yum.repos.d/epel-7.repo Function: file.managed Result: None Comment: The file /etc/yum.repos.d/epel-7.repo is set to be changed Started: 20:26:12.939665 Duration: 10.114 ms Changes: ---------- newfile: /etc/yum.repos.d/epel-7.repo ---------- ID: zabbix-agent Function: pkg.installed Name: zabbix22-agent Result: None Comment: The following packages are set to be installed/updated: zabbix22-agent Started: 20:26:13.254634 Duration: 2867.494 ms Changes: ---------- ID: zabbix-agent Function: file.managed Name: /etc/zabbix_agentd.conf Result: None Comment: The file /etc/zabbix_agentd.conf is set to be changed Started: 20:26:16.122685 Duration: 15.872 ms Changes: ---------- newfile: /etc/zabbix_agentd.conf ---------- ID: zabbix_agentd.conf.d Function: file.directory Name: /etc/zabbix_agentd.conf.d Result: None Comment: The following files will be changed: /etc/zabbix_agentd.conf.d: directory - new Started: 20:26:16.139640 Duration: 0.401 ms Changes: ---------- ID: zabbix-agent Function: service.running Result: None Comment: Service is set to be started Started: 20:26:16.206765 Duration: 79.412 ms Changes: Summary ------------ Succeeded: 5 (unchanged=5, changed=2) Failed: 0 ------------ Total states run: 5
八,执行

[root@linux-node1 init]# salt 'linux-node2*' state.sls zabbix.zabbix-agent linux-node2.example.com: ---------- ID: /etc/yum.repos.d/epel-7.repo Function: file.managed Result: True Comment: File /etc/yum.repos.d/epel-7.repo updated Started: 20:33:54.907929 Duration: 14.348 ms Changes: ---------- diff: New file mode: 0644 ---------- ID: zabbix-agent Function: pkg.installed Name: zabbix22-agent Result: True Comment: The following packages were installed/updated: zabbix22-agent Started: 20:33:55.228682 Duration: 20540.866 ms Changes: ---------- zabbix22: ---------- new: 2.2.20-1.el7 old: zabbix22-agent: ---------- new: 2.2.20-1.el7 old: ---------- ID: zabbix-agent Function: file.managed Name: /etc/zabbix_agentd.conf Result: True Comment: File /etc/zabbix_agentd.conf updated Started: 20:34:15.771609 Duration: 34.695 ms Changes: ---------- diff: --- +++ @@ -78,7 +78,7 @@ # Default: # Server= -Server=127.0.0.1 +Server=192.168.56.11 ### Option: ListenPort # Agent will listen on this port for connections from the server. @@ -130,7 +130,7 @@ # Default: # Hostname= -Hostname=Zabbix server +Hostname=linux-node2.example.com ### Option: HostnameItem # Item used for generating Hostname if it is undefined. Ignored if Hostname is defined. @@ -240,7 +240,7 @@ # Include= # Include=/etc/zabbix_agentd.userparams.conf -# Include=/etc/zabbix_agentd.conf.d/ +Include=/etc/zabbix_agentd.conf.d/ ####### USER-DEFINED MONITORED PARAMETERS ####### ---------- ID: zabbix_agentd.conf.d Function: file.directory Name: /etc/zabbix_agentd.conf.d Result: True Comment: Directory /etc/zabbix_agentd.conf.d updated Started: 20:34:15.824436 Duration: 1.088 ms Changes: ---------- /etc/zabbix_agentd.conf.d: New Dir ---------- ID: zabbix-agent Function: service.running Result: True Comment: Service zabbix-agent has been enabled, and is running Started: 20:34:15.825810 Duration: 443.184 ms Changes: ---------- zabbix-agent: True Summary ------------ Succeeded: 5 (changed=5) Failed: 0 ------------ Total states run: 5
九,登陆到node2上面,zabbix 已正常启动
[root@linux-node2 ~]# ps aux |grep zabbix zabbix 4595 0.0 0.0 77792 1364 ? S 20:34 0:00 /usr/sbin/zabbix_agentd zabbix 4596 0.0 0.0 77792 1320 ? S 20:34 0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec] zabbix 4597 0.0 0.0 77792 1012 ? S 20:34 0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] zabbix 4598 0.0 0.0 77792 1012 ? S 20:34 0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] zabbix 4599 0.0 0.0 77792 1012 ? S 20:34 0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] zabbix 4600 0.0 0.0 77792 1340 ? S 20:34 0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec] root 4645 0.0 0.0 112652 976 pts/1 S+ 20:35 0:00 grep --color=auto zabbix
总结
1.Jinja模板变量名不支持中横线 -
2.状态文件可以根据项目或服务进行分类管理
3.状态文件支持include功能,支持正则匹配minion id
4.在编写状态文件之前需要先查清楚相关的软件包名称及配置文件名称
5.要习惯先用test=True进行测试,避免不必要的故障
6.基础的东西(jdk,web应用等) 通用的安装全放在一个目录,然后使用include功能
7.做好状态模块之间的依赖关系,避免不必要的状态执行
附 赵班长的 GitHub saltbook-code网址
https://github.com/unixhot/saltbook-code/tree/master