Zabbix: deploy de agent automatizado com ansible 0o

Instalar software nunca foi uma tarefa grata, ao menos, não deveria ser um problema, bom, a realidade é bem diferente, dependendo da distribuição, S.O que utiliza isso sim pode ser um problema e tanto.

Resolver dependência encontrar a dependência quebrada pode ser do agrado de alguns “eu gostava quando usava slackware”, até entrar no meio corporativo, tinha poucos horas para solucionar um problema crítico ou criar soluções mirabolantes, o que me levou procurar distros que atendessem minhas necessidades. “tive um pouco de influência do meu coordenador na época”.

Neste texto, vou demonstrar como utilizei o ansible para fazer deploy de agent do zabbix em dezenas de servidores simultaneamente.

Não conhece ansible? deveria e não será o foco deste documento, para mais informações acesse o site oficial. https://www.ansible.com/

Bom, vamos aos fatos.

Meu problema:

Meu coordenador, um belo dia disse: Temos que coletar os indicadores X,Y,Z de todos os gateways de internet, seria bacana pegar isso no Zabbix para gerar o relatório no mesmo padrão.

São muitos equipamentos e não iria fazer isso um a um, planejei de modo que seria necessário fazer em outros equipamentos, automatizar esse processo iria me facilitar hoje e a manhã.

Pois bem, os equipamentos alvo que tenho que instalar o agent é são distros customizada, não conta com todos os comandos existentes ou recursos que temos por default no binutils do linux, sendo assim, foi necessário criar roles um pouco fora do convencional, não vou dizer que não me agradou, para falar a verdade, me mostrou que foi possível mesmo com ausência de alguns recursos, ou seja, foi possível fazer diferente.

Planejando meu playbook, já estava com ideia de construir este post, sendo assim, dividi em partes para usar o include, que me tem me ajudado muito para reaproveitar role, “todo o procedimento aqui descrito poderia fazer parte de um único arquivo”, trata-se de uma duvida que tive e resolvi manter descrito aqui, vamos aos passos:

1 – Download do agent;

2 – Descompactar e instalar;

3 – Copiar os arquivos de configuração remoto que foi customizado para meu ambiente;

4 – Iniciar o agent;

Eu configurei o diretório de role para /etc/ansible/roles, nesta caso, cada etapa terá um arquivo dentro dessa estrutura em um diretório que respeita uma estrutura padrão, não necessariamente deve criar todos os diretórios apenas aqueles que você irá utilizar, mas, para seguir o padrão da ferramenta que é o recomendado, vamos usar o ansible-galaxy para criar a estrutura de roles.

As roles para instalação do zabbix estão em /etc/ansible/roles/zabbix_install/tasks/ abaixo os passos para criar a estrutura.

# cd /etc/ansible/roles/

# ansible-galaxy init zabbix_install && cd zabbix_install/tasks

# vim zabbix_download.yml

OBS: Todo arquivo .yml tem inicio com a declaração de — três sinais de ‘ – ‘ (Hífen), notei na revisão que recortei de todas os arquivos, não irei gerar outro print.

curiosidade: o formato .yml é pronunciado da seguinte forma ‘iãmou’

# vim zabbix_decompres.yml

descompactando o agent que foi baixado no /tmp para o raiz do S.O, como ele vem com a estrutura padrão com os diretórios certinho, não tem problema, não vão ficar perdidos no

# vim zabbix_conf_copy.yml

Acima, temos um arquivo estático zabbix_agentd.conf que tem tudo que irei utilizar, no geral, com poucos detalhes e o mais importante, com a variável do zabbix server declarada, para facilitar nossa vida 😉 “bom, este é o objetivo”.

Observe que, o source do arquivo tem um caminho um pouco diferente, mantenho uma estrutura no mesmo modelo das roles com o grupo para os arquivos que irei utilizar em um ou mais equipamentos.

# zabbix_start_service.yml

o zabbix não roda como root, então deve garantir que exista uma conta que permita rodar o serviço, não é necessário uma conta com login ativo, ou seja, não tem que ter shell nessa conta.

Antes de criar seu playbook, tenha em mente a estrutura da ordem de execução de seus arquivos, existe uma sequência lógica, ou seja, você não vai iniciar o serviço antes de instalar, ok?

# vim main.yml

Com o main criado, seu playbook pode ser iniciado, ele irá automaticamente invocado e dará inicio em todos esses processos um por um.

falta o playbook… no arquivo de configuração do ansible definimos que a estrutura de playbook ficaria organizada em /etc/ansible/playbook trata-se de apenas um arquivo yml qualquer como vários outros.

diferente do arquivo de role que não trata o host ou grupo de hosts, neste caso temos o grupo que criei no ansible que representa todos os ativos que são gateway para aplicações web, desse modo, podemos deixar as roles bem genéricas, permitindo assim que possa aplicar em qualquer sistema que o agent atenda.

Quanto a role ele vai buscar no arquivo conf o local da role e entrar no diretório zabbix_install “tentar localizar” se ele tem a estrutura esperada para executar o role, blz..

rodando o playbook.. e pronto..

A saída ficou muito grande, então apenas uma parte e terminamos por aqui hoje.