使用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的服务器端进一步测试看看是否成功配置各个客户端的运行环境了。
使用saltstack批量部署服务器运行环境事例——批量部署nagios客户端的更多相关文章
- Linux:Ubuntu下部署Web运行环境
Linux:Ubuntu下部署Web运行环境 本次博客将会从三部分内容详述Ubuntu系统下Web运行环境的配置: 依次是:FTP服务器的搭建.MYSQL数据库的搭建.JDK的安装等. 参考文章如下: ...
- 腾讯云上面部署PHP运行环境
现在云服务器已经很普及了,其价格.安全优势等成为不少开发者的首选.本人由于兴趣爱好,从朋友那边借了一个过来玩了两天,下面就分享整个部署流程吧. 1. 先到腾讯云官网购买服务器,这边就不演示.很简单,跟 ...
- 服务器运行环境(LNMP)安装说明
服务器运行环境(LNMP)安装说明 因为公司需要一套流程标准,所以写了如下步骤. 先下载文件environment.tar,将文件上传到服务器. 使用命令解压文件,tar xvf environmen ...
- 【转载】阿里云Windows服务器快速部署PHP运行环境
PHP也是一种常用的网站脚本语言,时常用于网站应用程序的编写,PHP运行环境包含几个要素:PHP.Apache服务器.MySql数据库,此3个要素是Php网站运行的必要条件.在阿里云的Windows服 ...
- centos7服务器搭建javaweb运行环境及代码部署
之前在一直在学习java web终于写完了第一个小demo,于是在阿里云上买了一个服务器,开始了配置服务器环境的踩坑之旅.... ps:本文不讨论服务器配置的具体步骤,网上都很多,按部就班就是,本文主 ...
- 服务器运行环境部署(PHP)
1.使用的是腾讯云服务器,系统为centOS: 2.LAMP环境配置查看:https://cloud.tencent.com/document/product/213/8043: 3.mysql-se ...
- Linux服务器运行环境搭建(三)——MySQL数据库安装
官网:http://www.mysql.com/ 官网下载地址:http://dev.mysql.com/downloads/mysql/ 说明:官网下载页面的“Select Platform” 选择 ...
- 使用 Docker LNMP 部署 PHP 运行环境
简介 Docker LNMP 是基于 Docker 的 PHP 集成开发环境. Github 地址:https://github.com/YanlongMa/docker-lnmp 包含软件 ngin ...
- Debian7下lnmp+gunicorn部署Django运行环境
首先安装lnmp,安装方法见lnmp.org wget -c http://soft.vpser.net/lnmp/lnmp1.3-full.tar.gz && tar zxf lnm ...
随机推荐
- Spring 中jdbcTemplate 实现执行多条sql语句
说一下Spring框架中使用jdbcTemplate实现多条sql语句的执行: 很多情况下我们需要处理一件事情的时候需要对多个表执行多个sql语句,比如淘宝下单时,我们确认付款时要对自己银行账户的表里 ...
- ArcGIS Server 10.2 实战(五)spatial etl tool 格式转换服务
上不同的地图服务平台对地图文件格式的要求多种多样,arcgis使用的文件很难应用于其他平台上,因此需要有格式转换的服务来克服这种使用不同平台带来的麻烦,下面以TIFF格式转GEOTIFF格式为例. 首 ...
- ArcGIS Server 10.2 实战(一)Asp.net MVC与JSON数据妙用实现动态生成要素图层
今年7月刚刚发布的ArcGIS 10.2为GIS的web开发带来了一个很实在的功能,JSON转要素.以往GIS图层外部数据(如文本数据,数据库数据)动态地写入地图服务中的图层是一件不可想象的事情,如今 ...
- 在vs中跑动ransac
期间遇到很多问题. 记一个最主要的是: LINK2019 无法识别的外部符号,然后某一个函数的函数名 然后是 @@函数名 (@) 大概长成这样.或者还就根本就是 无法识别的外部符号. 解决方案: 我这 ...
- Mac OS X 配置 Apache+Mysql+PHP 详细教程
网上的教程已经有很多,这里简洁的记录一下.以 Mac OS X Mavericks 10.9.X 为例. 先附上如何进入指定目录文件夹,按键盘 Command + Shift + G ,然后输入指定目 ...
- 误用ArrayListMultimap引发的问题
最近生产环境的系统在运行一段时间后,用户登录速度越来越慢,但是重启某一模块后,用户登录恢复正常.如此反复,令人提心吊胆.于是下定决心,找出问题原因. 趁着系统运行低峰期,打印出相应Dump文件,发现D ...
- poj 2446 二分图最大匹配
思路:由(i+j)为偶数的点向(i+j)为奇数的点建边.求一次最大匹配,若正好为空格数(不包含洞)的一半,即输出YES. #include<iostream> #include<cs ...
- Swift 性能探索和优化分析
本文首发在 CSDN<程序员>杂志,订阅地址 http://dingyue.programmer.com.cn/. Apple 在推出 Swift 时就将其冠以先进,安全和高效的新一代编程 ...
- Spring(3.2.3) - Beans(10): 生命周期
Spring 容器可以管理 singleton 作用域 Bean 的生命周期,容器能够跟踪 Bean 实例的创建.销毁.管理 Bean 生命周期行为主要有两个时机: 注入 Bean 的依赖关系之后 即 ...
- Android 分析工具 APKAnalyser
APKAnalyser 是 Android 静态,虚拟分析工具,用来测试和验证 Android 应用的开发工作.ApkAnalyser 是个完整的工具链,可以修改二进制应用.用户可以改装,安装,运行, ...