Sauvegarder la configuration de ses serveurs Linux dans un dépôt Git
Pour garder une trace des modifications faites à la configuration d'un serveur Linux, j'utilise etckeeper. C'est un outil qui va surveiller toutes les modifications faites au dossier /etc et qui va les conserver en utilisant git (par défaut), en créant un commit, à chaque évolution du dossier.
Pour aller plus loin, il est possible de faire remonter les modifications vers une origine commune afin de conserver l'ensemble des configurations des serveurs dans un seul endroit.
Evidemment, il est préférable de ne pas envoyer ces informations vers un dossier public, tout le monde aurait alors accès à vos clés privées et potentiellement l'accès à quelques mots de passe.
De mon côté, je publie sur un Gitea privé, comme je vous en avais parlé il y a quelques temps.
Pour configurer la remontée des informations, c'est assez simple. Voici comment faire, sur le serveur Gitea qui hébergera les sauvegardes, créez un repository par site. Pour ma part, j'ai choisi de créer une organisation dédiée à la gestion des serveurs, c'est mieux rangé ainsi. Si vous souhaitez aller un peu plus loin, vous pouvez éventuellement créer un utilisateur dans Gitea afin que votre compte ne soit pas directement utilisé. Dans ce cas, il faut éditer l'utilisateur pour qu'il ait accès à tous les dépôts.
Ensuite, sur le serveur dont on veut effectuer la sauvegarde, il faut passer root et aller dans le dossier /etc
sudo su
cd /etc
puis nous allons ajouter une origine au git présent dans le dossier /etc
git remote add origin https://monserveurgitea.com/Organisation/Depot.git
dans mon cas, j'utilise https car ssh n'est pas disponible, j'ajoute l'url complète contenant l'utilisateur et le mot de passe
git remote set-url origin "https://utilisateur:mot-de-passe@monserveurgitea.com/Organisation/Depot.git"
Evidemment, il faudra modifier la commande pour y mettre l'utilisateur, son mot de passe ainsi que l'url complète du dépôt.
Pour effectuer une sauvegarde, nous faisons, simplement, un petit push afin d'envoyer les données actuelles
git push origin master
Enfin, il n'y a plus qu'à mettre un push journalier, ou avec la régularité que vous souhaitez, dans le cron (de root évidemment), afin d'avoir une mise à jour régulière. Il ne faut pas oublier d'ajouter la navigation dans le dossier telle que
cd /etc; git push origin master;
Il ne reste plus qu'à répéter l'opération sur tous les serveurs dont on souhaite sauvegarder la configuration.