puppet批量部署zabbix
两台机器同一网段,互通正常,利用puppet给其他机器批量部署zabbix_agent。
| 
 centos6.5 
 | 
 IP地址 
 | 
 puppet版本 
 | 
 Zabbix版本 
 | 
| 
 puppet_server 
 | 
 172.16.7.95 
 | 
 3.7.3【master】 
 | 
 2.4.6【server】 
 | 
| 
 puppet_agent 
 | 
 172.16.7.97 
 | 
 3.7.3【minion】 
 | 
 2.4.6【agent】 
 | 
1.安装Puppet。
(1).172.16.7.95安装puppet_server【zabbix_server安装配置略】
[root@master ~]# rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
[root@master ~]# yum install -y puppet-server
[root@master ~]# chkconfig puppetmaster on
[root@master ~]# service puppetmaster start
(2).172.16.7.97安装puppet_agent
[root@minion ~]# rpm -ivh http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm
[root@minion ~]# yum install -y puppet
[root@minion ~]# chkconfig puppet on
[root@minion ~]# service puppet start
----------------------------------------------------------------------------------------------------------------------------
2.配置puppet。
(1).172.16.7.95端新建认证文件autosign.conf自动认证。
[root@master ~]# cat /etc/puppet/autosign.conf
minion
[root@master ~]#
(2).172.16.7.97修改主配置文件puppet.conf来增加监听与指定服务端域名。
[root@minion ~]# cat /etc/puppet/puppet.conf
[agent]
listen = true
server = master
[root@minion ~]#puppet agent --test
----------------------------------------------------------------------------------------------------------------------------
3.puppet_server端配置脚本并推送。
(1).创建模块目录
[root@master ~]# mkdir -p /etc/puppet/modules/zabbix/{manifests,templates}
(2).创建manifests文件,用于zabbix_agent源文件。
服务器端保存着所有对客户端服务器的配置代码,在puppet里面叫做manifest. 客户端下载manifest之后,可以根据manifest对服务器进行配置,例如软件包管理,用户管理和文件管理等等。
Zabbix Agent程序采用官方提供的软件源,客户端配置文件采用模板方式进行文件下载,由于客户端需要指定Zabbix Server,因此配置文件采用变量进行传递,最后使用“->”指定资源之间的依赖顺序关系。
[root@master ~]# vim /etc/puppet/modules/zabbix/manifests/init.pp
class zabbix {
package { 'zabbix-agent':
ensure => installed,
require => Yumrepo["zabbix"],
}
yumrepo { 'zabbix':
baseurl => "http://repo.zabbix.com/zabbix/2.4/rhel/\$releasever/\$basearch/",
descr => "Zabbix Official Repository",
enabled => 1,
gpgcheck => 0,
}
file { '/etc/zabbix/zabbix_agentd.conf':
content => template("zabbix/zabbix_agentd_conf.erb"),
ensure => file,
}
service { 'zabbix-agent':
ensure => "running",
hasstatus => true,
enable => true,
subscribe => [ File["/etc/zabbix/zabbix_agentd.conf"] ],
}
Package ["zabbix-agent"] -> File ["/etc/zabbix/zabbix_agentd.conf"] -> service ["zabbix-agent"]
}
(3).创建模板文件,用于zabbix_agent的主配置文件。
[root@master ~]# vim /etc/puppet/modules/zabbix/templates/zabbix_agentd_conf.erb
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
EnableRemoteCommands=1
LogRemoteCommands=1
Server=<%= zabbix_server %>
Hostname=<%= fqdn %>
ListenIP=<%= ipaddress %>
Include=/etc/zabbix/zabbix_agentd.d/
(4).创建节点文件,用于指向zabbix_server。
[root@master ~]# mkdir /etc/puppet/manifests/nodes
[root@master ~]# vim /etc/puppet/manifests/nodes/agentgroup.pp
node minion {
$zabbix_server = "172.16.7.95"
include zabbix
}
(5).修改site.pp将测试节点载入Puppet。
[root@master ~]# vim /etc/puppet/manifests/site.pp
Package {
allow_virtual => true,
}
import "nodes/agentgroup.pp"
----------------------------------------------------------------------------------------------------------------------------
4.puppet_agent端测试推送结果。
[root@minion ~]# puppet agent --test
                    
                
                
            
        
浙公网安备 33010602011771号