Ansible部署Zabbix监控工具

[root@localhost roles]# pwd

成都创新互联公司主要从事成都网站建设、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务乌拉特中,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220

/etc/ansible/roles

[root@localhost roles]# ls

ansible_zabbix.tar.gz  zabbix

[root@localhost roles]# ll zabbix/

总用量 16

drwxr-xr-x. 2 root root 4096 5月  25 17:15 group_vars

drwxr-xr-x. 8 root root 4096 5月  26 17:25 roles

-rw-r--r--. 1 root root   14 5月  27 11:05 zabbix.retry

-rw-r--r--. 1 root root  140 5月  27 15:29 zabbix.yaml

.角色与包含 

├── ansible_zabbix.tar.gz

└── zabbix

    ├── group_vars

    │?? └── zabbix

    ├── roles

    │?? ├── java

    │?? │?? ├── files

    │?? │?? │?? ├── java.sh

    │?? │?? │?? └── jdk-8u101-linux-x64.tar.gz

    │?? │?? ├── handlers

    │?? │?? │?? └── main.yml

    │?? │?? └── tasks

    │?? │??     └── main.yml

    │?? ├── MySQL

    │?? │?? ├── files

    │?? │?? │?? ├── cmake-2.8.10.2.tar.gz

    │?? │?? │?? └── mysql-5.6.24.tar.gz

    │?? │?? ├── handlers

    │?? │?? │?? └── main.yml

    │?? │?? └── tasks

    │?? │??     └── main.yml

    │?? ├── nginx

    │?? │?? ├── files

    │?? │?? │?? ├── nginx

    │?? │?? │?? ├── nginx-1.10.2.tar.gz

    │?? │?? │?? ├── openssl-1.0.2f.tar.gz

    │?? │?? │?? ├── pcre-8.38.tar.gz

    │?? │?? │?? └── zlib-1.2.8.tar.gz

    │?? │?? ├── handlers

    │?? │?? │?? └── main.yml

    │?? │?? ├── tasks

    │?? │?? │?? └── main.yml

    │?? │?? └── templates

    │?? │??     └── nginx.conf.j2

    │?? ├── php

    │?? │?? ├── files

    │?? │?? │?? ├── index.php

    │?? │?? │?? ├── libiconv-1.13.1.tar.gz

    │?? │?? │?? ├── libmcrypt-2.5.8.tar.gz

    │?? │?? │?? ├── Makefile

    │?? │?? │?? ├── mhash-0.9.9.9.tar.gz

    │?? │?? │?? ├── php-5.6.29.tar.gz

    │?? │?? │?? ├── php-fpm

    │?? │?? │?? ├── php-fpm.conf

    │?? │?? │?? ├── php.ini

    │?? │?? │?? └── testdb.php

    │?? │?? ├── handlers

    │?? │?? │?? └── main.yml

    │?? │?? └── tasks

    │?? │??     └── main.yml

    │?? ├── yum

    │?? │?? ├── files

    │?? │?? │?? └── CentOS-Base.repo

    │?? │?? └── tasks

    │?? │??     └── main.yml

    │?? └── zabbix_server

    │??     ├── files

    │??     │?? ├── zabbix

    │      │  ├── zabbix-3.0.4.tar.gz

    │      │  ├── zabbix_agentd

    │      │  ├── zabbix_server

    │      │  └── zabbix_server.conf

    │      ├── handlers

    │      │   └── main.yml

    │      ├── tasks

    │      │   └── main.yml

    │      └── templates

    │           └── zabbix_agentd.conf.j2

    ├── zabbix.retry

    └── zabbix.yaml

定义变量

[root@localhost roles]# cd zabbix/

[root@localhost zabbix]# cat group_vars/zabbix 

java_path: /etc/ansible/roles/zabbix/roles/java/files/

nginx_path: /etc/ansible/roles/zabbix/roles/nginx/files/

mysql_path: /etc/ansible/roles/zabbix/roles/mysql/files/

