预计阅读本页时间:-
5.5.5 如何根据节点机器名选择性地执行Shell程序
如果客户端机器nginx.cn7788.com 没有安装Nagios客户端程序,想要通过Puppet-Server推送Shell脚本自动安装,其他节点机器暂时不安装这个程序,又该如何实现呢?
与上一节一样,主要还是通过模块的方法来实现这个需求,先建立一个名为nagioscli的模块,命令如下所示:
广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元
mkdir -p /etc/puppet/modules/nagiosins/{manifests,files,templates}
在/etc/puppet/modules/nagioscli/files目录下安装Nagios客户端名为nagiosclil.sh的Shell程序,内容如下:
#!/bin/bash
useradd nagios
cd /usr/local/src
wget wget http://syslab.comsenz.com/downloads/linux/nagios-plugins-1.4.13.tar.gz
wget http://syslab.comsenz.com/downloads/linux/nrpe-2.12.tar.gz
tar zxvf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
./configure
make
make install
chown nagios:nagios /usr/local/nagios
chown -R nagios:nagios /usr/local/nagios/libexec
cd ../
tar zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config
sed -i 's@allowed_hosts=127.0.0.1@allowed_hosts=114.112.11.11@'/usr/local/nagios/etc/nrpe.cfg
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d" >> /etc/rc.local
node.pp的文件内容如下:
node 'nginx.cn7788.com'{
file
{"/usr/local/src/nagiosins.sh":
source => "puppet://server.cn7788.com/modules/nagiosins/nagiosins.sh",
group => root,
owner => root,
mode => 755,
}
exec {
"auto install naigios client":
command =>"sh /usr/local/src/nagiosins.sh",
user =>"root",
path => ["/usr/bin","/usr/sbin","/bin","/bin/sh">,
}
}
node 'client.cn7788.com'{
file
{"/usr/local/src/nagiosins.sh":
source => "puppet://server.cn7788.com/modules/nagiosins/nagiosins.sh",
group => root,
owner => root,
mode => 755,
}
exec {
"auto install naigios client":
command =>"sh /usr/local/src/nagiosins.sh",
user =>"root",
path => ["/usr/bin","/usr/sbin","/bin","/bin/sh">,
}
}
node 'fabric.cn7788.com'{
}
若节点机器client和fabric机器后面什么都没有,则表示在此节点机器上没有进行任何操作,因为client和fabric节点机器也在此Puppet环境里,并配置成了自动连接,如此配置,是为了防止自动连接时Puppet-Server频繁报错。
这里以client.cn7788.com 为例进行说明,在其主机上输入如下命令:
puppet agent --test --server server.cn7788.com
命令显示结果如下所示:
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for client.cn7788.com
Info: Applying configuration version '1446693418'
Notice: /Stage[main]/Main/Node[client.cn7788.com]/Exec[auto install naigios client]/returns: executed successfully
Notice: Finished catalog run in 165.27 seconds
可以看到,执行时间比较长,总共耗时165.27秒,因此要检查下client.cn7788.com 的节点机器上是否开启了nrpe进程,输入如下命令:
ps aux | grep nrpe | grep –
v grep
命令显示结果如下所示:
nagios 22331 0.0 0.1 5108 924 ? Ss 22:35 0:00 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
下面检查/etc/rc.local,看看此命令有没有添加进去,命令如下所示:
grep -v "^#" /etc/rc.local
命令执行结果显示如下:
touch /var/lock/subsys/local
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
检查结果说明Puppet-Master的nagioscli模块是正常的,在nginx.cn7788.com 上检测的结果类似,这里就不再贴出了。