Hobbestigrou

Just another python and perl developer

Supporter plusieurs distributions dans ses tâches ansible.

planet-libre python Python ansible

24 jan. 2018 | hobbestigrou | comments

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.

comments powered by Disqus