php_path: /etc/ansible/roles/zabbix/roles/php/files/

zabbix_server_path: /etc/ansible/roles/zabbix/roles/zabbix_server/files/

zabbix_agent_path: /etc/ansible/roles/zabbix/roles/zabbix_agent/files/

dest_path: /usr/local/src/

主yaml文件

[root@localhost zabbix]# cat zabbix.yaml 

---

- hosts: zabbix

  roles:

    - role: yum

    - role: java

    - role: nginx

    - role: mysql

    - role: php

    - role: zabbix_server

role里面的文件内容

[root@localhost roles]# pwd

/etc/ansible/roles/zabbix/roles

[root@localhost roles]# ll

总用量 24

drwxr-xr-x. 5 root root 4096 5月  23 18:14 java

drwxr-xr-x. 5 root root 4096 5月  23 11:46 mysql

drwxr-xr-x. 6 root root 4096 5月  25 21:39 nginx

drwxr-xr-x. 5 root root 4096 5月  24 10:25 php

drwxr-xr-x. 4 root root 4096 5月  19 05:32 yum

drwxr-xr-x. 6 root root 4096 5月  27 16:06 zabbix_server 

Yum部署

[root@localhost yum]# pwd

/etc/ansible/roles/zabbix/roles/yum

[root@localhost yum]# tree

.

├── files

│   └── CentOS-Base.repo

└── tasks

    └── main.yml

2 directories, 2 files

[root@localhost yum]# cat tasks/main.yml 

---

# tasks file for yum

- name: copy the repo 

  copy: src=CentOS-Base.repo dest=/etc/yum.repos.d/CentOS-Base.repo

- name: clean cache

  shell: yum clean all;yum makecache

- name: install software

  yum: name=gcc,gcc-c++,make,zlib-devel,ncurses-devel,libxml2,libxml2-devel,libjpeg-devel,libpng-devel,freetype,openldap-devel,openldap,openssl,openssl-devel,pcre,pcre-devel,curl-devel,freetype-devel,net-snmp-devel,mysql-devel state=latest

Java部署

[root@localhost java]# tree

.

├── files

│   ├── java.sh

│   └── jdk-8u101-linux-x64.tar.gz

├── handlers

│   └── main.yml

└── tasks

    └── main.yml

3 directories, 4 files

root@localhost java]# cat tasks/main.yml 

---

# tasks file for java

- name: jie ya jdk-8u101-linux-x64.tar.gz

  unarchive: src=` java_path `jdk-8u101-linux-x64.tar.gz dest=` dest_path ` copy=yes

- name: move jdk

  shell: mv /usr/local/src/jdk1.8.0_101 /usr/local/jdk

- name: add bianliang

  copy: src=java.sh dest=/etc/profile.d/

  #lineinfile: dest=/etc/profile line=` item `

  #with_items:

  #  - export JRE_HOME=/usr/local/jdk

  #  - export JAVA_BIN=/usr/local/jdk/bin

  #  - export PATH=$JRE_HOME/bin:$PATH

  #  - export CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar

  #  - export JRE_HOME JAVA_BIN PATH CLASSPATH

- name: source profile

  shell: source /etc/profile.d/java.sh

#  notify:

#    - add bianliang

#    - source profile

[root@localhost java]# cat handlers/main.yml 

---

# handlers file for java

- name: add bianliang

  lineinfile: dest=/etc/profile line=` item `

  with_items:

    - export JRE_HOME=/usr/local/jdk

    - export JAVA_BIN=/usr/local/jdk/bin

    - export PATH=$JRE_HOME/bin:$PATH

    - export CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar

    - export JRE_HOME JAVA_BIN PATH CLASSPATH

- name: source profile

  shell: source /etc/profile

Nginx部署

[root@localhost nginx]# tree

.

├── files

│   ├── nginx

│   ├── nginx-1.10.2.tar.gz

│   ├── openssl-1.0.2f.tar.gz

│   ├── pcre-8.38.tar.gz

