ansible 部署zabbix-proyx 联网环境
基础环境介绍
date:2020-7-26
linux 版本:Centos 7 Linux 3.10.0-327.el7.x86_64 x86_64 GNU/Linux
ansible 版本: 2.9.10
mysql 版本: 5.5.65-Mariadb
zabbix-proyx 版本: 4.0
ansible01 : 192.168.66.145
test_client01:192.168.66.146
归档:ansible_zabbix-proxy_4.x_2020-7-26.tar.gz 提取码:liao
配置免秘钥登陆
[root@ansible01 ~]# ssh-keygen # 一路回车
[root@ansible01 ~]# ssh-copy-id root@192.168.66.146
[root@ansible01 ~]# ssh 192.168.66.146
Last login: Sun Jun 28 19:49:07 2020 from 192.168.66.145
[root@test_client01 ~]# logout
Connection to 192.168.66.146 closed.
[root@ansible01 ~]#
配置ansible 的主机清单,并测试
[root@ansible01 ~]# vim /etc/ansible/hosts
[zabbixproxy]
192.168.66.146 mariadb_root_password=Root@123 mariadb_zabbix_password=Zabbix@123 zabbix_server_ip=192.168.66.145 zabbix_proxy_name=1
[root@ansible01 ~]# ansible -m command -a 'hostname' 'zabbixproxy'
192.168.66.146 | CHANGED | rc=0 >>
test_client01
创建所需的目录结构,并准备相应文件
a. 创建目录关系
[root@ansible01 ~]# mkdir -pv /etc/ansible/zabbixproxy/roles/{pre,mariadb,proxy}/{tasks,files,templates,vars,meta,default,handlers}
b. 创建site.yml 入口yml 文件
[root@ansible01 zabbixproxy]# touch /etc/ansible/zabbixproxy/roles/site.yml
c. 准备mariadb 配置文件 copy 至/etc/ansible/zabbixproxy/roles/mariadb/files/my.cnf
……
datadir=/data/mariadb
……
d. 准备zabbix-proxy 配置文件copy至 /etc/ansible/zabbixproxy/roles/proxy/templates/zabbix-proxy.conf.j2
……
Server={{zabbix_server_ip}}
Hostname={{zabbix_proxy_name}}
DBName=zabbix_proxy
DBUser=zabbix
DBPassword={{mariadb_zabbix_password}}
……
配置pre模块
[root@ansible01 zabbixproxy]# vim roles/pre/tasks/main.yml
- name: stop selinux # 关闭selinux
shell: setenforce 0
ignore_errors: yes
- name: close selinux startup # 设置启动关闭selinux
replace:
path: /etc/selinux/config
regexp: 'SELINUX=enforcing'
replace: 'SELINUX=disabled'
- name: open mariadb and proxy port # 防火墙打开服务所需端口
shell: firewall-cmd --add-port=3306/tcp --add-port=10051/tcp --permanent
- name: flush firewalld # 重载防火墙
shell: firewall-cmd --reload
配置mariadb 模块
[root@ansible01 zabbixproxy]# vim roles/mariadb/tasks/main.yml
- name: install mariadb-server # 安装mariadb-server
yum:
name: mariadb-server
state: latest
- name: mkdir data # 创建数据库的数据目录
shell: mkdir -p /data/mariadb
- name: back config file
shell: mv /etc/my.cnf /etc/my.cnf.bak
ignore_errors: yes
- name: provide config file # 提供事先准备好的数据库配置文件
copy: src=my.cnf dest=/etc/my.cnf
- name: change datadir owner # 修改目录和配置文件的权限
shell: chown -R mysql:mysql /data/mariadb /etc/my.cnf
- name: start and startup mariabd # 启动并开机启动
service:
name: mariadb
enabled: yes
state: started
- name: set mariadb root password # 设置数据库的root密码
shell: mysqladmin -u root password {{ mariadb_root_password }}
ignore_errors: yes
配置proyx 模块
[root@ansible01 zabbixproxy]# vim roles/proxy/tasks/main.yml
- name: install zabbix-release
yum:
name: https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
state: present
# 网络不好的时候会执行失败,所以建议多执行几遍
- name: yum install zabbix-proxy-mysql
yum:
name: zabbix-proxy-mysql
state: present
ignore_errors: yes
- name: yum install zabbix-proxy-mysql
yum:
name: zabbix-proxy-mysql
state: present
ignore_errors: yes
- name: yum install zabbix-proxy-mysql
yum:
name: zabbix-proxy-mysql
state: present
ignore_errors: yes
- name: yum install zabbix-proxy-mysql
yum:
name: zabbix-proxy-mysql
state: present
ignore_errors: yes
- name: yum install zabbix-proxy-mysql
yum:
name: zabbix-proxy-mysql
state: present
ignore_errors: yes
- name: mariadb create zabbix_proxy db
shell: mysql -uroot -p{{ mariadb_root_password }} -e 'create database zabbix_proxy character set utf8 collate utf8_bin;'
ignore_errors: yes
- name: mariadb create zabbix user
shell: mysql -uroot -p{{ mariadb_root_password }} -e 'grant all privileges on zabbix_proxy.* to zabbix@localhost identified by "{{ mariadb_zabbix_password }}" ;'
ignore_errors: yes
- name: flush mariadb privileges
shell: mysql -uroot -p{{ mariadb_root_password }} -e 'flush privileges;'
ignore_errors: yes
- name: import zabbix-proxy sql
shell: zcat /usr/share/doc/zabbix-proxy-mysql-*/schema.sql.gz | mysql -uzabbix -p{{mariadb_zabbix_password}} zabbix_proxy;
ignore_errors: yes
- name: bake config file
shell: mv /etc/zabbix/zabbix_proxy.conf /etc/zabbix/zabbix_proxy.conf.bak
ignore_errors: yes
- name: provide config file
template: src=zabbix_proxy.conf.j2 dest=/etc/zabbix/zabbix_proxy.conf group=zabbix
ignore_errors: yes
- name: start and startup zabbix-proyx
service:
name: zabbix-proxy
enabled: yes
state: started
配置site.yml
- name: zabbix-proxy build
hosts: zabbixproxy
roles:
- pre
- mariadb
- proxy
完整的目录结构
[root@ansible01 zabbixproxy]# tree /etc/ansible/zabbixproxy/
/etc/ansible/zabbixproxy/
└── roles
├── mariadb
│ ├── default
│ ├── files
│ │ └── my.cnf
│ ├── handlers
│ ├── main.yml
│ ├── meta
│ ├── tasks
│ │ └── main.yml
│ ├── templates
│ └── vars
├── pre
│ ├── default
│ ├── files
│ ├── handlers
│ ├── meta
│ ├── tasks
│ │ └── main.yml
│ ├── templates
│ └── vars
├── proxy
│ ├── default
│ ├── files
│ ├── handlers
│ ├── meta
│ ├── tasks
│ │ └── main.yml
│ ├── templates
│ │ └── zabbix_proxy.conf.j2
│ └── vars
└── site.yml
测试部署
[root@ansible01 roles]# ansible-playbook /etc/ansible/zabbixproxy/roles/site.yml