ansible实现zabbix server、zabbix agent及proxy部署;

本实验在centos7.2

本实验仅供参考

可以通过修改/etc/ansible/hosts 和 /etc/ansible/roles/zabbix/vars/main.yaml 文件实现各种方式的部署

blob.png

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

blob.png

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' ]

blob.png

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 }}"

blob.png

blob.png

blob.png

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

blob.png

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

blob.png

6,修改zabbix_server 配置文件

vim templates/zabbix_server.conf.j2

blob.png

blob.png

7,修改zabbix_proxy 配置文件

vim templates/zabbix_proxy.conf.j2

blob.png

blob.png

8,修改zabbix_agent 配置文件

vim templates/zabbix_agentd.conf.j2

blob.png

blob.png

  • ansible实现zabbix server、zabbix agent及proxy部署;已关闭评论
  • 3,586 views
    A+
发布日期:2016年11月07日  所属分类:运维工具
标签: