微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Centos6.5利用RubyGems的fpm制作zabbix_agent的rpm包,并使用ansible批量部署

一、 搭建rpm包制作环境

安装gcc

[root@lvs1~]#yuminstallgcc

安装make

[root@lvs1~]#yuminstallmake

安装ruby源(ruby版本必须要在以上,centos自带的是的版本,需要自己编译安装)

[root@lvs1~]#yuminstallrubyrubygemsruby-devel

查看ruby源

[root@lvs1~]#gemsourcelist

添加国内源

[root@lvs1~]#gemsources-a/

移除国外源

[root@lvs1~]#gemsources-r/

再次查看ruby源

 升级ruby版本到最新

[root@lvs1~]#gemupdate--system

安装fpm

[root@lvs1zlib]#geminstallfpm

二、编译安装到本地

编译安装到本地

[root@lvs1~]#tar-xzvfzabbix-
[root@lvs1zabbix-]#cdzabbix-
[root@lvs1zabbix-]#./configure--prefix=/opt/zabbix--sysconfdir=/opt/zabbix--enable-agent--disable-server--disable-proxy
#--prefix为安装目录
#--sysconfdir为配置文件目录
#--enable-agent--disable-server--disable-proxy安装agent不安装server和proxy,因为zabbix官方提供的源码包包含了所有组件,这里我们只需要agent所以不用全部安装
[root@lvs1zabbix-]#makeinstall

修改配置文件

#可以用命令修改
sed-i's/^Server=.*$/Server=/g'/opt/zabbix/zabbix_
sed-i's/^ServerActive=.*$/ServerActive=:10051/g'/opt/zabbix/zabbix_
sed-i's/^LogFile=.*$/LogFile=\/opt\/zabbix\/logs\/zabbix_/g'/opt/zabbix/zabbix_
sed-i"s%^#HostnameItem=.*$%HostnameItem=%g"/opt/zabbix/zabbix_
sed-i"s%^#ListenIP=.*$%ListenIP=%g"/opt/zabbix/zabbix_
sed-i"s%^#ListenPort=.*$%ListenPort=10050%g"/opt/zabbix/zabbix_

#也可以直接修改配置文件
[root@lvs1~]#vim/opt/zabbix/zabbix_
#zabbix_server的地址
Server=
#主动上传给server的地址和端口
ServerActive=:10051
#日志位置
LogFile=/opt/zabbix/logs/zabbix_
#主机名取系统主机名
HostnameItem=
#监听端口
ListenPort=10050
#监听地址
ListenIP=

复制编译包中对应系统的启动脚本到安装目录下

[root@lvs1core]#cp-a/root/zabbix-/misc//fedora/core/zabbix_agentd/opt/zabbix/

修改启动脚本中安装目录的位置

[root@lvs1zabbix]#vim/opt/zabbix/zabbix_agentd
BASEDIR=/opt/zabbix

三、创建安装后脚本和卸载后脚本

创建安装后执行脚本,在文件安装到本地后会做一些初始化操作

[root@lvs1~]#vim/opt/install_
#!/bin/bash
#创建对应的用户和组以及日志目录,并给安装目录对应的权限
groupaddzabbix
useradd-gzabbixzabbix
chownzabbix:zabbix/opt/zabbix
mkdir-p/opt/zabbix/logs
chownzabbix:zabbix/opt/zabbix/logs
#这里把刚才复制的启动脚本链接到系统目录中
ln-s/opt/zabbix/zabbix_agentd/etc//zabbix_agentd
#判断是否有多个网段的ip,因本人所在公司网络环境负责存在多网卡多ip情况,为防止出现问题,所以此脚本会把单网卡主机的监听ip改为本机,如果存在多个网卡是网段则依然使用
ifip=$(ifconfig|sed-n'/inetaddr/s/^[^:]*:\([0-9.]\{7,15\}\).*/\1/p'|grep'.')
ifwc=$(ifconfig|sed-n'/inetaddr/s/^[^:]*:\([0-9.]\{7,15\}\).*/\1/p'|grep'.'|wc-l)
if[$ifwc-gt1];then
echo$ifip
elif[$ifwc-eq1];then
sed-i"s%^ListenIP=%ListenIP=$ifip%g"/opt/zabbix/zabbix_
fi
#启动agent
servicezabbix_agentdstart
#添加开机启动
chkconfig--addzabbix_agentd
chkconfig--level35zabbix_agentdon
#添加iptables规则,允许对应端口通信,并保存规则
iptables-IINPUT-mstate--statenew-mtcp-ptcp--dport10050-jACCEPT
iptables-IINPUT-mstate--statenew-mtcp-ptcp--dport10051-jACCEPT
/etc//iptablessave
exit0

