Goss Verifier#
Prérequis#
Avoir effectué l’Installation de Molecule
Avoir un démon Docker installé sur votre machine de travail.
Que votre utilisateur de travail ait la permission de gérer Docker (pour éviter de devoir lancer vos tests en
root
).
Initialisation#
Créez un rôle pour notre exercice
$ pwd
/home/user/ansible-workspaces/ultimate-training
$ cd roles
$ molecule init role molecule_goss_demo --driver-name docker --verifier-name goss
$ cd molecule_goss_demo
Créez un fichier
molecule/default/Dockerfile.j2
pour service de modèle à notre host de test :
#
# TEST-ONLY Dockerfile, NE PAS DEPLOYER
#
ARG DEBIAN_TAG=11-slim
FROM debian:$DEBIAN_TAG
ARG DEBIAN_FRONTEND=noninteractive
RUN set -eux; \
apt-get update && apt-get upgrade && apt-get dist-upgrade; \
apt-get install --no-install-recommends -y apt-utils \
curl ca-certificates sudo \
python python3 python3-apt locales \
systemd systemd-sysv libpam-systemd dbus dbus-user-session; \
localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8; \
localedef -i fr_FR -c -f UTF-8 -A /usr/share/locale/locale.alias fr_FR.UTF-8
ENV LANG fr_FR.utf8
RUN rm -f /lib/systemd/system/multi-user.target.wants/* \
/etc/systemd/system/*.wants/* \
/lib/systemd/system/local-fs.target.wants/* \
/lib/systemd/system/sockets.target.wants/*udev* \
/lib/systemd/system/sockets.target.wants/*initctl* \
/lib/systemd/system/sysinit.target.wants/systemd-tmpfiles-setup* \
/lib/systemd/system/systemd-update-utmp*
ENTRYPOINT ["/lib/systemd/systemd"]
Modifiez le fichier
molecule/default/molecule.yml
comme ceci :
---
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: debian
image: "ultimate:11"
pre_build_image: false
pull: false
privileged: true
provisioner:
name: ansible
verifier:
name: goss
À ce stade nous pouvons déjà lancer un molecule test
qui s’appuie sur notre Dockerfile. Cependant nous testerions un rôle vide,
donc peu de gloire.
Code du rôle#
Modifiez le fichier
tasks/main.yml
pour que notre rôle installe et active le démon SSH :
---
- name: Installation de sshd
apt:
name: openssh-server
update_cache: yes
- name: Activation de sshd
service:
name: sshd
state: started
enabled: true
Code des tests#
Modifiez l’état attendu par goss en éditant le fichier
molecule/default/tests/test_default.yml
:
---
port:
tcp:22:
listening: true
ip:
- 0.0.0.0
service:
sshd:
enabled: true
running: true
process:
sshd:
running: true
Lancement#
Tout est prêt vous pouvez maintenant lancer les tests :
$ pwd
/home/user/ansible-workspaces/ultimate-training/roles/molecule_goss_demo
$ molecule test
[...]
Ligne d’arrivée#
Vous avez là la combinaison la plus confortable pour tester des rôles Ansible au moment de la rédaction.