续我的博文:https://mp.csdn.net/postedit/88865995。即Ansible已经部署好。
1.selinux和firewalld状态为disabled
2.各主机信息如下:
主机 | ip |
---|---|
server1(ansible的服务端) | 172.25.83.1 |
server2(ansible的服务端) | 172.25.83.2 |
物理机(用来共享zabbix镜像的) | 172.25.83.83/172.25.254.83 |
1、mariadb目录
[root@server1 ~]# cd /etc/ansible/roles/
[root@server1 roles]# ls
[root@server1 roles]# mkdir mariadb #mariadb目录的名字随意给,因为搭建的是mariadb服务,所以这里创建的目录的名字为mariadb
[root@server1 roles]# cd mariadb
[root@server1 mariadb]# mkdir files tasks handlers vars templates meta defaults #一般需要创建这几个目录,分角色存储。这里可能用不到这么多目录,但是为了规范,将这些目录都创建出来。这些目录的名字,就是这些名字,不能随意改
[root@server1 mariadb]# cd files/
[root@server1 files]# cp /etc/my.cnf . #将本机上的/etc/my.cnf文件拷贝到当前目录下,如果本机没有,则从别的安装有mariadb-server或mysql的主机上拷贝
[root@server1 files]# vim my.cnf
1 [mysqld]
2 datadir=/var/lib/mysql
3 socket=/var/lib/mysql/mysql.sock
4 # Disabling symbolic-links is recommended to prevent assorted security risks
5 symbolic-links=0
6 # Settings user and group are ignored when systemd is used.
7 # If you need to run mysqld under a different user or group,
8 # customize your systemd unit file for mariadb according to the
9 # instructions in http://fedoraproject.org/wiki/Systemd
10 character-set-server=utf8 #新增加的内容,设定字符集为utf8字符集
11
12 [mysqld_safe]
13 log-error=/var/log/mariadb/mariadb.log
14 pid-file=/var/run/mariadb/mariadb.pid
15
16 #
17 # include all files from the config directory
18 #
19 !includedir /etc/my.cnf.d
20
[root@server1 files]# cd ../tasks/
[root@server1 tasks]# vim main.yml #main.yml文件的名字是固定的,不要随意改
- name: install mariadb-server
yum: name=mariadb-server,MySQL-python state=present
- name: config mariadb
copy: src=my.cnf dest=/etc/my.cnf
notify: restart mariadb
- name: start mariadb
service: name=mariadb state=started
[root@server1 tasks]# cd ../handlers/
[root@server1 handlers]# vim main.yml
- name: restart mariadb
service: name=mariadb state=restarted
2、配置所需的yum源(下载zabbix-server的软件报好)
#先在物理机上共享zabbix镜像
[root@foundation83 zabbix]# cp -r 4.0/ /var/www/html/
[root@foundation83 html]# ll -d 4.0/
drwx------ 2 root root 4096 Mar 29 01:11 4.0/
[root@foundation83 html]# chmod go+rx 4.0/ #给其他用户增加可读和可执行的权限,否则访问不了
[root@foundation83 html]# ll -d 4.0/
drwxr-xr-x 2 root root 4096 Mar 29 01:11 4.0/
[root@foundation83 html]# createrepo --update /var/www/html/4.0/ #生成4.0目录下需要的repodata目录
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
yum: name=zabbix-server,zabbix-agent state=present
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、.yml文件的编写
[root@server1 handlers]# cd /etc/ansible/
[root@server1 ansible]# vim zabbix-server.yml #该文件的名字随意给,该文件在哪个目录下创建也可以
---
#zabbix-server部署
- hosts: server2
roles:
- mariadb #/etc/ansible/roles目录中创建的mariadb目录
- zabbix-server #/etc/ansible/roles目录中创建的zabbix-server目录
5、测试
[root@server1 ~]# cd /etc/ansible/
[root@server1 ansible]# ls
ansible.cfg hosts index.html playbooks roles zabbix-server.yml
[root@server1 ansible]# ansible-playbook zabbix-server.yml --syntax-check
[root@server1 ansible]# ansible-playbook zabbix-server.yml -C
[root@server1 ansible]# ansible-playbook zabbix-server.yml
从上图中,我们发现没有zabbix-server的监听端口,表示这是错误的,那么到底哪里出错了呢?让我们一起来查看一下zabbix-server的日志
[root@server2 ~]# cat /var/log/zabbix/zabbix_server.log
从图中,我们可以看到,数据库连接失败,让我们一起来排一下错。
从图中分析,我们可以知道数据库zabbix没有创建成功,那到底是为什么?查看一下文件的编写。我们发现,安装完zabbix-server和zabbix-agent之后才会触发创建zabbix数据库的触发器。所以可能是因为,并没有触发触发器。那为什么没有触发触发器呢?原因是可能server2之前安装过zabbix-server和zabbix-agent服务,所以导致没有再重复安装zabbis-server和zabbix-agent服务,进而导致没有触发触发器。那么解决办法就是,删除server2端的zabbix-server和zabbix-agent服务(或者只删除一个,因为只要能触发触发器就可以)。删除之后,再次进行测试。
#在server2端删除zabbix-server和zabbix-agent
[root@server2 ~]# yum remove zabbix-server -y
[root@server2 ~]# yum remove zabbix-agent -y
从上图我们可以看到zabbix-server的监听端口10051,zabbix-agent的监听端口10050和mysql的监听端口3306存在。表示配置成功。
[root@server2 ~]# cat /var/log/zabbix/zabbix_server.log