设为首页 收藏本站
查看: 2188|回复: 0

[经验分享] Ansible-playbook 源码安装 Zabbix_agent

[复制链接]

尚未签到

发表于 2015-12-24 12:12:26 | 显示全部楼层 |阅读模式
·· 先来了解一下目录结构



  • root@Ansible:[/root]# cd /etc/ansible/ ; tree .

  • .
  • ├── ansible.cfg
  • ├── delete_zabbix_agent.yml
  • ├── hosts
  • ├── install_zabbix_agent.yml
  • └── roles
  •     ├── delete_zabbix_agent
  •     │   ├── tasks
  •     │   │   └── main.yml
  •     │   └── vars
  •     │       └── main.yml
  •     └── install_zabbix_agent
  •         ├── files
  •         │   └── zabbix-2.4.5.tar.gz
  •         ├── tasks
  •         │   └── main.yml
  •         ├── templates
  •         │   ├── zabbix_agentd
  •         │   └── zabbix_agentd.conf
  •         └── vars
  •              └── main.yml
## ansible.cfg  此文件为 ansible 的主配置文件
## hosts        用于定义主机组
## roles        定义不同的角色
## install_zabbix_agent.yml  用于安装 zabbix_agent 的引导文件
## delete_zabbix_agent.yml   用于删除已安装的 zabbix_agent 的引导文件




  • └── install_zabbix_agent

  •         ├── files
  •         │   └── zabbix-2.4.5.tar.gz
  •         ├── tasks
  •         │   └── main.yml
  •         ├── templates
  •         │   ├── zabbix_agentd
  •         │   └── zabbix_agentd.conf
  •         └── vars
  •              └── main.yml
## 其中,install_zabbix_agent 为一个角色,用于安装 zabbix_agent

## file      目录:用于存放将要拷贝到远程主机的安装包等
## tasks     目录:将要执行的所有任务,如果比较复杂,可以单独定义不同的任务,最后在 main.yml 文件中引用即可
## templates 目录:模板目录,这里存放着一些可变的文件,即:每台主机上的这些文件中的内容都不完全相同
## vars      目录:用于存放变量

## 这是一个比较简单的结构,其实一个角色中还可以有 meta 、handlers 等

·· 实现 playbook 安装软件需要的步骤

1、定义 hosts( 给哪些主机安装软件 )



  • vim /etc/ansible/hosts

  • [mini]

  • 129.139.153.78:16283
  • 155.139.190.94:12573

2、定义入口文件 install_zabbix_agent.yml



  • vim /etc/ansible/install_zabbix_agent.yml
  • ---
  • - hosts: mini
  •   roles:
  •   - install_zabbix_agent
## 可以看到将要安装的主机组为 mini 组,角色为 install_zabbix_agent

3、定义角色 install_zabbix_agent



  • tree /etc/ansible/roles/install_zabbix_agent/


  • ├── files
  • │    └── zabbix-2.4.5.tar.gz
  • ├── tasks
  • │    └── main.yml
  • ├── templates
  • │    ├── zabbix_agentd
  • │    └── zabbix_agentd.conf
  • └── vars
  •       └── main.yml
