Aviso:
Este tutorial foi escrito para ensinar a montar um servidor Zabbix Server, Agent e Proxy usando o Puppet.
Se você ainda não sabe o que é Puppet, como funciona e para que serve, sugiro parar por aqui e começar a estudar pelo livro que publiquei pela Novatec https://novatec.com.br/livros/puppet/, pelos links que estão nesta página: http://blog.aeciopires.com/primeiros-passos-com-o-puppet
Considerarei que você já instalou Puppet-Server e Puppet-Agent em dois hosts diferentes seguindos as instruções de um dos tutoriais a seguir. A leitura e implementação deles é requisito para a continuação deste tutorial.
No Debian 9 e Ubuntu Server 18.04:
http://blog.aeciopires.com/configurando-um-ambiente-puppet-5
No CentOS/Red Hat 7:
http://blog.aeciopires.com/configurando-um-ambiente-puppet-6
Prepare o ambiente
O Zabbix pode ser gerenciado via Puppet usando o módulo puppet-zabbix. Nos passos a seguir será apresentada uma configuração bem simples para este serviço. Mais exemplos de configuração deste módulo podem ser encontrados na página https://forge.puppet.com/puppet/zabbix
1) Acesse o Puppet Server e execute o comando a seguir para instalar as dependências e o módulo puppet-zabbix.
puppet module install puppetlabs-mysql puppet module install puppetlabs-apache --ignore-dependencies puppet module install puppetlabs-concat --ignore-dependencies puppet module install puppetlabs-apt --ignore-dependencies puppet module install puppet-php --ignore-dependencies puppet module install puppet-selinux --ignore-dependencies puppet module install puppet-archive --ignore-dependencies puppet module install puppet-zabbix --ignore-dependencies
2) Ainda no PuppetServer, edite o arquivo /etc/puppetlabs/code/environments/production/manifests/site.pp e defina a seguinte configuração para gerenciar o serviço Zabbix Server e Zabbix Agent no host puppet1 e Zabbix Proxy no host puppet2.
node puppet1.domain.com.br { #Configurando o Apache class { 'apache': mpm_module => 'prefork', default_vhost => false, server_signature => 'Off', server_tokens => 'Prod', trace_enable => 'Off', } #Incluindo o suporte ao PHP no Apache #class { '::php::globals': # php_version => '5.6', #}-> #class { '::php': # manage_repos => true #} include apache::mod::php #Definindo a porta padrao do HTTP apache::listen { '80': } #Defindo as cifras e protocolos SSL a serem usados no acesso via HTTPS class { 'apache::mod::ssl': ssl_cipher => 'HIGH:MEDIUM:!aNULL:!MD5:!SSLv3:!SSLv2:!TLSv1:!TLSv1.1', ssl_protocol => [ 'all', '-SSLv2', '-SSLv3', '-TLSv1', '-TLSv1.1' ], } #Configurando o modulo wsgi class { 'apache::mod::wsgi': wsgi_socket_prefix => '/var/run/wsgi', } #Adicionando o suporte a MySQL class { 'mysql::server': } #Configurando o Zabbix Server class { 'zabbix': zabbix_url => 'puppet1.domain.com.br', database_type => 'mysql', zabbix_version => '3.4', apache_use_ssl => true, } #Configurando o Zabbix Agent class { 'zabbix::agent': zabbix_version => '3.4', server => 'puppet1.domain.com.br', } } node puppet2.domain.com.br { #Configurando o Zabbix Proxy num host que so sera Proxy class { 'zabbix::proxy': zabbix_server_host => 'puppet1.domain.com.br', zabbix_version => '3.4', database_type => 'sqlite', database_name => '/var/lib/sqlite/zabbix_proxy.db', } }
3) Acesse os hosts puppet1 e puppet2 e execute o comando a seguir para obter o novo catálogo de configuração.
puppet agent -t
4) Verifique o funcionamento do serviço. O Zabbix estará disponível na URL: https://puppet1.domain.com.br. Pode fazer login com o usuário Admin e a senha zabbix.
5) O arquivo de configuração do Zabbix Server e Zabbix Agent do host puppet1 fica respectivamente em: /etc/zabbix/zabbix_server.conf e /etc/zabbix/zabbix_agentd.conf.
6) O arquivo de configuração do Zabbix Proxy do host puppet2 fica respectivamente em: /etc/zabbix/zabbix_proxy.conf.
Para aprender mais sobre o Puppet, veja o livro que publiquei pela editora Novatec: https://novatec.com.br/livros/puppet/