Utilisation de Chezmoi

Publié le 11 avr. 2021

Chezmoi ? Euh c’est quoi ce titre ?

Il y a quelques semaines j’ai acheté Raspberry PI 400. Je ferais probablement un article sur ce bel objet.

Lorsque j’ai reçu le RPI 400 il s’est posé une question : “mince, faut que je copie mes fichiers de conf”. Alors oui c’est plutôt simple sauf que quand vous modifiez un fichier sur l’un autre ou ordinateur il ne faut pas oublier de le copier vers l’autre et ainsi de suite. Totalement possible, juste pénible.

Lors du FOSDEM 2021 j’ai découvert l’outil chezmoi.

Cet outil utilise un dépôt git et permet de réaliser la synchronisation entre les différentes machines sur mes fichiers de configurations dont j’ai besoin.

A toute fin utile je précise que mon dépôt git utilisé est privé pour ce stockage de fichiers.

Pourquoi je suis parti sur cet outil ? Voici à mon sens quelques aspects intéressants :

  • écrit en GO ;
  • des packages disponibles pour beaucoup de distributions Linux ;
  • multi OS ;
  • licence MIT.

Pour ma part je suis sous Debian j’ai donc procédé à l’installation en trouvant le .deb depuis le site officiel (https://github.com/twpayne/chezmoi/releases/tag/v2.0.9) :

dpkg -i chezmoi_2.0.9_linux_amd64.deb

Quels sont les fichiers de configurations que je souhaite synchroniser ? Voici une liste (non exhaustive) me concernant :

  • $HOME/.ssh/config ;
  • $HOME/.vimrc ;
  • $HOME/.gitconfig ;
  • $HOME/.screenrc ;
  • etc…

On y va ?

Voici les premières commandes que nous allons utiliser pour initialiser :

chezmoi init
chezmoi add ~/.ssh/config
chezmoi add ~/.screenrc

Globalement avec ces commandes nous venons de réaliser :

  • initialiser chezmoi ;
  • ajouter le fichier ~/.ssh/config et ~/.screenrc.

Puis ensuite il faut alors envoyer un commit vers notre dépôt git local :

chezmoi cd #en fait ça fait un cd $HOME/.local/share/chezmoi
git status #permet de voir ce qui est en attente
git add dot_ssh/
git add dot_screenrc
exit

Résumé de la situation : nous avons initialisé chezmoi et ajouté des fichiers. Attention même si on a eu recours à git, n’oubliez pas que c’est un dépôt local. Autant le dire il faut maintenant avoir recours à un dépôt git distant qui puisse être utilisé pour les divers machines pour lesquelles nous souhaitons retrouver nos fichiers. N’oubliez pas qu’un dépôt git s’il contient des données sensibles il faut bien faire attention. De mon côté j’utilise toujours mon instance gitea et j’ai pour l’occasion mis en place un dépôt git privé.

Voici les commandes que j’ai alors utilisé :

cd $HOME/.local/share/chezmoi/
git branch -M main
git remote add origin <insérer ici votre URL de dépôt>
git push -u origin main

Maintenant sur votre ordinateur voici les commandes que nous allons utiliser :

chezmoi init <insérer ici votre URL de dépôt>
chezmoi apply

Ainsi, vous allez retrouver alors vos fichiers.

Maintenant il est nécessaire de bien penser à continuer à synchroniser nos fichiers.

Cela se fait assez simplement :

chezmoi edit ~/.ssh/config
chezmoi diff #on regarde ce qui a changé
chezmoi cd #on va dans le dossier chezmoi du dépôt git local
git commit -am 'suppression serveurs inutiles' #on met un commentaire sur les modifications apportées
git push #on envoie tout ça

Et enfin pour que sur un autre ordinateur on puisse bénéficier des modifications on va effectuer tout simplement la commande suivante :

chezmoi update

Relativement simple, non ?