## 建立 files     目录,存放编译安装过的 zabbix_agent 目录的压缩文件,用于拷贝到远程主机
## 建立 tasks     目录,用于编写将要执行的任务
## 建立 templates 目录,用于存放可变的模板文件
## 建立 vars      目录,用于存放变量信息



  • cat /etc/ansible/roles/install_zabbix_agent/tasks/main.yml
  • ---
  • - name: Install Software
  •   yum: name={{ item }} state=latest
  •   with_items:
  •     - libcurl-devel
  • - name: Create Zabbix User
  •   user: name={{ zabbix_user }} state=present createhome=no shell=/sbin/nologin
  • - name: Copy Zabbix.tar.gz
  •   copy: src=zabbix-{{ zabbix_version }}.tar.gz dest={{ zabbix_dir }}/src/zabbix-{{ zabbix_version }}.tar.gz owner=root group=root
  • - name: Uncompression Zabbix.tar.gz
  •   shell: tar zxf {{ zabbix_dir }}/src/zabbix-{{ zabbix_version }}.tar.gz -C {{ zabbix_dir }}/
  • - name: Copy Zabbix Start Script
  •   template: src=zabbix_agentd dest=/etc/init.d/zabbix_agentd owner=root group=root mode=0755
  • - name: Copy Zabbix Config File
  •   template: src=zabbix_agentd.conf dest={{ zabbix_dir }}/zabbix/etc/zabbix_agentd.conf owner={{ zabbix_user }} group={{ zabbix_user }} mode=0644
  • - name: Modify Zabbix Dir Permisson
  •   file: path={{ zabbix_dir }}/zabbix owner={{ zabbix_user }} group={{ zabbix_user }} mode=0755 recurse=yes
  • - name: Start Zabbix Service
  •   shell: /etc/init.d/zabbix_agentd start
  • - name: Add Boot Start Zabbix Service
  •   shell: chkconfig --level 35 zabbix_agentd on



  • cat /etc/ansible/roles/install_zabbix_agent/vars/main.yml


  • zabbix_dir: /usr/local
  • zabbix_version: 2.4.5
  • zabbix_user: zabbix
  • zabbix_port: 10050
  • zabbix_server_ip: 131.142.101.120



  • cat /etc/ansible/roles/install_zabbix_agent/templates/zabbix_agentd

  • #!/bin/bash
  • #
  • # chkconfig: - 90 10
  • # description: Starts and stops Zabbix Agent using chkconfig
  • #                               Tested on Fedora Core 2 - 5
  • #                               Should work on all Fedora Core versions
  • #
  • # @name: zabbix_agentd
  • # @author: Alexander Hagenah
  • # @created: 18.04.2006
  • #
  • # Modified for Zabbix 2.0.0
  • # May 2012, Zabbix SIA
  • #
  • # Source function library.
  • . /etc/init.d/functions

  • # Variables
  • # Edit these to match your system settings


  •         # Zabbix-Directory
  •         BASEDIR={{ zabbix_dir }}/zabbix    ## 引用 vars/main.yml 定义的变量


  •         # Binary File
  •         BINARY_NAME=zabbix_agentd


  •         # Full Binary File Call
  •         FULLPATH=$BASEDIR/sbin/$BINARY_NAME


  •         # PID file
  •         PIDFILE=/tmp/$BINARY_NAME.pid


  •         # Establish args
  •         ERROR=0
  •         STOPPING=0

  • #
  • # No need to edit the things below
  • #

  • # application checking status
  • if [ -f $PIDFILE ] && [ -s $PIDFILE ]
  •         then
  •         PID=`cat $PIDFILE`


  •         if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null && [ $BINARY_NAME == `ps -e | grep $PID | awk '{print $4}'` ]
  •         then
  •                 STATUS="$BINARY_NAME (pid `pidof $APP`) running.."
  •                 RUNNING=1
  •         else
  •                 rm -f $PIDFILE
  •                 STATUS="$BINARY_NAME (pid file existed ($PID) and now removed) not running.."
  •                 RUNNING=0
  •         fi
  • else
  •         if [ `ps -e | grep $BINARY_NAME | head -1 | awk '{ print $1 }'` ]
  •                 then
  •                 STATUS="$BINARY_NAME (pid `pidof $APP`, but no pid file) running.."
  •         else
  •                 STATUS="$BINARY_NAME (no pid file) not running"
  •         fi
  •         RUNNING=0
  • fi

  • # functions
  • start() {
  •         if [ $RUNNING -eq 1 ]
  •                 then
  •                 echo "$0 $ARG: $BINARY_NAME (pid $PID) already running"
  •         else
  •                 action $"Starting $BINARY_NAME: " $FULLPATH
  •                 touch /var/lock/subsys/$BINARY_NAME
  •         fi
  • }

  • stop() {
  •         echo -n $"Shutting down $BINARY_NAME: "
  •         killproc $BINARY_NAME
  •         RETVAL=$?
  •         echo
  •         [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$BINARY_NAME
  •         RUNNING=0
  • }

  • # logic
  • case "$1" in
  •         start)
  •                 start
  •                 ;;
  •         stop)
  •                 stop
  •                 ;;
  •         status)
  •                 status $BINARY_NAME
  •                 ;;
  •         restart)
  •                 stop
  •                 sleep 10
  •                 start
  •                 ;;
  •         help|*)
  •                 echo $"Usage: $0 {start|stop|status|restart|help}"
  •                 cat (item=libcurl-devel)

  • TASK: [install_zabbix_agent | Create Zabbix User] *****************************
  • changed: [129.139.153.78]
  • changed: [155.139.190.94]

  • TASK: [install_zabbix_agent | Copy Zabbix.tar.gz] *****************************
  • changed: [129.139.153.78]
  • changed: [155.139.190.94]

  • TASK: [install_zabbix_agent | Uncompression Zabbix.tar.gz] ********************
  • changed: [129.139.153.78]
  • changed: [155.139.190.94]

  • TASK: [install_zabbix_agent | Copy Zabbix Start Script] ***********************
  • changed: [155.139.190.94]
  • changed: [129.139.153.78]

  • TASK: [install_zabbix_agent | Copy Zabbix Config File] ************************
  • changed: [129.139.153.78]
  • changed: [155.139.190.94]

  • TASK: [install_zabbix_agent | Modify Zabbix Dir Permisson] ********************
  • changed: [155.139.190.94]
  • changed: [129.139.153.78]

  • TASK: [install_zabbix_agent | Start Zabbix Service] ***************************
  • changed: [129.139.153.78]
  • changed: [155.139.190.94]

  • TASK: [install_zabbix_agent | Add Boot Start Zabbix Service] ******************
  • changed: [129.139.153.78]
  • changed: [155.139.190.94]

  • PLAY RECAP ********************************************************************
  • 155.139.190.94 : ok=10   changed=9    unreachable=0    failed=0
  • 129.139.153.78 : ok=10   changed=9    unreachable=0    failed=0
