基于ansible的zabbix源代码安装

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于ansible的zabbix源代码安装相关的知识,希望对你有一定的参考价值。

                             基于ansible的zabbix源代码安装

1、ansible简介

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。我们现在通过ansible来实现zabbix的批量安装。

zabbix我就不多说了,现在是一门比较热的监控软件。

[[email protected] ~]# clear
[[email protected] ~]# cd /usr/local/src/
先安装lrzsz的软件包,然后上传zabbix-3.2.7.tar.gz,zabbix压缩包可在官网下载
[[email protected] src]# rz 
[[email protected] src]# ls
apr-1.6.2          apr-util-1.6.0.tar.gz  httpd-2.4.27.tar.gz  shuzu.sh         while_ping.sh
apr-1.6.2.tar.bz2  a.sh                   nginx-1.12.0         test_hangshu.sh  zabbix-3.2.7.tar.gz
apr-util-1.6.0     httpd-2.4.27           nginx-1.12.0.tar.gz  while_login.sh
[[email protected] src]#

接下来我们是基于ansible自动化源码安装zabbix,所以我们先安装ansible

[[email protected] src]# yum install -y ansible

ansible的应用需要使用ssh-keygen生成私钥和公钥

生成公钥

[[email protected] src]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
c6:4d:7a:b3:dc:96:12:81:a2:44:44:29:24:2f:3a:de [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
|...o+.           |
| o...    .       |
|. ... . . o      |
|.. . . o + .     |
|o   .   S =      |
|...    . o = .   |
| . E      + +    |
|           o     |
|                 |
+-----------------+

生成客户端的密钥

[[email protected] src]# ssh-copy-id 172.25.0.32
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]‘s password: 
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh ‘172.25.0.32‘"
and check to make sure that only the key(s) you wanted were added.

修改ansible的hosts文件,针对指定客户端进行推送

进入hosts文件找到[webservers]把注释去掉,再添加客户端的ip

[[email protected] src]# cat /etc/ansible/hosts
[webservers]
##alpha.example.org
##beta.example.org
## 192.168.1.100
## 192.168.1.110
172.25.0.32

接下来我们开始配置ansible基于jinjia的模板,写个zabbix的基于ansible源代码安装文件

ansible的变量支持类型主要是以下几个

字符串:使用单引号或双引号; 

数字:整数、浮点数;

列表:[item1, item2, ...]

元组:(item1, item2, ...)

字典:{key1:value1, key2:value2, ...}

布尔型:true/false

服务端安装:

编写ansible文件

[[email protected] ~]# cat /etc/ansible/install_zabbix.yaml 
- hosts: webservers
  remote_user: root
  tasks: 
  - name: install packages
    yum: name={{ item }} state=latest
    with_items:                  ###搭建lamp环境,安装环境依赖的包
    - make                              
    - mysql-server                                                         
    - httpd
    - php
    - mysql-devel
    - gcc
    - net-snmp-devel
    - curl-devel
    - perl-DBI
    - php-gd
    - php-mysql
    - php-bcmath
    - php-mbstring
    - php-xml
    - unixODBC-devel
    - OpenIPMI-devel
    - libxml2-devel
  - name: copy zabbix.tar to clien
    copy: src=/usr/local/src/zabbix-3.2.7.tar.gz  dest=/usr/local/src/
  - name: copy install_shell to clien
    copy: src=install_zabbix.sh dest=/tmp/install_zabbix.sh
    notify: install shell
  handlers:
  - name: install shell
    shell: /bin/bash /tmp/install_zabbix.sh


zabbix源代码安装脚本

[[email protected] php]# cat /usr/local/src/install_zabbix.sh
#!/bin/bash
useradd zabbix -s /sbin/nologin
expect -c "
spawn /usr/bin/mysql_secure_installation
expect \"Enter current password for root (enter for none):\"
send \"\r\"
expect \"Set root password?\"
send \"y\r\"
expect \"New password:\"
send \"zabbix\r\"
expect \"Re-enter new password:\"
send \"zabbix\r\"
expect \"Remove anonymous users?\"
send \"y\r\"
expect \"Disallow root login remotely?\"
send \"n\r\"
expect \"Remove test database and access to it?\"
send \"y\r\"
expect \"Reload privilege tables now?\"
send \"y\r\"
expect eof
"
mysql -uroot -pzabbix -e "create database zabbix character set utf8 collate utf8_bin;"
mysql -uroot -pzabbix -e "grant all on zabbix.* to [email protected] identified by ‘zabbix‘;"
mysql -uroot -pzabbix -e "flush privileges;"
cd /usr/local/src/
tar zxvf  zabbix-3.2.7.tar.gz
cd /usr/local/src/zabbix-3.2.7
cd database/mysql/
mysql -uzabbix -pzabbix zabbix < schema.sql
mysql -uzabbix -pzabbix zabbix < images.sql
mysql -uzabbix -pzabbix zabbix < data.sql
./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --prefix=/usr/local/zabbix
make && make install
sed  -i  ‘s/DirectoryIndex index.html index.html.var/DirectoryIndex index.html index.php/g‘ /etc/httpd/conf/httpd.conf
sed  -i  ‘s/# DBPassword=/DBPassword=zabbix/g‘ /usr/local/zabbix/etc/zabbix_server.conf
cp misc/init.d/fedora/core5/zabbix_server /etc/init.d/
cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
sed  -i  ‘s/ZABBIX_BIN="/usr/local/sbin/zabbix_agentd"/ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"/g‘ /etc/init.d/zabbix_agentd
sed  -i  ‘s/ZABBIX_BIN="/usr/local/sbin/zabbix_server"/ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"/g‘ /etc/init.d/zabbix_server
/etc/init.d/zabbix_server start
/etc/init.d/zabbix_agentd start
chkconfig zabbix_agentd on
chkconfig zabbix_server on
sed  -i  ‘s/max_execution_time = 30/max_execution_time = 300/g‘ /etc/php.ini
sed  -i  ‘s/max_input_time = 60/max_input_time = 300/g‘ /etc/php.ini
sed  -i  ‘s/;date.timezone =/date.timezone =Asia/Shanghai/g‘ /etc/php.ini
sed  -i  ‘s/post_max_size = 8M/post_max_size = 32M/g‘ /etc/php.ini
service httpd restart
cd /usr/local/src/zabbix-3.2.7/frontends/
cp -rf php /var/www/html/zabbix
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini --daemonize

