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
Descubra como o MetalLB aprimora o balanceamento de carga em ambientes Kubernetes on-premises
Por que usar o MetalLB em um ambiente on-premises? O MetalLB é uma solução essencial para clusters Kubernetes que não estão sendo executados em um ambiente de nuvem. Em ambientes
Teste sua infraestrutura com InSpec: auditoria automatizada e eficiente
Você conhece a ferramenta da Chef, o InSpec? Vamos realizar um teste básico de infraestrutura utilizando InSpec! Muita das vezes quando trabalhamos com integração continua não temos a certeza que
Primeiros passos com OpenStack: Como criar um ambiente de testes
Sempre que falamos sobre “primeiros passos” em alguma tecnologia, realizamos algum pequeno teste como um “Hello World” em uma linguagem ou um pequeno blog quando estamos estudando um framework web










