Supporter plusieurs distributions dans ses tâches ansible.
###Introduction
Il n'est pas rare que les développeurs n'utilisent pas la même distribution que le serveur de production. D'ailleurs, il est même possible que dans l'équipe, il y est plusieurs distributions différentes. Il n'est pas grave que le poste de développeur ne soit pas le même que la production, car pour ça il y a d'autres environnement. Pour ce genre de situations, il est intéressant de pouvoir gérer plusieurs distributions dans les tâches ansible. Ce n'est pas contraignant et ça ne prends pas beaucoup plus de temps. L'exemple est l'installation d'un serveur de base de données.
###Usage
Ansible fournit plusieurs utilitaires, dont par exemple la possibilité d'importer une une tâche. Ce qui permet d'avoir des sous-tâches spécifiques à une distribution, par exemple. Maintenant, voyons comment ça fonctionne, le fichier roles/postgresql/tasks/main.yml :
---
- name: Import the task for debian
import_tasks: debian.yml
when: ansible_distribution|lower == 'debian'
- name: Import the task for archlinux
import_tasks: archlinux.yml
when: ansible_distribution|lower == 'archlinux'
- name: Ensure the service is running
service:
name: postgresql
state: started
enabled: yes
D'abord, un nom pour l'action, c'est classique. Ensuite, l'utilisation du module import_tasks, puis, l'utilisation d'une structure conditionnel pour importer la tâche qui convient à la distribution. Le fichier roles/postgresql/tasks/debian.yml:
---
- name: Install
apt:
name: postgresql
state: latest
update_cache: yes
become: yes
Utilisation du module apt pour installer le serveur de base de données. D'abord le nom du paquet, ensuite son état, latest pour avoir la dernière version disponible, puis updatecache pour mettre à jour la liste des paquets. L'opération demande les droits d'administration, la valeur de becomeuser est root par défaut. Le fichier roles/postgresql/tasks/archlinux.yml:
---
- name: Install
pacman:
name: postgresql
state: latest
update_cache: yes
become: yes
La seule différence est le nom du module utilisé. Ici, c'est pacman, sur le reste le fonctionnement est le même. En général, il y a peu d'opération spécifique à faire pour une distribution. Les modules qui gèrent les systèmes de paquets pour les distributions, sont proches et ont beaucoup d'options communes.
###Conclusion
Il n'est pas difficile de gérer le support de plusieurs distributions, dans les tâches ansible. La plupart du temps, les tâches spécifiques sont l'installation du paquet.