│   └── zlib-1.2.8.tar.gz

├── handlers

│   └── main.yml

├── tasks

│   └── main.yml

└── templates

    └── nginx.conf.j2

4 directories, 8 files

[root@localhost nginx]#

[root@localhost tasks]# pwd

/etc/ansible/roles/zabbix/roles/nginx/tasks

[root@localhost tasks]# cat main.yml 

---

- name: useradd www

  user: name=www shell=/sbin/nologin createhome=no

- name: openssl-1.0.2f.tar.gz package

  unarchive: src=` nginx_path `openssl-1.0.2f.tar.gz dest=` dest_path ` copy=yes

- name: pcre-8.38.tar.gz package

  unarchive: src=` nginx_path `pcre-8.38.tar.gz dest=` dest_path ` copy=yes

- name: zlib-1.2.8.tar.gz

  unarchive: src=` nginx_path `zlib-1.2.8.tar.gz dest=` dest_path ` copy=yes

- name: nginx-1.10.2.tar.gz package

  unarchive: src=` nginx_path `nginx-1.10.2.tar.gz dest=` dest_path ` copy=yes

- name: nginx config

  shell: cd ` dest_path `nginx-1.10.2;./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-threads --with-stream --with-stream_ssl_module --with-http_slice_module --with-mail --with-mail_ssl_module --with-file-aio --with-http_v2_module --with-ipv6 --with-pcre=` dest_path `pcre-8.38 --with-zlib=` dest_path `zlib-1.2.8 --with-openssl=` dest_path `openssl-1.0.2f

- name: nginx make and install

  shell: cd ` dest_path `nginx-1.10.2;make;make install

- name: create cache nginx

  file: path=/var/cache/nginx state=directory owner=root group=root mode=0644

- name: copy config file

  template: src=nginx.conf.j2 dest=/usr/local/nginx/nginx.conf owner=root group=root mode=0644

- name: add nginx grant

  shell: cd /usr/local/nginx/;chown -R www:www *

 

- name: copy start file

  copy: src=nginx dest=/etc/init.d/ owner=root group=root mode=0755 backup=yes

  notify: 

    - start nginx service 

  tags: nginx

[root@localhost handlers]# pwd

/etc/ansible/roles/zabbix/roles/nginx/handlers

[root@localhost handlers]# cat main.yml 

---

- name: start nginx service 

  service: name=nginx state=restarted enabled=yes

[root@localhost templates]# pwd

/etc/ansible/roles/zabbix/roles/nginx/templates

[root@localhost templates]# cat nginx.conf.j2 

user www;

worker_processes ` ansible_processor_cores `;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

        listen       80;

        server_name  localhost;

        location / {

            root   html;

            index  index.php index.html index.htm;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

location ~ \.php$ {

            root           html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

            include        fastcgi_params;

        }

    }

}

MySQL部署

[root@localhost mysql]# pwd

/etc/ansible/roles/zabbix/roles/mysql

[root@localhost mysql]# tree

.

├── files

│   ├── cmake-2.8.10.2.tar.gz

│   └── mysql-5.6.24.tar.gz

├── handlers

│   └── main.yml

└── tasks

    └── main.yml

3 directories, 4 files

[root@localhost mysql]# cat tasks/main.yml 

---

# tasks file for mysql

- name: mysql-5.6.24.tar.gz package

  unarchive: src=` mysql_path `mysql-5.6.24.tar.gz dest=` dest_path ` copy=yes

- name: cmake-2.8.10.2.tar.gz package

  unarchive: src=` mysql_path `cmake-2.8.10.2.tar.gz dest=` dest_path ` copy=yes

- name: install camke

  shell: cd ` dest_path `cmake-2.8.10.2;./bootstrap --prefix=/usr/local/cmake;make;make install

- name: add user

  shell: id mysql || useradd -M -s /sbin/nologin mysql

- name: add quanxian

  file: path=/tmp mode=777

