A continuación, el manifiesto necesario para instalar el agente zabbix en todos los sistemas cliente que deseemos sin esfuerzo alguno desde puppet.
Primero, creamos la subclase de parámetros, por si es necesario alguna modificación, sólo tocar este fichero.
class zabbix::params { $agent_packagename = $operatingsystem ? { debian=> "zabbix-agent", ubuntu=> "zabbix-agent", default=> "zabbix", } $server_packagename = $operatingsystem ? { debian=> "zabbix-server-mysql", ubuntu=> "zabbix-server-mysql", default=> "zabbix-server", } $provider = $operatingsystem ? { debian=> "debian", ubuntu=> "debian", default=> "init", } $agent_servicename = $operatingsystem ? { debian=> "zabbix-agent", ubuntu=> "zabbix-agent", default=> "zabbix", } $server_servicename = $operatingsystem ? { debian=> "zabbix-server", ubuntu=> "zabbix-server", default=> "zabbix-server-mysql", } $agent_configfiled = $operatingsystem ? { default=> "/etc/zabbix/zabbix_agentd.conf", } $agent_configfile = $operatingsystem ? { default=> "/etc/zabbix/zabbix_agent.conf", } $server_configfiled = $operatingsystem ? { default=> "/etc/zabbix/zabbix_server.conf", } $agent_dir = $operatingsystem ? { default=> "/etc/zabbix", } }
La clase zabbix.
class zabbix { require zabbix::params package { "zabbix-agent": name=> "${zabbix::params::agent_packagename}", ensure=> installed; } service { "zabbix-agent": name=> "${zabbix::params::agent_servicename}", ensure=> running, enable=> true, hasrestart=> true, hasstatus=> false, pattern=> "/usr/sbin/zabbix_agentd", require=> Package[ "zabbix-agent" ]; } file { "config-zabbix-agentd": path=> "${zabbix::params::agent_configfiled}", owner=> zabbix, group=> zabbix, mode=> 0640, ensure=> present, content=> template("zabbix_agentd.conf.erb"), require=> [Package["zabbix-agent"],File["zabbix-dir"]], notify=> Service["zabbix-agent"]; "config-zabbix-agent": path=> "${zabbix::params::agent_configfile}", owner=> zabbix, group=> zabbix, mode=> 0640, ensure=> present, content=> template("zabbix_agent.conf.erb"), require=> [Package["zabbix-agent"],File["zabbix-dir"]]; "zabbix-dir": path=> "${zabbix::params::agent_dir}", ensure=> directory; } }
Y al finalmente la subclase absent, por si en algún momento interesa no tener el agente instalado en alguno de los equipos.
class zabbix::absent inherits zabbix{ Package[ "zabbix-agent" ] { ensure=> absent, } Service[ "zabbix-agent" ] { ensure=> stopped, } File[ "config-zabbix-agentd" ] { ensure=> absent, } File[ "config-zabbix-agent" ] { ensure=> absent, } }
Y el aspecto de la plantilla usada es el que sigue:
# HEADER: This file was autogenerated by puppet. # HEADER: While it can still be managed manually, # HEADER: it is definitely not recommended. ############ GENERAL PARAMETERS ################# <%- if domain == "company.com" -%> Server=zbx.company.com <%- elsif domain == "other.company.es" -%> Server=zabbix.mycompany.com <%- else -%> Server=192.168.1.2 <%- end -%> ServerPort=10051 Hostname=<%= fqdn %> #ListenPort=10050 #ListenIP=127.0.0.1 StartAgents=15 #RefreshActiveChecks=120 #DisableActive=1 #EnableRemoteCommands=1 DebugLevel=3 PidFile=/var/run/zabbix-agent/zabbix_agentd.pid LogFile=/var/log/zabbix-agent/zabbix_agentd.log #LogFileSize=1 Timeout=10 ####### USER-DEFINED MONITORED PARAMETERS #######
No hay comentarios :
Publicar un comentario