续我的上篇博文:https://mp.csdn.net/postedit/88881892。即自动化部署zabbix已经配置好
lamp架构+zabbix的自动化部署
1、mariadb目录——沿用上篇博文
2、配置所需的yum源(下载zabbix-server的软件报好)——沿用上篇博文
3、zabbix-server目录(相比于上篇博文,增加了一些内容)
[root@server1 tasks]# cd /etc/ansible/roles/
[root@server1 roles]# ls
mariadb
[root@server1 roles]# mkdir zabbix-server/{defaults,files,handlers,meta,tasks,templates,vars} -p #zabbix-server目录的名字随意给,因为搭建的是zabbix-server服务,所以这里创建的目录的名字为zabbix-server
[root@server1 roles]# cd zabbix-server/files
[root@server1 files]# vim zabbix.repo #zabbix.repo文件的名字随意给,但是必须以.repo结尾
[zabbix]
name=zabbix4.0
baseurl=http://172.25.83.83/4.0
gpgcheck=0
enabled=1
[root@server1 files]# cd ../tasks/
[root@server1 tasks]# vim main.yml #main.yml文件的名字是固定的,不要随意改
- name: copy zabbix.repo
copy: src=zabbix.repo dest=/etc/yum.repos.d/zabbix.repo
- name: install zabbix-server zabbix-agent zabbix-web-mysql.noarch zabbix-web.noarch
yum: name=zabbix-server,zabbix-agent,zabbix-web-mysql.noarch,zabbix-web.noarch state=present #相比于上篇博文修改的内容,多下载了zabbix-web-mysql.noarch,zabbix-web.noarch,提供web界面
notify: "init zabbix db"
- name: config zabbix server
copy: src=zabbix_server.conf dest=/etc/zabbix/zabbix_server.conf
notify: restart zabbix server
- name: start zabbix-server zabbix-agent
service: name={{ item }} state=started
with_items:
- zabbix-server
- zabbix-agent
[root@server1 tasks]# cd ../handlers/
[root@server1 handlers]# vim main.yml
- name: create database
mysql_db: name=zabbix state=present
listen: "init zabbix db"
- name: create zabbix user
mysql_user: name=zabbix password=zabbix priv=zabbix.*:ALL state=present
listen: "init zabbix db"
- name: import create.sql.gz
mysql_db: name=zabbix state=import target=/usr/share/doc/zabbix-server-mysql-4.0.5/create.sql.gz
listen: "init zabbix db"
- name: restart zabbix server
service: name=zabbix-server state=restarted
[root@server1 files]# scp zabbix.repo server2:/etc/yum.repos.d/zabbix.repo #将yum源发送给server2,以便在server2端安装zabbix-server
[root@server2 ~]# yum install zabbix-server -y #在server2端先安装zabbix-server以生成所需的zabbix_server.conf文件
[root@server2 ~]# scp /etc/zabbix/zabbix_server.conf server1:/etc/ansible/roles/zabbix-server/files #将zabbix_server.conf文件发送到server1端的/etc/ansible/roles/zabbix-server/files目录下
[root@server1 ~]# cd /etc/ansible/roles/zabbix-server/files/
[root@server1 files]# ls
zabbix.repo zabbix_server.conf
[root@server1 files]# vim zabbix_server.conf #修改zabbix_server.conf文件中的数据库的密码
124 DBPassword=zabbix #将密码修改为之前在文件中写的,创建的zabbix用户对应的密码
4、apache目录
[root@server1 ~]# cd /etc/ansible/roles/
[root@server1 roles]# ls
mariadb zabbix-server
[root@server1 roles]# mkdir apache/{defaults,files,handlers,meta,tasks,templates,vars} -p
[root@server1 files]# cd ../tasks/
[root@server1 tasks]# vim main.yml
- name: install httpd
yum: name=httpd state=present
- name: copy httpd.conf
template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf
notify: restart httpd
- name: copy zabbix.conf
copy: src=zabbix.conf dest=/etc/httpd/conf.d/zabbix.conf
notify: restart httpd
- name: start httpd
service: name=httpd state=started
[root@server1 tasks]# cd ../templates/
[root@server1 templates]# cp /etc/ansible/playbooks/httpd/httpd.conf7.j2 httpd.conf.j2 #将之前编写playbook文件时用到的httpd.conf的模板拷贝到当前目录下
[root@server1 templates]# ls
httpd.conf.j2
[root@server1 templates]# vim httpd.conf.j2 #在httpd.conf.j2模板中定义变量
42 Listen {{ http_port }}
[root@server1 templates]# cd ../vars/
[root@server1 vars]# vim main.yml #在该文件中定义http_port变量的值
http_port: 8080
[root@server1 vars]# cd ../handlers/
[root@server1 handlers]# vim main.yml
- name: restart httpd
service: name=httpd state=restarted
[root@server2 ~]# scp /etc/httpd/conf.d/zabbix.conf server1:/etc/ansible/roles/apache/files #将zabbix.conf文件发送到server1端的/etc/ansible/roles/apache/files目录下
[root@server1 ~]# cd /etc/ansible/roles/apache/files/
[root@server1 files]# ls
zabbix.conf
[root@server1 files]# vim zabbix.conf #修改时区
20 php_value date.timezone Asia/Shanghai
5、php目录
[root@server1 handlers]# cd /etc/ansible/roles/
[root@server1 roles]# ls
apache mariadb zabbix-server
[root@server1 roles]# mkdir php/{defaults,files,handlers,meta,tasks,templates,vars} -p
[root@server1 roles]# cd php/tasks/
[root@server1 tasks]# vim main.yml
- name: install php
yum: name=php,php-mysql state=present
6、.yml文件的编写
[root@server1 ansible]# ls
ansible.cfg hosts index.html playbooks roles zabbix-server.retry zabbix-server.yml
[root@server1 ansible]# vim lamp.yml
---
#lamp+zabbix-server部署
- hosts: server2
roles:
- mariadb
- zabbix-server
- apache
- php
7、测试
[root@server1 ansible]# ansible-playbook lamp.yml --syntax-check
[root@server1 ansible]# ansible-playbook lamp.yml -C
[root@server1 ansible]# ansible-playbook lamp.yml
- 在server2端查看zabbix-server(10051),zabbix-agent(10050),mariadb(3306),httpd(8080),的监听端口是否存在,及php和php-fpm是否已经安装
- 在浏览器访问172.25.83.2:8080/zabbix
在配置过程中出现的问题,在执行推送时报下面的错误。产生该错误的原因是,zabbix数据库已经导进去了,重复导入,会报下面的错。
解决办法:在minion端(server2)删除mariadb-server软件——yum remove mariadb-server -y;并删除/var/lib/mysql中的数据——rm -rf /var/lib/mysql。其中如果不删除/var/lib/mysql中的内容,当重新下载mariadb-server之后,会发现数据库中仍然有zabbix数据库,该zabbix数据库来源于/var/lib/mysql中的数据。