## 关注一下,启动脚本跟配置文件中变量的引用。
## 完成安装,可以去客户机检查效果了 !

附上:delete_zabbix_agent.yml 相关内容



  • vim /etc/ansible/delete_zabbix_agent.yml


  • ---
  • - hosts: mini
  •   roles:
  •   - delete_zabbix_agent



  • vim /etc/ansible/roles/delete_zabbix_agent/tasks/main.yml


  • ---
  • - name: Stop Zabbix_agent
  •   shell: pgrep zabbix_agentd | xargs kill
  •   ignore_errors: yes
  • - name: Delete Boot Start
  •   shell: chkconfig --del zabbix_agentd
  • - name: Delete Start Script
  •   shell: rm -rf /etc/init.d/zabbix_agentd
  • - name: Delete Install Dir
  •   shell: rm -rf {{ zabbix_dir }}/zabbix
  • - name: Delete Software
  •   shell: rm -rf {{ zabbix_dir }}/src/zabbix-{{ zabbix_version }}.tar.gz
  • - name: Delete Log File
  •   shell: rm -rf /tmp/zabbix_agentd.log
  • - name: Delete Zabbix User
  •   user: name={{ zabbix_user }} state=absent remove=yes



  • vim /etc/ansible/roles/delete_zabbix_agent/vars/main.yml


  • zabbix_dir: /usr/local
  • zabbix_version: 2.4.5
  • zabbix_user: zabbix

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-155691-1-1.html 上篇帖子: 2015-06-10/2015-06-12监控cacti/nagios/zabbix 下篇帖子: zabbix简介及安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表