使用saltstack批量部署服務器運行環境事例——批量部署nagios客戶端


之前關於搭建web服務器集群實驗的這篇文章http://www.cnblogs.com/cjyfff/p/3553579.html中,關於如何用saltstack批量部署服務器這一點當時沒有記錄到文章中。后來想了想批量部署這一點還是很重要的,畢竟這是自動化運維的一個重要環節。因此這篇文章中記錄了一下saltstack批量部署服務器的過程,以配置nagios客戶端為例,有什么不妥之處請大家指教。

同樣是用下面這幅拓撲圖:

目標:通過saltstack,利用centos5作為saltstack的服務器端,批量在centos1~4四台服務器上部署nagios客戶端的運行環境,也就是在這四台服務器上安裝nagios-plugins、nrpe,上傳相應的腳本以及配置文件。

 

一、前提准備

在centos5上安裝saltstack的master、centos1~4上安裝saltstack的minion,安裝完畢后用sudo salt "*" test.ping測試一下整個saltstack系統是不是正常運行。這個過程我就省略了,網上有不少指引文章的。注意一點是需要在各台服務器的hosts上添加上各個服務器的hostname所對應的地址,另外在服務端上運行salt命令要在前面加上sudo,即使是使用root賬戶登錄,不然部分命令會無法執行。

 

二、實現過程

首先在客戶端添加用戶和組,下面的命令中centos[1-4]意味着同時指定centos1~4四台服務器,在服務器端上執行:

sudo salt "centos[1-4]" cmd.run "groupadd nagios"    
sudo salt "centos[1-4]" cmd.run "useradd -g nagios nagios"

 

然后要把nagios-plugins、nrpe、安裝腳本nagios-plugins-setup.sh,nrpe-setup.sh傳送到4台客戶端的/usr/src目錄。先要修改saltsatack的master配置文件,找到file_roots:字段,把file_roots定義為/srv/salt(默認的配置文件已經定義好了,只需要把#去除即可),之后saltstack就會認定這個目錄作為根目錄。假如minion需要從saltstack的master的根目錄提取文件的話,實際上是提取/srv/salt目錄內的文件。這里我們把有關的安裝文件(nagios-plugins、nrpe、監控腳本、安裝腳本)放置在centos5的/srv/salt/soft目錄,對應的配置文件(nrpe)放在/srv/salt/conf目錄。在實驗中我發現master在傳遞解壓縮命令(tar)給minion執行后,在對應的目錄沒法找到對應解壓后的文件,但saltstack提示解壓是正常完成的,這個問題暫時沒發現解壓方法,因此對於壓縮包,我唯有把安裝包在服務器端上解壓,再把解壓后的文件夾傳給各客戶端(saltstack中用cp.get_dir這個方法傳送文件夾,用cp.get_file來傳送文件):

sudo salt "centos[1-4]" cp.get_dir salt://soft/nagios-plugins-1.5 /usr/src/
sudo salt "centos[1-4]" cp.get_dir salt://soft/nrpe-2.13 /usr/src/
sudo salt "centos[1-4]" cp.get_file salt://soft/nagios-plugins-setup.sh /usr/src/nagios-plugins-setup.sh
sudo salt "centos[1-4]" cp.get_file salt://soft/nrpe-setup.sh /usr/src/nrpe-setup.sh

 

其中nagios-plugins-setup.sh、nrpe-setup.sh這兩個腳本是為了實現nagios-plugins、nrpe自動編譯安裝的,腳本的內容如下:

#!/bin/bash
#nagios-plusings-setup.sh
chmod +x /usr/src/nagios-plugins-1.5/configure
/usr/src/nagios-plugins-1.5/configure --prefix=/usr/local/nagios&&make&&make install&&echo "ok"

#!/bin/bash
#nrpe-setup.sh
chmod +x /usr/src/nrpe-2.13/configure
/usr/src/nrpe-2.13/configure&&make all&&make install-plugin&&make install-daemon&&make install-daemon-config&&echo "ok"

 

先命令客戶端更改這兩個腳本的權限,然后命令客戶端執行這兩個腳本:

sudo salt "centos[1-4]" cmd.run "chmod +x /usr/src/nagios-plusings-setup.sh"
sudo salt "centos[1-4]" cmd.run "/usr/src/nagios-plusings-setup.sh"
sudo salt "centos[1-4]" cmd.run "chmod +x /usr/src/nrpe-setup.sh"
sudo salt "centos[1-4]" cmd.run "/usr/src/nrpe-setup.sh"

 

腳本運行成功后服務器端會顯示“ok”,如下圖:

 

之后是修改客戶端nagios文件夾的權限:

sudo salt "centos[1-4]" cmd.run "chown nagios.nagios /usr/local/nagios"
sudo salt "centos[1-4]" cmd.run "chown -R nagios.nagios /usr/local/nagios/libexec"

 

接着需要把修改好的nrpe配置文件分發到各台客戶端,這里我們不使用上面saltstack自帶的cp.get_file方法,而采用saltstack的配置管理模板來傳送文件。管理模板可以在傳送文件的同時,定義文件的所有者和權限。首先把nrpe的配置文件nrpe.conf復制到/srv/salt/conf,然后在/srv/salt/下創建模板文件nrpe.sls,內容如下:

/usr/local/nagios/etc/nrpe.conf:
  file.managed:
    - source: salt://conf/nrpe.conf
    - mode: 644
    - owner: nagios
    - group: nagios
    - template: jinja

 

這個模板的作用就是,把服務器端saltstack根目錄下的/conf/nrpe.conf傳送到客戶端的/usr/local/nagios/etc/目錄下,並且把傳送過去的文件權限改為644,所屬者改為nagios:nagios。注意模板要遵照YAML語法來編寫。

接着執行這個模板,執行成功后客戶端的對應目錄就會存在nrpe.conf這個文件:

sudo salt "centos[1-4]" state.sls nrpe

 

接下來是傳送監控腳本,同樣是使用saltstack配置文件來傳送,saltstack配置文件支持多個文件一並傳送,以centos1為例,建立script.sls,內容如下:

/usr/local/nagios/libexec/check_no_allowed_user.py:
  file.managed:
    - source: salt://check_no_allowed_user.py
    - mode: 744
    - owner: nagios
    - group: nagios
    - template: jinja

/usr/local/nagios/libexec/check_nginx.sh:
  file.managed:
    - source: salt:check_nginx.sh
    - mode: 744
    - owner: nagios
    - group: nagios
    - template: jinja

 

同樣執行這個配置文件,即可實現文件的傳送:

sudo salt "centos1" state.sls script

 

其他客戶端也是用這種方式來傳送對應的腳本,這里就不再詳述了。
在完成軟件安裝,傳送完相應腳本、配置文件后,啟動客戶端的nrpe進程:

sudo salt "centos[1-4]" cmd.run "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d"

 

之后就可以在nagios的服務器端進一步測試看看是否成功配置各個客戶端的運行環境了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM