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
Terraform: Aprenda a gerenciar dependências entre recursos na GCP
Esta é o terceiro capítulo da nossa série de postagens sobre Terraform, neste post iremos falar sobre as dependências entre recursos. Caso tenha perdido o início da nossa série, recomendo
Gerenciamento eficiente de dispositivos em bloco com LVM no ambiente GNU/Linux
LVM ou Logical Volume Management é uma solução para o fácil gerenciamento de dispositivos em bloco dentro do ambiente GNU/Linux via blocos virtuais. Como assim ? Vamos explicar. Primeiramente todo
Prepare-se para a certificação RHCSA-LFCS e destaque-se no mercado de TI
Preparatório RHCSA-LFCS Você está procurando um curso que possa prepará-lo para passar no exame de certificação Redhat ou LFCS? Se sim, então não procure mais, porque o PREPARATÓRIO RHCSA-LFCS é