###写完了脚本别忘

检测ansible文件,没问题

[[email protected] php]# ansible-playbook -C  /etc/ansible/install_zabbix.yaml 
PLAY [webservers] **************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [172.25.0.32]
TASK [install packages] ********************************************************************************
ok: [172.25.0.32] => (item=[u‘make‘, u‘mysql-server‘, u‘httpd‘, u‘php‘, u‘mysql-devel‘, u‘gcc‘, u‘net-snmp-devel‘, u‘curl-devel‘, u‘perl-DBI‘, u‘php-gd‘, u‘php-mysql‘, u‘php-bcmath‘, u‘php-mbstring‘, u‘php-xml‘, u‘unixODBC-devel‘, u‘OpenIPMI-devel‘, u‘libxml2-devel‘])
TASK [copy zabbix to clien] ****************************************************************************
changed: [172.25.0.32]
TASK [copy install_shell to clien] *********************************************************************
changed: [172.25.0.32]
RUNNING HANDLER [install shell] ************************************************************************
skipping: [172.25.0.32]
PLAY RECAP *********************************************************************************************
172.25.0.32                : ok=4    changed=2    unreachable=0    failed=0

再执行一遍就可以安装了

[[email protected] php]#ansible-playbook  /etc/ansible/install_zabbix.yaml


2、zabbix客户端安装:

ansibleZ在zabbix的应用的比较重要的部分是推送客户端

编写ansible文件

[[email protected] ~]# cat /etc/ansible/install_zabbix.yaml 
- hosts: webservers     ##如果你是大批量安装,把webservers 改成all,不过先添加密钥ssh-keygen+key-copy-id + 客户端ip
  remote_user: root
  tasks: 
  - name: copy zabbix.tar to clien
    copy: src=/usr/local/src/zabbix-3.2.7.tar.gz  dest=/usr/local/src/
  - name: copy install_shell to clien
    copy: src=install_zabbix_client.sh dest=/tmp/install_zabbix_client.sh
    notify: install shell
  handlers:
  - name: install shell
    shell: /bin/bash /tmp/install_zabbix_client.sh


推送给客户端的脚本文件:

[[email protected] ansible]# cat  install_zabbix_client.sh
#!/bin/bash
useradd zabbix -s /sbin/nologin
cd /usr/local/src
tar zxvf  zabbix-3.2.7.tar.gz
cd /usr/local/src/zabbix-3.2.7
./configure --with-net-snmp --with-libcurl --enable-agent --prefix=/usr/local/zabbix
make && make install
cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
sed  -i  ‘s/ZABBIX_BIN="/usr/local/sbin/zabbix_agentd"/ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"/g‘ /etc/init.d/zabbix_agentd
sed -i ‘s/Server=127.0.0.1/Server=172.25.0.29/g‘ /usr/local/zabbix/etc/zabbix_agentd.conf  ##这个ip我写死了172.25.0.29;是你的服务端ip,也可以写成变量
chmod 700 /etc/init.d/zabbix_agentd
sed  -i  ‘s/# UnsafeUserParameters=0/UnsafeUserParameters=1/g‘ /usr/local/zabbix/etc/zabbix_agentd.conf

在应用脚本文件时记得要改脚本的权限,不然就无法执行。

[[email protected] ansible]# chmod a+x install_zabbix_client.sh
[[email protected] php]#  ansible-playbook -C  /etc/ansible/install_zabbix_client.yaml 
PLAY [webservers] **************************************************************************************
TASK [Gathering Facts] *********************************************************************************
ok: [172.25.0.32]
TASK [copy zabbix.tar to clien] ************************************************************************
changed: [172.25.0.32]
TASK [copy install_shell to clien] *********************************************************************
changed: [172.25.0.32]
RUNNING HANDLER [install shell] ************************************************************************
skipping: [172.25.0.32]
PLAY RECAP *********************************************************************************************
172.25.0.32                : ok=3    changed=2    unreachable=0    failed=0

测试没问题后,以后这样就可以实现批量对zabbix客户端安装了


本文出自 “我的运维” 博客,请务必保留此出处http://xiaozhagn.blog.51cto.com/13264135/1975084

以上是关于基于ansible的zabbix源代码安装的主要内容,如果未能解决你的问题,请参考以下文章

ansible部署zabbix客户端

ansible-playbook roles 安装zabbix-agent 监控 php

ansible部署zabbix客户端

zabbix系列之使用ansible批量部署zabbix客户端

ansible 批量安装zabbix agentd客户端

Ansible 部署 Zabbix 客户端