Sem resumo de edição
Sem resumo de edição
Etiqueta: visualeditor
 
Linha 79: Linha 79:


'''''Obs.:''''' Se precisar alterar alguma configuração, siga o modelo do resto do manifest. No módulo [https://forge.puppet.com/puppet/zabbix puppet/zabbix], há uma chave para cada item nos arquivos de configuração dos daemons do Zabbix, grafada exatamente da mesma forma, só que em minúsculas.
'''''Obs.:''''' Se precisar alterar alguma configuração, siga o modelo do resto do manifest. No módulo [https://forge.puppet.com/puppet/zabbix puppet/zabbix], há uma chave para cada item nos arquivos de configuração dos daemons do Zabbix, grafada exatamente da mesma forma, só que em minúsculas.
=== Pesquisadores ===
Matheus Silva Santos

Edição atual tal como às 19h13min de 27 de janeiro de 2017

Instalação

Este tutorial trata dos passos necessários para a configuração de um Puppet Master e um Puppet Agent, sem enrolação. Ele foi baseado neste aqui. Espera-se que o leitor tenha algum conhecimento básico de Linux/Unix.

Observação

Devido a estrutura do Puppet, é conveniente a criação de um servidor DNS local às máquinas do Master e dos Agents. http://lbrvirtual.com.br/blog/index.php/2015/09/13/instalando-e-configurando-o-bind9-no-ubuntudebian/ (A alternativa é criar registros no /etc/hosts, mas não é recomendável pela complexidade adicional de editá-lo em cada máquina – Observe os exemplos de como os arquivos hosts devem ficar nos arquivos anexos hosts_agents e hosts_master).

Instalação do Puppet Master no CentOS 7

Requerimentos

Modo de fazer

  1. Em uma máquina com pelo menos 2GB de RAM, instale o CentOS 7 e atualize o sistema com $ sudo yum update -y. Garanta que ela esteja em rede com outras máquinas locais com $ ip a e $ ping.
  2. Confira e edite os valores de hostname da máquina, em /etc/hostname e /etc/hosts, tal que o comando $ ping $(hostname) obtenha sucesso. Dê preferência ao hostname puppet, caso contrário precisará configurar este valor em todos os agents. (Obs.: Soluções como OpenStack ou Docker, modificam esses valores a cada inicialização da instância).
  3. Não se esqueça de adicionar pelo menos um registro ao servidor DNS referente a essa máquina. (Você pode ignorar essa e a próxima instrução se for utilizar o arquivo /etc/hosts para gerenciar o nome das máquinas). Configure o endereço do DNS a ser usado localmente, com sudo printf "search puppetexample.com\nnameserver 0.0.0.0\n" | sudo tee -a /etc/resolv.conf, onde puppetexample.com corresponde a sua zona e 0.0.0.0 é o IP do seu servidor DNS.
  4. Pare o firewall com $ sudo systemctl stop firewalld e desative-o com $ sudo systemctl disable firewalld. Também desative o SELinux, editando para SELINUX=disabled em /etc/selinux/config. Reinicie a máquina para as mudanças surtirem efeito. Você pode e deve ajustar as políticas de firewall depois.
  5. Instale o repositório oficial do Puppet em seu sistema $ sudo yum install -y https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm e então o pacote do Puppet Master Server $ sudo yum install -y puppetserver. Se instalou em um sistema com menos de 4GB de RAM, você precisará ajustar a variável JAVA_ARGS em /etc/sysconfig/puppetserver.
  6. Finalmente, teste se o serviço inicia com $ sudo systemctl start puppetserver e $ sudo systemctl status puppetserver. Se não houver nenhuma falha, ative o serviço $ sudo systemctl enable puppetserver.
  7. Adicionalmente, instale o r10k para gerenciar módulos declarados em um Puppetfile, com $ sudo /opt/puppetlabs/puppet/bin/gem install r10k

Instalação do Puppet Agent no CentOS 7

Observe que os passos citados aqui precisam ser feitos em cada máquina que for atuar como node do Puppet. O ideal é que os processos sejam automatizados com a criação da máquina através de uma imagem de SO padrão, script pós-criação ou utilitário cloud-init.

Modo de fazer

  1. Instale o CentOS 7 e atualize o sistema com $ sudo yum update -y. Garanta que ela esteja em rede com outras máquinas locais com $ ip a e $ ping. A máquina agent não possui requerimentos específicos de RAM ou disco.
  2. Confira e edite os valores de hostname da máquina, em /etc/hostname e /etc/hosts, tal que o comando $ ping $(hostname) obtenha sucesso. (Obs.: Soluções como OpenStack ou Docker, modificam esses valores a cada inicialização da instância).
  3. Não se esqueça de adicionar pelo menos um registro ao servidor DNS referente a essa máquina. (Você pode ignorar essa e a próxima instrução se for utilizar o arquivo /etc/hosts para gerenciar o nome das máquinas). Configure o endereço do DNS a ser usado localmente, com sudo printf "search puppetexample.com\nnameserver 0.0.0.0\n" | sudo tee -a /etc/resolv.conf, onde puppetexample.com corresponde a sua zona e 0.0.0.0 é o IP do seu servidor DNS.
  4. Instale o repositório oficial do Puppet em seu sistema $ sudo yum install -y https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm e então o pacote do Puppet Agent $ sudo yum install -y puppet-agent.
  5. Se o hostname de seu Master for diferente de puppet, você precisa acrescentar isso em /etc/puppetlabs/puppet/puppet.conf, com:

[main] server = puppetexample.com

  1. Finalmente, teste se o serviço inicia com $ sudo systemctl start puppet e $ sudo systemctl status puppet. Se não houver nenhuma falha, ative o serviço $ sudo systemctl enable puppet.

Certificados

Antes de tudo você vai precisar aprovar os certificados de todos seus Agents no Master.

Aprovando certificados

Se tudo ocorreu bem na instalação do Agent, ele terá enviado uma requisição de reconhecimento de certificado ao Master ao iniciar o serviço. Antes de o Agent ser capaz de comunicar com o Master, é preciso aprovar o certificado de dado Agent.

  1. No Master execute $ sudo /opt/puppetlabs/bin/puppet cert list para ver os certificados pendentes. Note que a saída mostrará todos os hostnames de todos os Agents que ainda não tiverem seus certificados assinados.
  2. Use $ sudo /opt/puppetlabs/bin/puppet cert sign --all caso queira aprovar todos os hosts na fila, ou $ sudo /opt/puppetlabs/bin/puppet cert sign <hostname> caso queira aprovar um em específico.

Revogando certificados

Você talvez queira em algum momento refazer um host do zero, neste caso precisará revogar o certificado com $ sudo /opt/puppetlabs/bin/puppet cert clean <hostname>

Vendo todos os hosts assinados e não-assinados

Basta usar o comando $ sudo /opt/puppetlabs/bin/puppet cert list --all. Os hosts aprovados possuirão um + em sua frente.

Usando o Puppet para instalar o Zabbix

Para os efeitos deste tutorial que apenas pretende executar os passos de instalação de um ambiente Zabbix, é necessário somente saber que:

Master

  1. O Puppetfile é um arquivo que lista todos os módulos que são dependência do seu manifest. Este arquivo deve ser editado em /etc/puppetlabs/code/environments/production/Puppetfile. Estando no diretório /etc/puppetlabs/code/environments/production/, execute $ sudo /opt/puppetlabs/puppet/bin/r10k puppetfile install para instalar os módulos. O r10k é um utilitário capaz de baixar essas dependências, mas é incapaz de resolver dependências das suas dependências (O Puppet Enterprise tem uma ferramenta mais inteligente para isso, baseada no r10k).
  2. O diretório /etc/puppetlabs/code/environments/production/manifests/ é onde os arquivos manifest (.pp) devem ser colocados por padrão. O Puppet analisa cada um dos arquivos (e subdiretórios) em ordem numérica-alfabética, de forma que o conteúdo do arquivo 01.pp vai ser analisado antes do arquivo abacaxi.pp que vai ser analisado antes do arquivo pamonha.pp.
  3. Geralmente a instalação do Puppet vem com um arquivo /etc/puppetlabs/code/environments/production/manifests/site.pp em branco. Edite ou substitua com o conteúdo do arquivo site.pp que acompanha. No exemplo, agent1.puppet, agent2.puppet e agent3.puppet se referem aos hostnames/domínios atribuídos a cada máquina. Note que é perfeiramente possível separar cada definição em arquivos diferentes, assim zabbix_web.pp, zabbix_mysql.pp, zabbix_proxy.pp são nomes de arquivos para organizar o diretório.
  4. Por padrão os Agents checam o Master a cada 30 minutos. Como os intervalos não são sincronizados entre as máquinas, isso causará um pequeno problema (já que o node com o banco de dados precisa ser configurado antes do node com o Zabbix Server, por exemplo). Veremos como proceder a seguir.

Agents

  1. Em cada agent que precisar aplicação imediada das definições, você poderá executar $ sudo /opt/puppetlabs/bin/puppet agent --test
  2. O Zabbix Server e o Web precisam de um banco de dados para poderem proceder com a instalação. O Puppet é inteligente o suficiente para realizar as coisas por etapas sem comprometer o todo. Isso significa que você pode esperar por uma ou duas horas até que os agents tenham completado os ciclos de atualização para que tenha um ambiente instalado e funcional. Ou pode simplesmente executar o comando acima em cada uma das máquinas, começando com o node do banco de dados, porque é preciso criá-lo antes de instalar o Zabbix.
  3. O node com o Zabbix Server talvez precise de 3 execuções do comando do passo 1. O que acontece é que em distribuições RedHat-like alguns erros de permissão acontecem e a cada execução eles são resolvidos gradualmente pelo módulo.

Parabéns!!! Se tudo deu certo, você já poderá utilizar o ambiente Zabbix! Acesse o Zabbix Web pelo domínio definido no manifest. O usuário e a senha padrão do banco é zabbix_server e zabbix_server.

Isto é só o começo, há outras otimizações e truques que podem ser feitos com o Puppet, porém o necessário está aqui.

Obs.: Se precisar alterar alguma configuração, siga o modelo do resto do manifest. No módulo puppet/zabbix, há uma chave para cada item nos arquivos de configuração dos daemons do Zabbix, grafada exatamente da mesma forma, só que em minúsculas.

Pesquisadores

Matheus Silva Santos