Synchroniser paquet installer entre 2 machines

Bonjour,

Le contexte: 2 serveurs dont l’un est en sauvegarde vis a vis de l’autre (si l’un des deux tombe le second prend le relais)
Presque tout est bon, il me manque plus que lorsqu’on installe et configure un paquet sur l’un des deux serveurs celui ci est installer et configurer de la même manière sur l’autre serveur.
Je voulais savoir s’il y avait un moyen qui existait déjà pour faire cela ? ou même si ce n’est pas la configuration au moins synchroniser les paquets, avec leur version ça serais bien.

@ Bientôt

Totorux

Salut,

[quote]### Serveur 1
dpkg --get-selections > paquets.list

Serveur 2

sudo dpkg --set-selections < paquets.list
sudo apt-get dselect-upgrade
sudo apt-get dist-upgrade
sudo apt-get upgrade
[/quote]

Salut,

Merci de ta réponse, c’est se que j’avais déjà lue, mais je voulais savoir s’il y avait un programme susceptible de faire cela tout seul. Au lieu de scripter cela.

@ Plus

Totorux

Re,

Tu es sous Debian, pour les presses bouton ce n’est pas la distribution idéale :slightly_smiling:

C’est vrais :wink:

Mais bon ça serais tellement simple pour les admin :wink:

Bon je vais voir comment scripter cela.

Merci bien

Totorux

Bonjour,

Pour ceux que ça intéresse j’ai commencé une ébauche de script, je suis contiens qu’il manque des choses (récupération des réponses au script d’installation notamment si quelqu’un à une idée je suis preneur).
Le script doit être installé sur les deux machines, et exécuter une première fois (sur chaque machine) pour qu’il créé son fichier de configuration.

#!/bin/bash

##############################################################################
#                                                                            #
#   Description : Script de synchronisation de paquets entre deux serveurs   #
#   OS          : Linux                                                      #
#   Licence     : GPLv3                                                      #
#   Version     : 0.1                                                        #
#   Author      : Schneider Benoit <ton.ami.totoro AT gmail.com>             #
#   Web site    : https://www.totorux.info                                   #
#                                                                            #
#   Language    : French                                                     #
#                                                                            #
#    This file is part of sync-pkg.sh                                        #
#                                                                            #
#    Foobar is free software: you can redistribute it and/or modify          #
#    it under the terms of the GNU General Public License as published by    #
#    the Free Software Foundation, either version 3 of the License, or       #
#    (at your option) any later version.                                     #
#                                                                            #
#    Foobar is distributed in the hope that it will be useful,               #
#    but WITHOUT ANY WARRANTY; without even the implied warranty of          #
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           #
#    GNU General Public License for more details.                            #
#                                                                            #
#    You should have received a copy of the GNU General Public License       #
#    along with Foobar.  If not, see <http://www.gnu.org/licenses/>.         #
#                                                                            #
##############################################################################


##Variables

confdir="/etc/sync-pkg"
path="/tmp/sync-pkg"
paquetsnew="`echo $path`/pkg.list"
paquetsold="`echo $path`/pkg.old"
paquetdist="`echo $path`/pkg.dist"

###Script###

##Initialisation

	if [ -e $confdir/sync-pkg.conf ]
	then

		echo "##########################################"
		echo "### Fichier de configuration présent ! ###"
		echo "##########################################"

		source $confdir/sync-pkg.conf
	else
		echo
		echo "###########################################"
		echo "### Création du fichier deconfiguration ###"
		echo "###########################################"
		echo
		echo "Création du dossier /etc/sync-pkg"
			mkdir $confdir

		echo "Indiquer le nom de l'utilisateur de synchronisation sur le serveur LOCAL (celui ci doit être déja existant !) :"
			read utillocal
			echo "utillocal=$utillocal" >> $confdir/sync-pkg.conf

		echo "Indiquer le nom de l'utilisateur de synchronisation sur le serveur DISTANT (celui ci doit être déja existant !) :"
			read utilcopie
			echo "utilcopie=$utilcopie" >> $confdir/sync-pkg.conf
		echo
		echo "Indiquer l adresse du serveur distant :"
			read ipservdist
			echo "ipservdist=$ipservdist" >> $confdir/sync-pkg.conf
		echo
		echo "Pour fonctionner, il ce script à besoin de se conencter de façon seul à la machine distante"
		echo "Pour cela nous allons devoir généré des certificats."
		echo "Attention lors de la génération de celui ci une passe phrase vous sera demandé, elle devra rester vide. "
		echo
		echo "#############################"
		echo "### Génération de la clef ###"
		echo "#############################"
		echo
			ssh-keygen -t rsa
		echo
		echo "############################"
		echo "### Transfére de la clef ###"
		echo "############################"
		echo
			mkdir /tmp/.ssh
			cp .ssh/id_rsa.pub /tmp/.ssh/authorized_keys2
			scp -r /tmp/.ssh $utilcopie@$ipservdist:/home/$utilcopie/
			rm -rf /tmp/.ssh
		echo "Clef d identification transféré, penser à faire de même sur l'autre serveur"
		echo
	fi

##Synchro

	if [ -e $confdir/sync-pkg.conf ]
	then

##Récupération liste paquets

	echo "##########################################"
	echo "### Sauvegarde liste paquets installer ###"
	echo "##########################################"

		if [ -d $path ]
		then
		echo
		else
			echo "Création du dossier temporaire"
			mkdir $path
			touch $paquetdist
			touch $paquetsold
			chown -R $utillocal $path
		fi

	dpkg --get-selections > $paquetsnew

##Comparaison ancien liste et nouvelle, et en cas de différences envoit vers le serveur distant	

		if [ -e $paquetsnew ]
		then
			cmp $paquetsnew $paquetsold 1>/dev/null 2>&1; diff=$?
				if [ $diff -eq 0 ];
				then
					echo "Les fichiers sont identiques"
				elif [ $diff -eq 1 ];
				then
					echo "Les fichiers sont différents"
					echo "Copie de la liste sur le serveur distant"
					scp $paquetsnew $utilcopie@$ipservdist:$paquetdist
					cp $paquetsnew $paquetsold
				else
					echo "Impossible d'accéder aux fichiers !"
				fi
		fi
	fi

##Installation des nouveaux paquets

	if [ -e $paquetdist ]
	then
		echo "Mise à niveau des paquets"
		dpkg --set-selections < $paquetdist
		apt-get -y dselect-upgrade
		apt-get -y upgrade
		rm $paquetdist
	fi

Je suis ouvert à toutes critiques surtout si elles sont constructives :wink:
Je mettrais prochainement le script dans sa version française et anglaise sur mon site voilou.

Bonne journée

Totorux

Personnellement, je n’utilise plus là méthode dpkg --get-selections depuis que j’ai Lu ce post : changement-de-serveur-comment-sauvegarder-la-config-du-pc-t29237.html#p291727

Bonsoir,

En effet cela est intéressant :wink: Je vais modifier tout ça en conséquence.

Merci

Totorux