创建卸载后清理脚本,会清理安装目录和前面安装脚本添加的一些设置

[root@lvs1~]#vim/opt/remove_
#!/bin/bash
servicezabbix_agentdstop
rm-rf/opt/zabbix
rm-f/etc//zabbix_agentd
userdel-rzabbix
groupdelzabbix
chkconfig--delzabbix_agentd
chkconfig--level35zabbix_agentdoff
exit0

整个rpm包安装后的目录结构

opt
├──install_
├──remove_
└──zabbix
├──bin
│├──zabbix_get
│└──zabbix_sender
├──lib
├──logs
│└──zabbix_
├──sbin
│└──zabbix_agentd
├──share
│└──man
│├──man1
││├──zabbix_
││└──zabbix_
│└──man8
│└──zabbix_
├──zabbix_agentd
├──zabbix_
└──zabbix_

四、制作RPM包

[root@lvs1~]#fpm-sdir-trpm-nzabbix_agentd-v-C/-p/root/--post-install/opt/install_--post-uninstall/opt/remove_--no-rpm-sign/opt

-s:指定源类型
-t:指定目标类型,即想要制作为什么包
-n:指定包的名字
-v:指定包的版本号
-C:指定打包的相对路径
-d:指定依赖于哪些包
-f:第二次包时目录下如果有同名安装包存在,则覆盖它
-p:输出的安装包的目录,不想放在当前目录下就需要指定
--post-install:软件包安装完成之后所要运行的脚本;同--offer-install
--pre-install:软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall:软件包卸载完成之后所要运行的脚本;同--offer-remove
--pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove

注意:-C是相对目录,--no-rpm-sign才是安装目录

例如:-C / --no-rpm-sign /opt 则安装到/opt中, 再如:-C /tmp --no-rpm-sign /zabbix 则安装到/tmp/zabbix中

五、使用ansible批量部署

在hosts文件中加入分组和分组内主机,因为我公司没用密钥,所以这里我直接将账号密码写入了文件中,sudo的密码也写入了文件中,利用sudo切换到root权限,当然以下密码都是我乱写的。

root@lv:~#vim/etc/ansible/hosts
[lvs]
ansible_ssh_user=abcansible_ssh_password=!@#qweansible_sudo_pass=!@#qwe

用ifconfig命令测试下是否能正常使用,这里解释下-k命令,因为我公司sudo命令后是要输密码的,所以这里加了-k

root@lv:~#ansiblelvs-s-k-mcommand-a'ifconfig'

将制作好的rpm复制给lvs组所有成员主机

root@lv:~#ansiblelvs-s-k-mcopy-a'src=/root/zabbix_agentd--_dest=/root/'

给所有主机上的rpm包执行权限,其实不给也没影响

root@lv:~#ansiblelvs-s-k-mcommand-a'chmod+x/root/zabbix_agentd--_'

安装rpm包,因为我们设置的安装完启动,所以这部完成后就大功告成了

root@lv:~#ansiblelvs-s-k-mcommand-a'rpm-ivh/root/zabbix_agentd--_'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。