本实验在centos7.2系统,通过ansible自动化部署
可以通过修改/etc/ansible/hosts 和 /etc/ansible/roles/zabbix/vars/main.yaml 文件实现各种方式的部署
1,修改hosts文件
vim /etc/ansible/hosts
[webs]
192.168.153.129 ansible_ssh_user='root' ansible_ssh_pass='root' # zabbix_server
#192.168.153.130 ansible_ssh_user='root' ansible_ssh_pass='root' # zabbix_proxy
192.168.153.131 ansible_ssh_user='root' ansible_ssh_pass='root' # zabbix_dbhost
#192.168.153.132 ansible_ssh_user='root' ansible_ssh_pass='root' # zabbix_proxy_dbhost
192.168.153.133 ansible_ssh_user='root' ansible_ssh_pass='root' # zabbix_agent
2,编写变量
vim /etc/ansible/roles/zabbix/vars/main.yml
zabbix_server: 192.168.153.129
zabbix_proxy: 192.168.153.130
dbhost: 192.168.153.129
ConfigFrequency: 10
dbname: zabbix
dbuser: zbxuser
dbpass: zbxpass
zbx_proxy_dbhost: 192.168.153.132
zbx_proxy_dbname: zabbix_proxy
zbx_proxy_dbuser: zbx_proxy_user
zbx_proxy_dbpass: zbx_proxy_pass
#zabbix_agent: [ '192.168.153.131','192.168.153.132','192.168.153.133' ]
zabbix_agent: [ '192.168.153.129' ]
3,编写task文件
vim tasks/main.yaml
- name: selinux firewall
shell: setenforce 0; iptables -F; yum install -y psmisc
- name: install zabbinx_server
shell: yum install -y /share/zabbix3.2/zabbix-server-mysql-3.2.1-1.el7.x86_64.rpm /share/zabbix3.2/zabbix-get-3.2.1-1.el7.x86_64.rpm httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml /share/zabbix3.2/zabbix-web-3.2.1-1.el7.noarch.rpm /share/zabbix3.2/zabbix-web-mysql-3.2.1-1.el7.noarch.rpm
with_items: ansible_all_ipv4_addresses
when: item == "{{ zabbix_server }}"
- name: copy config
template: src=zabbix_server.conf.j2 dest=/etc/zabbix/zabbix_server.conf
with_items: ansible_all_ipv4_addresses
when: item == "{{ zabbix_server }}"
- name: start zabbix_server
shell: sed -i "/;date.timezone/adate.timezone = Asia\/Shanghai" /etc/php.ini ; sed -i "/;date.timezone/d" /etc/php.ini ; systemctl start httpd zabbix-server
with_items: ansible_all_ipv4_addresses
when: item == "{{ zabbix_server }}"
- name: install mariadb
shell: yum install mariadb-server -y
with_items: ansible_all_ipv4_addresses
when: item == "{{ dbhost }}"
- name: copy mysql scripts
template: src=mysql.sh.j2 dest=/tmp/mysql.sh
with_items: ansible_all_ipv4_addresses
when: item == "{{ dbhost }}"
- name: start scripts and server
shell: bash /tmp/mysql.sh
with_items: ansible_all_ipv4_addresses
when: item == "{{ dbhost }}"
- name: install zabbix-agent
shell: yum install -y /share/zabbix3.2/zabbix-agent-3.2.1-1.el7.x86_64.rpm /share/zabbix3.2/zabbix-sender-3.2.1-1.el7.x86_64.rpm
with_nested:
- ansible_all_ipv4_addresses
- zabbix_agent
when: item[0] == item[1]
- name: copy zabbix-agent conf
template: src=zabbix_agentd.conf.j2 dest=/etc/zabbix/zabbix_agentd.conf
with_nested:
- ansible_all_ipv4_addresses
- zabbix_agent
when: item[0] == item[1]
- name: start zabbix-agent service
shell: touch /tmp/{{item[0]}};sed -i '/^Hostname=Z/aHostname={{item[0]}}' /etc/zabbix/zabbix_agentd.conf ;sed -i '/^Hostname=Z/d' /etc/zabbix/zabbix_agentd.conf ;systemctl start zabbix-agent
with_nested:
- ansible_all_ipv4_addresses
- zabbix_agent
when: item[0] == item[1]
- name: install zabbinx_proxy_server
shell: yum install /share/zabbix3.2/zabbix-proxy-mysql-3.2.1-1.el7.x86_64.rpm /share/zabbix3.2/zabbix-get-3.2.1-1.el7.x86_64.rpm -y
with_items: ansible_all_ipv4_addresses
when: item == "{{ zabbix_proxy }}"
- name: copy config
template: src=zabbix_proxy.conf.j2 dest=/etc/zabbix/zabbix_proxy.conf
with_items: ansible_all_ipv4_addresses
when: item == "{{ zabbix_proxy }}"
- name: start zabbix_server
shell: systemctl start zabbix-proxy
with_items: ansible_all_ipv4_addresses
when: item == "{{ zabbix_proxy }}"
- name: install proxy mariadb
shell: yum install mariadb-server -y
with_items: ansible_all_ipv4_addresses
when: item == "{{ zbx_proxy_dbhost }}"
- name: copy proxy_mysql scripts
template: src=proxy_mysql.sh.j2 dest=/tmp/proxy_mysql.sh
with_items: ansible_all_ipv4_addresses
when: item == "{{ zbx_proxy_dbhost }}"
- name: start scripts and server
shell: bash /tmp/proxy_mysql.sh
with_items: ansible_all_ipv4_addresses
when: item == "{{ zbx_proxy_dbhost }}"
4,编写mysql.sh.j2文件
vim templates/mysql.sh.j2
#!/bin/bash
sed -i "/mysqld]/adatadir=/mydata/data\ninnodb_file_per_table=ON\nskip_name_resolve=ON" /etc/my.cnf
systemctl start mariadb
rpm -q zabbix-server-mysql || yum install -y /share/zabbix3.2/zabbix-server-mysql-3.2.1-1.el7.x86_64.rpm
mysql -e "create database {{ dbname }};"
mysql -e "grant all on {{ dbname }}.* to '{{ dbuser }}'@'{{ zabbix_server }}' identified by '{{ dbpass }}';"
mysql -e "flush privileges;"
[ -f /usr/share/doc/zabbix-server-mysql-3.2.1/create.sql ] || gzip -d /usr/share/doc/zabbix-server-mysql-3.2.1/create.sql.gz
mysql {{ dbname }} < /usr/share/doc/zabbix-server-mysql-3.2.1/create.sql
killall -0 zabbix_server || yum remove -y zabbix-server
5,编写proxy数据库脚本
vim templates/proxy_mysql.sh.j2
#!/bin/bash
sed -i "/mysqld]/adatadir=/mydata/data\ninnodb_file_per_table=ON\nskip_name_resolve=ON" /etc/my.cnf
systemctl start mariadb
rpm -q zabbix-proxy-mysql || yum install -y /share/zabbix3.2/zabbix-proxy-mysql-3.2.1-1.el7.x86_64.rpm
mysql -e "create database {{ zbx_proxy_dbname }};"
mysql -e "grant all on {{ zbx_proxy_dbname }}.* to '{{ zbx_proxy_dbuser }}'@'{{ zabbix_proxy }}' identified by '{{ zbx_proxy_dbpass }}';"
mysql -e "flush privileges;"
[ if /usr/share/doc/zabbix-proxy-mysql-3.2.1/schema.sql ] || gzip -d /usr/share/doc/zabbix-proxy-mysql-3.2.1/schema.sql.gz
mysql {{ zbx_proxy_dbname }} < /usr/share/doc/zabbix-proxy-mysql-3.2.1/schema.sql
killall -0 zabbix_proxy||yum remove -y zabbix-proxy
6,修改zabbix_server 配置文件
vim templates/zabbix_server.conf.j2
7,修改zabbix_proxy 配置文件
vim templates/zabbix_proxy.conf.j2
8,修改zabbix_agent 配置文件
vim templates/zabbix_agentd.conf.j2