Testing Ansible
Playbook with
Molecule
by Mario Inga
Agenda
1. Contexto
2. Molecule
3. Demos
4. Preguntas
1. Teníamos un Aws EC2 para pruebas de cargas
manuales.
Contexto
1. Teníamos un Aws EC2 para pruebas de cargas
manuales.
2. Luego pasaron a ser 8 instancias de EC2.
3. Finalmente agregaron otras 6 instancias EC2 con GPU.
Contexto
1. Teníamos un Aws EC2 para pruebas de cargas
manuales.
2. Luego pasaron a ser 8 instancias de EC2.
3. Finalmente agregaron otras 6 instancias EC2 con GPU.
4. A veces instalaban paquetes que rompían el server.
5. No aplicar el Playbook mientras estaban usando.
6. Coordinar una fecha/hora era complicado pues distintas
zonas horarias.
Contexto
Server broken
1. Replicar el mismo entorno.
2. Aplicar el Ansible Playbook
3. Validar el Ansible Playbook antes de aplicar.
4. Self Service para aplicar los cambios cuando Dev
Team desee.
Retos
Self Service
Planteamientos
1. Aislar un nodo y probar el playbook ahí.
2. Sacar una copia y crear una instancia donde aplicar
playbook.
3. Hacer scripts para crear y configurar una instancia EC2,
aplicar playbook, luego validar y finalmente eliminar.
4. Pensar en una solución que no necesite usar AWS
(amazonlinux:2, ya existe como docker image).
- Opensource
- Testing for Playbooks y Roles
- Addons:
- Docker
- Aws
- GCP
- Etc
- https://ansible.readthedocs.io/projects/molecule/
Molecule
Fases de Molecule
1. Create
2. Converge
3. Verify
Fases de Molecule
1. Create
2. Converge
3. Verify
Fases de Molecule
1. Create
2. Converge
3. Verify
Demo!
Demo!
1. Molecule + Docker + TestInfra
2. Molecule + AWS + TestInfra
Code https://github.com/mario21ic/molecule-demos
Packer + Ansible + Molecule + TestInfra
- Packer = conexión al provider (docker, aws, gcp, azure,
virtualbox, etc)
- Ansible = automatización de ops (instalacion,
configuracion, etc)
- Molecule = testing de Ansible playbooks y roles
- TestInfra = asserts en Python
Un solo recetario para dominarlos a todos los providers
Recomendaciones
- No existe la bala de plata
- Evitar obsession tool
- Aprendamos primero los fundamentos
Preguntas?
Me: @mario21ic
Comunidad: @devopspe

Testing Ansible Playbook con Molecule + TestInfra

  • 1.
  • 2.
  • 3.
    1. Teníamos unAws EC2 para pruebas de cargas manuales. Contexto
  • 4.
    1. Teníamos unAws EC2 para pruebas de cargas manuales. 2. Luego pasaron a ser 8 instancias de EC2. 3. Finalmente agregaron otras 6 instancias EC2 con GPU. Contexto
  • 5.
    1. Teníamos unAws EC2 para pruebas de cargas manuales. 2. Luego pasaron a ser 8 instancias de EC2. 3. Finalmente agregaron otras 6 instancias EC2 con GPU. 4. A veces instalaban paquetes que rompían el server. 5. No aplicar el Playbook mientras estaban usando. 6. Coordinar una fecha/hora era complicado pues distintas zonas horarias. Contexto
  • 6.
  • 7.
    1. Replicar elmismo entorno. 2. Aplicar el Ansible Playbook 3. Validar el Ansible Playbook antes de aplicar. 4. Self Service para aplicar los cambios cuando Dev Team desee. Retos
  • 8.
  • 9.
    Planteamientos 1. Aislar unnodo y probar el playbook ahí. 2. Sacar una copia y crear una instancia donde aplicar playbook. 3. Hacer scripts para crear y configurar una instancia EC2, aplicar playbook, luego validar y finalmente eliminar. 4. Pensar en una solución que no necesite usar AWS (amazonlinux:2, ya existe como docker image).
  • 10.
    - Opensource - Testingfor Playbooks y Roles - Addons: - Docker - Aws - GCP - Etc - https://ansible.readthedocs.io/projects/molecule/ Molecule
  • 11.
    Fases de Molecule 1.Create 2. Converge 3. Verify
  • 12.
    Fases de Molecule 1.Create 2. Converge 3. Verify
  • 13.
    Fases de Molecule 1.Create 2. Converge 3. Verify
  • 14.
  • 15.
    Demo! 1. Molecule +Docker + TestInfra 2. Molecule + AWS + TestInfra Code https://github.com/mario21ic/molecule-demos
  • 16.
    Packer + Ansible+ Molecule + TestInfra - Packer = conexión al provider (docker, aws, gcp, azure, virtualbox, etc) - Ansible = automatización de ops (instalacion, configuracion, etc) - Molecule = testing de Ansible playbooks y roles - TestInfra = asserts en Python Un solo recetario para dominarlos a todos los providers
  • 17.
    Recomendaciones - No existela bala de plata - Evitar obsession tool - Aprendamos primero los fundamentos
  • 18.