Testando e validando suas Roles do Ansible com o Molecule
Hoje, no blog da 4Linux, vamos falar sobre como podemos testar as nossas Roles antes de serem aplicadas no ambiente de produção.
O Molecule é um projeto que permite que você teste sua Role e playbooks em várias possibilidades de cenários, garantindo que funcionem corretamente em diferentes combinações de sistemas operacionais e ambientes de virtualização. Sem ele, você teria que provisionar e manter um ambiente de teste separadamente, além configurar a conectividade para essas instâncias e garantir que estejam limpas e prontas antes de cada teste. O Molecule gerencia esses aspectos para você de maneira automatizada.
Neste post, vamos usar o Molecule para desenvolver e testar a configuração simples de um site com o Apache2 e testar se a página está online. O Molecule vai provisionar o ambiente através do Vagrant, onde ele criará uma VM com o Ubuntu e onde vamos executar nossa playbook.
Para facilitar, o código desse ambiente está versionado no GitHub: https://github.com/silvemerson/blog4linux-ansibile-molecule
Vamos lá!!!
INICIALIZANDO AMBIENTE
Pré-requisitos:
Python 2.7 ou superior
Ansible 2.9 ou superior
Molecule 3.5.2
A instalação do Molecule é fácil, basta executar o comando abaixo:
$ pip3 install molecule && pip install python-vagrant
Agora vamos criar a nossa primeira role.
$ molecule init role molecule-4linux
Dentro da role, o Molecule cria um diretório com a seguinte estrutura:
O que cada file faz:
INSTALL: instrução de instalação.
molecule.yml: arquivo de configuração do ambiente de teste.
converge.yml: arquivo onde é apontada qual playbook será executada.
verify.yml: ele é executado depois do converge.yml e valida as configurações provisionadas do ambiente de teste.
create.yml: arquivo de criação de ambiente no cenário default.
destroy.yml: arquivo que destrói o ambiente no cenário default.
Ele vai criar um cenário chamado default. O Molecule permite que sejam criados múltiplos cenários, possibilitando assim uma organização com os tipos de ambientes em que será executado o teste. Pode ser que você tenha um ambiente na GCP, AWS ou em VMWare.
Para o nosso laboratório, vamos inicializar um cenário com o Vagrant:
$ molecule init scenario 4linux –driver-name vagrant
Onde criamos um cenário chamado 4Linux e que o nosso provider será o Vagrant.
Então, assim ficará a árvore de diretórios do Molecule:
CONFIGURAÇÃO
Como mencionado anteriormente, vamos utilizar o Vagrant para provisionar uma máquina com o VirtualBox. O arquivo que vai ser configurado para esse provisionamento é o molecule.yml dentro do cenário 4Linux.
—
dependency:
name: galaxy
driver:
name: vagrant
platforms:
– name: 4linux
hostname: 4linux-molecule
box: bento/ubuntu-20.04
memory: 1024
cpus: 1
name: nome do nosso ambiente
hostname: nome da VM
box: a imagem do Ubuntu Focal
memory: definimos 1GB para essa máquina
cpu: quantidade de núcleos para esse ambiente
Arquivo pode ser personalizado para outras distribuições de SO, quantidade de CPU e memória.
Testando Playbook
O Molecule possui alguns comandos para melhor gerenciarmos e validar cada etapa dos testes. Para o post não ficar muito extenso, vamos focar no test, converge e destroy.
O primeiro comando que vamos testar é o test. Ele vai criar a nossa infraestrutura, testar a playbook e depois destruir o nosso ambiente de forma automatizada. Se ele identificar qualquer problema nas nossas tasks, será exibido no terminal um output com o erro identificado.
$ molecule test –scenario-name 4linux
Outro comando é o converge:
$ molecule converge –scenario-name 4linux
Esse possibilita que nosso ambiente de teste seja criado e possamos acessá-lo. Ele cria, por padrão, no diretório “.cache/molecule/“, mas, para facilitar, podemos utilizar o Vagrant para localizar
a nossa máquina:
$ vagrant global-status
id name provider state directory
——————————————————————————————————————————-
9c9a2f0 4linux-molecule virtualbox running /home/emerson/.cache/molecule/molecule-4linux/4linux
Então, basta acessá-la:
$ vagrant ssh 9c9a2f0
Pronto, veja que o site foi configurado corretamente no servidor após a validação com o curl.
Bom, agora que vamos para nosso último comando, que é o destroy. Este é bem sugestivo, vai destruir a nossa infraestrutura de teste.
$ molecule destroy –scenario-name 4linux
Por hoje é só, pessoal. Esse é o módulo do Ansible chamado Molecule, com ele podemos fazer uma infinidade de testes, implementar em um stage de teste de uma pipeline de infraestrutura e muito mais. Testem e explorem esse ótimo projeto.
Não se esqueçam de compartilhar em suas redes sociais.
Referências:
Geerling, Jeff. Ansible for DevOps: Server and configuration management for humans. Edição 2º. 2015.
https://github.com/ansible-community/molecule-vagrant
Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:
About author
Você pode gostar também
Domine o Vim: o editor de texto essencial para Sysadmins Linux
Para um Sysadmin Linux, possuir domínio de editores de texto via linha de comando é imprescindível. Constantemente temos a necessidade de alterar arquivos, visualizar o contéudo, abrir mais de um
Previsão de problemas e tendências com Zabbix 3.0: Guia prático
A partir da versão 3.0 do Zabbix dois novos recursos, o forecast e timeleft, permitem fazer previsões sobre análise de dados coletados e criar alertas que antecipem problemas em potenciais.
Desvendando o DevOps: Entenda a Integração, Entrega e Implantação Contínua
Continuous Integration (Integração Continua), Continuous Delivery (Entrega Continua) e Continuous Deployment (Implantação Continua) são práticas DevOps muito populares nos últimos anos, mas o que são e as diferenças entre elas