Cas pratique Ansible avec mes Raspberry Pi

Ça n'a l'air de rien comme ça mais c'est un véritable couteau suisse qui s'associe très bien à ce qui existe déjà, j'en ai trouvé rapidement une utilité avec mes Raspberry Pi. Lorsque je reinitialise le stockage principal d'un raspberry avec un nouvel OS, il me faut installer à nouveau un tas de logiciels et les paramétrer pour que je puisse me sentir comme à la maison. Une des solutions serait d'avoir ma propre image que j'installe partout... Mais ce serait du coup limité à une architecture et pas modifiable facilement. La deuxième solution serait de télécharger un script sur chaque machine et de l’exécuter, même si c'est déjà plus rapide, cela nécessite de se connecter sur chaque machine et de refaire la manipulation à chaque fois... Ce que permet justement de faire Ansible avec une unique commande.

💡
Ansible est un outil libre GNU GPL 3.0 créé par Michael DeHann sponsorisé par Red Hat

Avoir Docker, Fish et Oh-My-Posh partout

Ma problématique

Je souhaite avoir Docker de configuré pour l'utilisateur par défaut ainsi que le Shell Fish dont le prompt serait celui que j'utilise partout via Oh-My-Posh.

OH MON POSH
Les développeuses et développeurs sont finalement pas si différent de ces gens avec un accent du nord qui aiment le tuning: On aime beaucoup trop personnaliser notre environnement et surtout notre Shell. Oh-My-Posh me permet de ne plus à avoir à faire mon propre prompt personnalisé à base d’export de

Qu'est-ce qu'Oh My Posh ?

Ma config de posh
Salut les petits posh, j’avais écrit la dernière fois à propos d’un prompt sur mesure “Oh mon posh”, et il est temps que je partage ma configuration basée sur une des configurations de base nommée “Kushal”. Pour utiliser cette config, il suffit d’ajouter dans sa config fish: oh-my-posh init fish

La configuration que je souhaite avoir sur toutes mes machines.

La théorie

Il me faut donc appliquer la documentation d'installation officielle pour Docker, utiliser le gestionnaire de paquet pour installer fish, quelques commandes magiques pour changer le shell par défaut, télécharger ma configuration de posh. Le tout tient dans un ou plusieurs scripts shell.

Voyons ce que ça donne dans un playbook Ansible.

Le livret de jeu (playbook point yameul)

Depuis le dépôt git:

---
- name: Install Tools
  connection: ssh
  hosts: all

  tasks:

    - name: Update System
      become: true
      ansible.builtin.apt:
        update_cache: true
        only_upgrade: true

    - name: Install Fish
      become: true
      ansible.builtin.apt:
        name: fish

    - name: Installing Docker
      ansible.builtin.script: ./scritps/install-docker.sh
      register: my_output
      changed_when: my_output.rc

    - name: Rights to docker
      ansible.builtin.shell: sudo usermod -aG docker $USER
      register: my_output
      changed_when: my_output.rc

    - name: Install Oh-My-Posh
      ansible.builtin.script: ./scritps/install-ohmyposh.sh
      register: my_output
      changed_when: my_output.rc

    - name: Set Fish as default shell
      ansible.builtin.shell: sudo chsh -s /usr/bin/fish $USER
      register: my_output
      changed_when: my_output.rc

Cela applique sur chaque machine de l'inventaire les tâches listées et indique si tout s'est bien effectué.

Ansible va me devenir indispensable très rapidement et je vais trouver rapidement de nouveaux cas d'usages: Comme pour le déploiement d'applications et de services.