Tabela de conteúdo
Como instalar e configurar o zabbix-agent 3.x de forma automática via Puppet.
Instalação em servidores RedHat/Centos 7
Ubuntu 14
Debian 7 e 8Ambiente Puppet:
Puppet 4.3
Puppet Server 2.2.1
Puppet-agent 1.3.5Pré-requisitos:
Puppet-agent instalado e funcionando nos nodes/clientes.Repositórios Zabbix Centos/Redhat
http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/Ubuntu
http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/Debian
http://repo.zabbix.com/zabbix/3.0/debian/pool/main/z/
1. Criação do módulo
Logado no Puppet Server crie o módulo zabbixagent.
#cd /etc/puppetlabs/code/environments/production/modules #puppet module generate devopslab-zabbixagent --skip-interview
2. criação da pasta “templates” para o armazenamento do template
#mkdir /etc/puppetlabs/code/environments/production/modules/zabbixagent/templates
3. Criação do template zabbix_agent.rb
Copie o arquivo zabbix_agent.conf para dentro da pasta “templates” e renomeie-o para zabbix_agent.rb.
[root@puppetserver-01 templates]# mv -v zabbix_agentd.conf zabbix_agentd.rb
O arquivo zabbix_agent.conf você pode pegar de alguma instalação, ou baixe o pacote zabbix-agent.rpm abra e copie o arquivo zabbix_agent.conf.
Altere as diretivas:
#vi zabbix_agentd.rb
Server=servidorzabbix-exemplo.devopslab.com.br ListenIP=<%= @ipaddress_enp0s3 %> ServerActive=proxyzabbix-exemplo.devopslab.com.br Hostname=<%= @hostname %>
Basicamente você informou quais são os servidores Zabbix Server e Proxy Server. (proxy server é opcional).
Seu IP e hostname serão configurados automáticamente através das entradas “ListenIP” e “Hostname”.
@ipaddress_enp0s3 e @hostname são os facter do puppet.
Veja como ficou meu template:
[root@puppetserver-01 templates]# grep -v ^# zabbix_agentd.rb | grep -v ^$ PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix-agent/zabbix_agentd.log LogFileSize=0 Server=servidorzabbix-exemplo.devopslab.com.br ListenIP=<%= @ipaddress_enp0s3 %> ServerActive=proxyzabbix-exemplo.devopslab.com.br Hostname=<%= @hostname %> Include=/etc/zabbix/zabbix_agentd.conf.d/
4. Definição da classe
#vi /etc/puppetlabs/code/environments/production/modules/zabbixagent/manifests/init.pp
class zabbixagent { #expressao condicional para instalacao dos repositorios. if $osfamily == 'RedHat' and $operatingsystemrelease =~ /^7.*/ { package {'zabbix-release': provider => rpm, ensure => installed, source => "http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm" } } #Instalacao da versao mais nova do zabbix-agent package { [ 'zabbix-agent' ]: ensure => latest, require => Package['zabbix-release'], } #Zabbix-agent rodando service { 'zabbix-agent': ensure => 'running', enable => 'true', require => Package['zabbix-agent'], } #criando o arquivo de configuracao zabbix_agent.conf. file { "zabbix_agentd.conf": path => "/etc/zabbix/zabbix_agentd.conf", content => template("zabbixagent/zabbix_agentd.rb"), #crie a pasta "templates" em ../zabbixagent/" #o template zabbix_agentd.rb vai ficar dentro da pasta templates. owner => 'root', group => 'root', mode => '0644', notify => Service['zabbix-agent'], } }
Valide a classe para garantir a falta de erros.
#puppet parser validate init.pp
5. Definição dos nodes (clientes)
Basta agora criar um cliente e declarar a classe.
#vi /etc/puppetlabs/code/environments/production/manifests/cliente-01.pp
node 'cliente-01.devopslab.com.br' { include zabbixagent }
No cliente
Por fim se logue no cliente e rode o comando “puppet agent -t“, isto vai instalar, configurar e iniciar o Zabbix-agent.
Instalação em Ubuntu e Debian
Tudo que foi feito até aqui, também deve ser feito em sistemas Ubuntu e Debian, porém tem algumas coisas que mudam em relação ao Centos/Redhat.
Template Ubuntu/Debian
O arquivo zabbix_agentd.conf é diferente entre Centos/Redhat e Ubuntu/Debian, então você vai criar um novo template por exemplo zabbix_agentd.conf.ubuntu.rb.
Neste caso você vai copiar o zabbix_agentd.conf de uma instalação Ubuntu.
Facter da interface de rede
No Centos/Redhat 7 a interface de rede é nomeada como “enp0s3”, no Ubuntu/Debian utiliza-se o bom e velho “eth0”.
Então edite o template zabbix_agentd.conf.ubuntu.rb e deixe o ListenIP desta forma:
ListenIP=<%= @ipaddress_eth0 %>
Lembrando que @ipaddress_eth0 é a consulta do facter.
Abaixo segue uma classe que eu utilizo para a instalação do agente Zabbix em Ubuntu.
class zabbixagent::ubuntu { #expressao condicional para instalacao do repositorio Ubuntu if $osfamily == 'Debian' and $operatingsystemrelease =~ /^14.*/ { exec {'curl http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.0-1+trusty_all.deb -sJL -o /tmp/zabbix-release_3.0-1+trusty_all.deb': path => ['/usr/bin', '/usr/sbin'], unless => ['test -f /tmp/zabbix-release_3.0-1+trusty_all.deb'] } package {'zabbix-release': provider => dpkg, ensure => installed, source => '/tmp/zabbix-release_3.0-1+trusty_all.deb' } } #Instalacao da versao mais nova do zabbix-agent package { ['zabbix-agent']: ensure => latest, require => Package['zabbix-release'], } #Zabbix-agent rodando service {'zabbix-agent': ensure => 'running', enable => 'true', require => Package['zabbix-agent'], } #criando o arquivo de configuracao zabbix_agent.conf. file {'zabbix_agentd.conf': path => '/etc/zabbix/zabbix_agentd.conf', content => template('zabbixagent/zabbix_agentd.conf.ubuntu.rb'), #crie a pasta 'templates' em ../zabbixagent/' #o template zabbix_agentd.conf.ubuntu.rb vai ficar dentro da pasta templates. owner => 'root', group => 'root', mode => '0644', notify => Service['zabbix-agent'], } }
Até mais.