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

一、 搭建rpm包制作環境

安裝gcc

[root@lvs1 ~]# yum install gcc

安裝make

[root@lvs1 ~]# yum install make

安裝ruby源(ruby版本必須要在1.9.3以上,centos自帶的是1.8的版本,需要自己編譯安裝)

[root@lvs1 ~]# yum install ruby rubygems ruby-devel

查看ruby源

[root@lvs1 ~]# gem source list

添加國內源

[root@lvs1 ~]# gem sources -a https://ruby.taobao.org/

移除國外源

[root@lvs1 ~]# gem sources -r http://rubygems.org/

再次查看ruby源

[root@lvs1 ~]# gem source list

升級ruby版本到最新

[root@lvs1 ~]# gem update --system

安裝fpm

[root@lvs1 zlib]# gem install fpm

二、編譯安裝到本地

編譯安裝到本地

[root@lvs1 ~]# tar -xzvf zabbix-3.0.4.gz
[root@lvs1 zabbix-3.0.4]# cd zabbix-3.0.4
[root@lvs1 zabbix-3.0.4]# ./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@lvs1 zabbix-3.0.4]# make install

修改配置文件

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

#也可以直接修改配置文件
[root@lvs1 ~]# vim /opt/zabbix/zabbix_agentd.conf
#zabbix_server的地址
Server=192.168.13.45
#主動上傳給server的地址和端口
ServerActive=192.168.13.45:10051
#日志位置
LogFile=/opt/zabbix/logs/zabbix_agentd.log
#主機名取系統主機名
HostnameItem=system.hostname
#監聽端口
ListenPort=10050
#監聽地址
ListenIP=0.0.0.0

復制編譯包中對應系統的啟動腳本到安裝目錄下

[root@lvs1 core]# cp -a /root/zabbix-3.0.4/misc/init.d/fedora/core/zabbix_agentd /opt/zabbix/

修改啟動腳本中安裝目錄的位置

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

三、創建安裝后腳本和卸載后腳本

創建安裝后執行腳本,在文件安裝到本地后會做一些初始化操作

[root@lvs1 ~]# vim /opt/install_after.sh
#!/bin/bash
#創建對應的用戶和組以及日志目錄,并給安裝目錄對應的權限
groupadd zabbix
useradd -g zabbix zabbix
chown zabbix:zabbix /opt/zabbix
mkdir -p /opt/zabbix/logs
chown zabbix:zabbix /opt/zabbix/logs
#這里把剛才復制的啟動腳本鏈接到系統目錄中
ln -s /opt/zabbix/zabbix_agentd /etc/init.d/zabbix_agentd
#判斷是否有多個192.168網段的ip,因本人所在公司網絡環境負責存在多網卡多ip情況,為防止出現問題,所以此腳本會把單網卡主機的監聽ip改為本機,如果存在多個網卡是192.168網段則依然使用0.0.0.0
ifip=$(ifconfig|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\).*/\1/p' | grep '192.168.')
ifwc=$(ifconfig|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\).*/\1/p' | grep '192.168.'|wc -l)
if [ $ifwc -gt 1 ];then
    echo $ifip
elif [ $ifwc -eq 1 ];then
    sed -i "s%^ListenIP=0.0.0.0%ListenIP=$ifip%g" /opt/zabbix/zabbix_agentd.conf
fi
#啟動agent
service zabbix_agentd start
#添加開機啟動
chkconfig --add zabbix_agentd
chkconfig --level 35 zabbix_agentd on
#添加iptables規則,允許對應端口通信,并保存規則
iptables -I INPUT -m state --state new -m tcp -p tcp --dport 10050 -j ACCEPT
iptables -I INPUT -m state --state new -m tcp -p tcp --dport 10051 -j ACCEPT
/etc/init.d/iptables save
exit 0

創建卸載后清理腳本,會清理安裝目錄和前面安裝腳本添加的一些設置

[root@lvs1 ~]# vim /opt/remove_after.sh
#!/bin/bash
service zabbix_agentd stop
rm -rf /opt/zabbix
rm -f /etc/init.d/zabbix_agentd
userdel -r zabbix
groupdel zabbix
chkconfig --del zabbix_agentd
chkconfig --level 35 zabbix_agentd off
exit 0

整個rpm包安裝后的目錄結構

opt
├── install_after.sh
├── remove_after.sh
└── zabbix
    ├── bin
    │   ├── zabbix_get
    │   └── zabbix_sender
    ├── lib
    ├── logs
    │   └── zabbix_agentd.log
    ├── sbin
    │   └── zabbix_agentd
    ├── share
    │   └── man
    │       ├── man1
    │       │   ├── zabbix_get.1
    │       │   └── zabbix_sender.1
    │       └── man8
    │           └── zabbix_agentd.8
    ├── zabbix_agentd
    ├── zabbix_agentd.conf
    └── zabbix_agentd.conf.d

四、制作RPM包

[root@lvs1 ~]# fpm -s dir -t rpm -n zabbix_agentd -v 3.0.4 -C / -p /root/ --post-install /opt/install_after.sh --post-uninstall /opt/remove_after.sh --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]
192.168.80.138 ansible_ssh_user=abc ansible_ssh_password=!@#qwe ansible_sudo_pass=!@#qwe

用ifconfig命令測試下是否能正常使用,這里解釋下-k命令,因為我公司sudo命令后是要輸密碼的,所以這里加了-k

root@lv:~# ansible lvs -s -k -m command -a 'ifconfig'

將制作好的rpm復制給lvs組所有成員主機

root@lv:~# ansible lvs -s -k -m copy -a 'src=/root/zabbix_agentd-3.0.4-1.x86_64.rpm dest=/root/'

給所有主機上的rpm包執行權限,其實不給也沒影響

root@lv:~# ansible lvs -s -k -m command -a 'chmod +x /root/zabbix_agentd-3.0.4-1.x86_64.rpm'

安裝rpm包,因為我們設置的安裝完啟動,所以這部完成后就大功告成了

root@lv:~# ansible lvs -s -k -m command -a 'rpm -ivh /root/zabbix_agentd-3.0.4-1.x86_64.rpm'

原創文章,作者:N17_信風,如若轉載,請注明出處:http://www.www58058.com/38110

(0)
N17_信風N17_信風
上一篇 2016-08-20
下一篇 2016-08-21

相關推薦

  • FHS文件系統各目錄功能

    前言 FHS將文件根據不同的用途和特性分成了可共享的(shareable)和不可共享的(unshareable),可變的(variable)和靜態的(static)。不同的文件位于不同的目錄里面,將目錄分開了將有利于對文件的管理。 文件系統 可共享的 文件可以被存儲于某一個主機上,然后供其他主機使用。如果想訪問其他主機上可共享的文件,可以將其他主機目錄掛載到…

    Linux干貨 2016-10-17
  • Linux下inode理解及軟、硬鏈接初探

    1、Inode是什么? 要理解inode,要從文件儲存說起。 文件由元數據和數據構成。 文件儲存在硬盤上,最小的存儲單位叫做“扇區(Sector)”。每個扇區存儲512字節。操作系統讀取硬盤時,不會一個扇區一個扇區地讀取,這樣非常低效;而是一次性連續讀取多個扇區,即一次性讀取一個“塊(block)”?!皦K”由多個扇區組成,常見的大小有1K、2K、4K等,其中…

    Linux干貨 2016-07-29
  • N25期—第一周作業

    1、描述計算機的組成及其功能 計算機五大組成部件:運算器、控制器、存儲器、輸入設備和輸出設備。 運算器和控制器統稱中央處理器(CPU)。  存儲器分成內存儲器和外存儲器兩大類。  外存儲器、輸入設備和輸出設備統稱為外部設備。  中央處理器(CPU)  計算機的中央處理器又稱為CPU,它是計算機的核心部分。主要由運算器和…

    Linux干貨 2016-12-04
  • 搭建屬于自己的DNS

    1、搭建主renzituo.com服務器     ①、在192.168.10.4主機上安裝bind程序             yum -y install bind   &nbs…

    2017-04-16
  • Linux用戶和組的主要配置文件及其相關命令

    Linux用戶和組的主要配置文件: /etc/passwd:用戶及其屬性信息 /etc/shadow用戶密碼及其相關屬性 /etc/group組及其屬性信息 etc/gshadow組密碼及其相關屬性 /etc/passwd 1.用戶名: 2.密碼位:x pwconv (默認) 將密碼映射到了/etc/shadow pwunconv 將密碼保存到/etc/pa…

    2017-07-22
  • linux的終端類型

    Linux系統的終端類型    Linux系統的終端主要包括控制臺終端、控制終端、串口終端、偽終端、虛擬終端。                 1.  控制臺終端(/dev/console)。    在Unix系統中,計…

    Linux干貨 2016-10-19
欧美性久久久久