- name: bianyi

  shell: cd ` dest_path `mysql-5.6.24;/usr/local/cmake/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysqld.sock -DMYSQL_USER=mysql -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=0

- name: make and make install

  shell: cd ` dest_path `mysql-5.6.24;make;make install

- name: shou quna 

  shell: chown -R mysql:mysql /usr/local/mysql

- name: line

  shell: ln -s /usr/local/mysql/bin/` item ` /usr/sbin/

  with_items:

    - innochecksum

    - msql2mysql

    - myisamchk

    - myisam_ftdump

    - myisamlog

    - myisampack

    - my_print_defaults

    - mysql

    - mysqlaccess

    - mysqlaccess.conf

    - mysqladmin

    - mysqlbinlog

    - mysqlbug

    - mysqlcheck

    - mysql_client_test

    - mysql_client_test_embedded

    - mysql_config

    - mysql_config_editor

    - mysql_convert_table_format

    - mysqld

    - mysqld_multi

    - mysqld_safe

    - mysqldump

    - mysqldumpslow

    - mysql_embedded

    - mysql_find_rows

    - mysql_fix_extensions

    - mysqlhotcopy

    - mysqlimport

    - mysql_plugin

    - mysql_secure_installation

    - mysql_setpermission

    - mysqlshow

    - mysqlslap

    - mysqltest

    - mysqltest_embedded

    - mysql_tzinfo_to_sql

    - mysql_upgrade

    - mysql_waitpid

    - mysql_zap

    - perror

    - replace

    - resolveip

    - resolve_stack_dump

  tags:

    - link

- name: copy mysql start script

  shell: cp ` dest_path `mysql-5.6.24/support-files/mysql.server /etc/init.d/mysqld

- name: insert ld.so.conf

  lineinfile: dest=/etc/ld.so.conf line=/usr/local/mysql/lib/

- name: ldconfig

  shell: ldconfig

- name: chu shi hua 

  shell: /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

- name: copy my.cnf

  shell: rm -rf /etc/my.cnf;mv /usr/local/mysql/my.cnf /etc/

- name: add max_connections

  lineinfile: dest=/etc/my.cnf line="max_connections = 1000"

#- name: insert /var/lib/mysql/mysql.sock

#  lineinfile:  dest=/etc/my.cnf line="socket = /var/lib/mysql/mysql.sock"

#  tags: 

#    - socket

- name: start mysql service

  service: name=mysqld state=restarted enabled=yes

  tags:

    - mysqlstart

- name: set mysql passwd

  shell: /usr/local/mysql/bin/mysqladmin -u root password 'mysql_dbpass'

  tags:

    - mysqlpasswd

[root@localhost mysql]# cat handlers/main.yml 

---

# handlers file for mysql

- name: start mysql service

  service: name=mysqld state=restarted enabled=yes

- name: set mysql passwd

  shell: /usr/local/mysql/bin/mysqladmin -u root password 'mysql_dbpass'

PHP部署

[root@localhost php]# pwd

/etc/ansible/roles/zabbix/roles/php

[root@localhost php]# tree

.

├── files

│   ├── index.php

│   ├── libiconv-1.13.1.tar.gz

│   ├── libmcrypt-2.5.8.tar.gz

│   ├── Makefile

│   ├── mhash-0.9.9.9.tar.gz

│   ├── php-5.6.29.tar.gz

│   ├── php-fpm

│   ├── php-fpm.conf

│   ├── php.ini

│   └── testdb.php

├── handlers

│   └── main.yml

└── tasks

    └── main.yml

3 directories, 12 files

[root@localhost php]# cat tasks/main.yml 

---

# tasks file for php

- name: mhash-0.9.9.9.tar.gz

  unarchive: src=` php_path `mhash-0.9.9.9.tar.gz dest=` dest_path ` copy=yes

- name: libiconv-1.13.1.tar.gz

  unarchive: src=` php_path `libiconv-1.13.1.tar.gz dest=` dest_path ` copy=yes

