zoukankan      html  css  js  c++  java
  • 使用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的服务器端进一步测试看看是否成功配置各个客户端的运行环境了。

  • 相关阅读:
    JavaScript打印99乘法表
    Python列表推导式玩法
    Python错误重试方法
    pandas + jupyter进行数据处理
    新手小白的爬虫神器-无代码高效爬取数据
    Adb连接模拟器出现版本错误
    Python发送多人邮件报错
    Django入门
    git clone 下载速度解决办法
    Python实现自动刷抖音
  • 原文地址:https://www.cnblogs.com/cjyfff/p/3567284.html
Copyright © 2011-2022 走看看