ansible实现zabbix server、zabbix agent及proxy部署;
本实验在centos7.2
本实验仅供参考
可以通过修改/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