- name: libmcrypt-2.5.8.tar.gz

  unarchive: src=` php_path `libmcrypt-2.5.8.tar.gz dest=` dest_path ` copy=yes

- name: php-5.6.29.tar.gz

  unarchive: src=` php_path `php-5.6.29.tar.gz dest=` dest_path ` copy=yes

- name: config mhash

  shell: cd ` dest_path `mhash-0.9.9.9;./configure;make;make install

- name: config libiconv

  shell: cd ` dest_path `libiconv-1.13.1;./configure;make;make install

- name: config libmcrypt

  shell: cd ` dest_path `libmcrypt-2.5.8;./configure;make;make install

- name: config libmcrypt-2.5.8/libltdl

  shell: cd ` dest_path `libmcrypt-2.5.8/libltdl/;./configure --with-gmetad --enable-gexec --enable-ltdl-install

- name: libmcrypt make and make install

  shell: cd ` dest_path `libmcrypt-2.5.8/libltdl/;make;make install

- name: line libmcrypt*

  file: src=/usr/local/lib/` item`.`src ` dest=/usr/lib/` item`.`dest ` state=link

  with_items:

    - { src: 'libmcrypt.so.4.4.8', dest: 'libmcrypt.so.4.4.8' }

    - { src: 'libmcrypt.so.4', dest: 'libmcrypt.so.4' }

    - { src: 'libmcrypt.so', dest: 'libmcrypt.so' }

    - { src: 'libmcrypt.la', dest: 'libmcrypt.la' }

    - { src: 'libmcrypt', dest: 'libmcrypt' }

    - { src: 'libmhash.a', dest: 'libmhash.a' }

    - { src: 'libmhash.la', dest: 'libmhash.la' }

    - { src: 'libmhash.so', dest: 'libmhash.so' }

    - { src: 'libmhash.so.2', dest: 'libmhash.so.2' }

    - { src: 'libmhash.so.2.0.1', dest: 'libmhash.so.2.0.1' }

- name: ldconfig

  shell: ldconfig

- name: cp libladp*

  file: src=/usr/lib64/` item`.`src ` dest=/usr/lib/` item`.`dest ` state=link

  with_items:

    - { src: 'libldap-2.4.so.2', dest: 'libldap-2.4.so.2' }

    - { src: 'libldap_r-2.4.so.2', dest: 'libldap_r-2.4.so.2' }

    - { src: 'libldap_r.so', dest: 'libldap_r.so' }

    - { src: 'libldap.so', dest: 'libldap.so' }

- name: config php

  shell: cd ` dest_path `php-5.6.29;./configure  --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-freetype-dir --with-gettext --with-fpm-user=www --with-fpm-group=www

- name: copy Makefile 

  copy: src=Makefile dest=` dest_path `php-5.6.29 owner=root group=root mode=0644 backup=yes

#- name: config Makefile

#  shell: sed -i 's#EXTRA_LIBS = -lcrypt -lz -lcrypt -lrt -lmysqlclient -lmcrypt -lltdl -lldap -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl -lrt -lxml2 -lz -lm -lssl -lcrypto -lcurl -lxml2 -lz -lm -lfreetype -lmysqlclient -lm -lrt -lssl -lcrypto -ldl -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt#EXTRA_LIBS = -lcrypt -lz -lcrypt -lrt -lmysqlclient -lmcrypt -lltdl -lldap -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl -lrt -lxml2 -lz -lm -lssl -lcrypto -lcurl -lxml2 -lz -lm -lfreetype -lmysqlclient -lm -lrt -lssl -lcrypto -ldl -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -liconv#g' ` dest_path `php-5.6.29/Makefile

- name: make ZEND_EXTRA_LIBS='-liconv'

  shell: cd ` dest_path `php-5.6.29;make ZEND_EXTRA_LIBS='-liconv'

- name: make install

  shell: cd ` dest_path `php-5.6.29;make install

- name: copy file php.ini

  copy: src=php.ini dest=/usr/local/php/etc/ owner=root group=root mode=0644 backup=yes

