puppet manifest for zabbix-agent

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

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios