Sortie de la collection de rôles Ansible marcwrobel.assertions 1.0.0

La version 1.0.0 de la collection de rôles Ansible marcwrobel.assertions est sortie.

Cette collection de rôles vise à combler ce qui m’a paru être un manque dans l’écosystème Ansible : une collection d’assertions simples à utiliser et réutilisables. L’utilisation de la collection marcwrobel.assertions permet, par rapport à l’utilisation directe des briques fournies par Ansible (modules, filtres , tests…) :

  • de simplifier l’écriture d’assertion,
  • d’obtenir des messages d’erreur plus claires,
  • de réduire, la plupart du temps, la quantité de code à écrire.

Cette collection vise notamment à être utilisée lors de l’écriture de tests Molecule avec le verifier Ansible (activé par défaut depuis la version 3.0.0). Elle pourra être aussi utile pour bloquer l’exécution de playbooks quand certaines conditions ne sont pas remplies (version d’Ansible, version de la distribution des managed nodes…).

Pour cette première version les assertions suivantes ont été implémentés :

Pour utiliser cette collections il suffit de l’installer en sur votre poste via la commande suivante :

ansible-galaxy collection install marcwrobel.assertions

Il ne restera plus qu’à l’utiliser dans vos playbooks ou dans vos scénarios Molecule. Quelques exemples :

- name: 'Assert that Ansible version is 2.8.x or 2.9.x'
  include_role:
    name: 'marcwrobel.assertions.assert_that_ansible'
  vars:
    has_min_version: '2.8'
    has_max_version: '2.10'

- name: 'Assert that the distribution is supported'
  include_role:
    name: 'marcwrobel.assertions.assert_that_distribution'
  vars:
    is_in: ['Debian', 'RedHat 8', 'Ubuntu 20.04']

- name: 'Assert that /tmp/test is managed by Ansible'
  include_role:
    name: 'marcwrobel.assertions.assert_that_file'
  vars:
    path: '/path/to/file'
    has_content_matching: '^# Ansible managed'

- name: 'Assert that /path/to/file exists, is a file, have mode 0640 and belongs to root:root'
  include_role:
    name: 'marcwrobel.assertions.assert_that_path'
  vars:
    path: '/path/to/file'
    has_type: 'file'
    has_mode: '0640'
    has_owner: 'root'
    has_group: 'root'

- name: 'Assert that firewalld.service exists, is running and is enabled'
  include_role:
    name: 'marcwrobel.assertions.assert_that_service'
  vars:
    name: 'firewalld.service'
    has_state: 'running'
    has_status: 'enabled'

Pour plus d’informations référez-vous à la documentation de la collection disponible sur le dépôt GitHub marcwrobel/ansible-collection-assertions .