- name: copy file php-fpm.conf

  copy: src=php-fpm.conf dest=/usr/local/php/etc/ owner=root group=root mode=0644 backup=yes

- name: copy php-fpm 

  copy: src=php-fpm dest=/etc/init.d/ owner=root group=root mode=0755 backup=yes

- name: copy file index.php testdb.php 

  copy: src=` item ` dest=/usr/local/nginx/html/ owner=root group=root mode=0644 backup=yes

  with_items:

    - index.php

    - testdb.php

  notify:

    - start php  

[root@localhost php]# cat handlers/main.yml 

---

# handlers file for php

- name: start php

  service: name=php-fpm state=restarted enabled=yes

Zabbix部署

[root@localhost zabbix_server]# pwd

/etc/ansible/roles/zabbix/roles/zabbix_server

[root@localhost zabbix_server]# ls

handlers  tasks  templates

[root@localhost zabbix_server]# tree

├── files

│   ├── zabbix

│   ├── zabbix-3.0.4.tar.gz

│   ├── zabbix_agentd

│   ├── zabbix_server

│   └── zabbix_server.conf

├── handlers

│   └── main.yml

├── tasks

│   └── main.yml

└── templates

    └── zabbix_agentd.conf.j2

[root@localhost zabbix_server]# cat tasks/main.yml 

---

# tasks file for zabbix_server

- name: add usergroup

  group: name=zabbix gid=201 system=yes

  tags:

    - zabbix_1  

- name: add user 

  user: name=zabbix uid=201 group=zabbix

  tags:

    - zabbix_2

- name: unarchive zabbix-3.0.4.tar.gz

  unarchive: src=` zabbix_server_path `zabbix-3.0.4.tar.gz dest=` dest_path ` copy=yes

  tags:

    - zabbix_3

- name: config and make install

  shell: cd ` dest_path `zabbix-3.0.4;./configure --prefix=/usr/local/zabbix --enable-java --enable-server --enable-proxy --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2;make install

  tags:

    - zabbix_4

- name: add zabbix to services

  lineinfile: dest=/etc/services line=` item `

  with_items:

    - "zabbix-agent    10050/tcp               #Zabbix Agent"

    - "zabbix-agent    10050/udp               #Zabbix Agent"

    - "zabbix-server   10051/tcp               #zabbix Trapper"

    - "zabbix-server   10051/udp               #zabbix Trapper"

  tags: 

    - zabbix_4_1

- name: create database user

  shell: mysql -uroot -pmysql_dbpass -e "create database zabbix default character set utf8;"

  tags:

    - zabbix_5

- name: databases shou quan

  shell: mysql -uroot -pmysql_dbpass -e "grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';"

  tags:

    - zabbix_6

- name: flush privileges

  shell: mysql -uroot -pmysql_dbpass -e "flush privileges;"

  tags:

    - zabbix_7

- name: import databases

  shell: cd `dest_path `zabbix-3.0.4/database/mysql;mysql -uzabbix -pzabbix zabbix < schema.sql;mysql -uzabbix -pzabbix zabbix < p_w_picpaths.sql;mysql -uzabbix -pzabbix zabbix < data.sql

  tags:

    - zabbix_8

- name: create zabbix log directory 

  file: path=/data/logs/zabbix/ state=directory owner=zabbix group=zabbix

  tags:

    - zabbix_9

- name: create /etc/ zabbix directory

  file: path=/etc/zabbix/ state=directory

  tags:

    - zabbix_10

- name: create /usr/local/zabbix/etc link

  file: src=/usr/local/zabbix/etc/` item`.`src ` dest=/etc/zabbix/` item`.`dest ` state=link

  with_items:

    - { src: 'zabbix_agentd.conf', dest: 'zabbix_agentd.conf' }

    - { src: 'zabbix_proxy.conf', dest: 'zabbix_proxy.conf' }

    - { src: 'zabbix_server.conf', dest: 'zabbix_server.conf' }

    - { src: 'zabbix_agentd.conf.d', dest: 'zabbix_agentd.conf.d' }

    - { src: 'zabbix_proxy.conf.d', dest: 'zabbix_proxy.conf.d' }

    - { src: 'zabbix_server.conf.d', dest: 'zabbix_server.conf.d' }

  tags:

    - zabbix_11

- name: create /usr/local/zabbix/bin link

  file: src=/usr/local/zabbix/bin/` item`.`src ` dest=/etc/zabbix/` item`.`dest ` state=link

  with_items:

    - { src: 'zabbix_get', dest: 'zabbix_get' }

    - { src: 'zabbix_sender', dest: 'zabbix_sender' }

  tags:

    - zabbix_12

- name: create /usr/local/zabbix/sbin link

  file: src=/usr/local/zabbix/sbin/` item`.`src ` dest=/usr/sbin/` item`.`dest ` state=link

  with_items:

    - { src: 'zabbix_agentd', dest: 'zabbix_agentd' }

    - { src: 'zabbix_java', dest: 'zabbix_java' }

    - { src: 'zabbix_proxy', dest: 'zabbix_proxy' }

    - { src: 'zabbix_server', dest: 'zabbix_server' }

  tags:

    - zabbix_13

- name: copy zabbix start stop script

  copy: src=` item ` dest=/etc/init.d owner=root group=root mode=0755 backup=yes

  with_items:

    - zabbix_server

    - zabbix_agentd

  tags:

    - zabbix_14

- name: copy zabbix_server.conf

  #file: src=` item ` dest=/usr/local/zabbix/etc/ owner=root group=root mode=0644 backup=yes

  synchronize: src=` item ` dest=/usr/local/zabbix/etc/  mode=push

  with_items:

    - zabbix_server.conf

  tags:

    - zabbix_15

- name: copy zabbix_agentd.conf

  template: src=zabbix_agentd.conf.j2 dest=/usr/local/zabbix/etc/zabbix_agentd.conf owner=root group=root mode=0644

  tags:

    - zabbix_16

- name: copy zabbix wangzhan directory

  synchronize: src=zabbix dest=/usr/local/nginx/html/ mode=push

  tags:

    - zabbix_17

#- name: change user

#  file: dest=/usr/local/nginx/html/zabbix owner=www group=www backup=yes

- name: add /usr/local/lib

  lineinfile: dest=/etc/ld.so.conf line=/usr/local/lib

  tags:

    - zabbix_19

#- name: add max_connections

#  lineinfile: dest=/etc/my.cnf line="max_connections = 1000"

- name: ldconfig

  shell: ldconfig;

  tags:

    - zabbix_20

  notify:

    - start zabbix_server

    - start zabbix_agentd

    - stop iptables

    - stop selinux

[root@localhost zabbix_server]# cat handlers/main.yml 

---

# handlers file for zabbix_server

- name: start zabbix_server

  service: name=zabbix_server state=restarted enabled=yes

- name: start zabbix_agentd

  service: name=zabbix_agentd state=restarted enabled=yes

- name: stop iptables

  service: name=iptables state=stopped enabled=no

- name: stop selinux

  shell: setenforce 0

[root@localhost zabbix_server]# cat templates/zabbix_agentd.conf.j2 

EnableRemoteCommands=1

UnsafeUserParameters=1

Server=127.0.0.1,` ansible_eth0`.`ipv4`.`address `

ServerActive=` ansible_eth0`.`ipv4`.`address `:10051

Hostname=` ansible_hostname `

LogFile=/data/logs/zabbix/zabbix_agentd.log

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf

执行Yaml主文件

[root@localhost zabbix]# ls

group_vars  roles  zabbix.retry  zabbix.yaml

[root@localhost zabbix]# pwd

/etc/ansible/roles/zabbix

[root@localhost zabbix]# ansible-playbook zabbix.yaml 



网页名称:Ansible部署Zabbix监控工具
本文来源:http://hbruida.cn/article/jgghpi.html