05 - Transfert de Conteneur
A - Transfert de Conteneur :
Voici mon exemple de configuration pour utiliser l'API LXD et le protocole Simplestreams à des fins de migration :
Encore une fois, vous avez besoin de deux serveurs avec LXD configuré. J'appellerai votre machine locale serveur1 et un serveur distant j'appellerai serveur2.
1. Configurer le serveur :
Ces étapes sont à faire sur les 2 Serveurs LXC.
Tapez la commande suivante pour activer un accès à distance via API en indiquant l'adresse IP du serveur LXC sur lequel on est connecté.
lxc config set core.https_address 192.168.1.6:8443
Définissez le mot de passe pour le démon server2 lxd : Remplacez le MOT DE PASSE ici par le mot de passe réel.
lxc config set core.trust_password PASSWORD
2. Configurer un local nommé server1 :
Tapez la commande suivante sur le serveur1 pour ajouter le serveur2 et inversement :
lxc remote add lxcXX.v.sdem.fr 192.168.1.6
Vous pouvez lister vos télécommandes et vous verrez « server2 » répertorié comme suit :
lxc remote list
3. Transfert du conteneur :
Instantané 1
Création d'une capture instantanée pour le conteneur transféré.
lxc snapshot {CT_NAME} {NOM_SNAP}
Transfert 1
lxc copy {CT_NAME}/{NOM_SNAP} server2:{CT_NAME} --verbose
4. Script de Transfert de Conteneur :
Voici un script permettant d'automatiser avec Salt le transfert d'un conteneur entre 2 serveurs LXC.
##############################################################
# Auteur : mkermorvant #
# Date de modification : 20240115 #
# #
# Description : Script de migration de conteneur lxc #
# #
##############################################################
#! /bin/bash #
# #
##############################################################
# Variables :
echo""
read -p "Entrez le nom de votre Serveur Source: " SOURCE
read -p "Entrez le nom actuel de votre conteneur: " CT_NAME
read -p "Entrez le nom de votre Snapshot: " SNAP_NAME
echo ""
echo "Début de la Migration du Conteneur."
##############################################################
# 1 - Création de la Snapshot
echo "Création de la Snapshot."
echo""
salt ${SOURCE} cmd.run "lxc snapshot ${CT_NAME} ${SNAP_NAME}"
# 2 - Information supplémentaire
salt ${SOURCE} cmd.run "lxc remote list"
read -p "Entrez le nom de votre Remote Serveur: " REMOTE_SERV
# 3 - Migration du conteneur
salt ${SOURCE} cmd.run "lxc copy ${CT_NAME}/${SNAP_NAME} ${REMOTE_SERV}:${CT_NAME} --verbose"
echo ""
# 4 - Suppression du Conteneur de Base
read -r -p "Voulez-vous supprimer le conteneur ? [y/N] " response
case "$response" in
[yY][eE][sS]|[yY])
echo "Suppression de votre premier conteneur."
salt ${SOURCE} cmd.run "lxc stop ${CT_NAME}"
salt ${SOURCE} cmd.run "lxc delete ${CT_NAME}"
echo ""
echo "Le transfère de votre conteneur LXC est maintenant fini !"
;;
*)
echo "Le transfère de votre conteneur LXC est maintenant fini !"
;;
esac
B - Création de Conteneur :
1. Script de Création de conteneur LXC :
#############################################################
# Auteur : mkermorvant #
# Date de modification : 20240108 #
# #
# Description : Script de création de conteneur lxc #
# #
#############################################################
# #
#! /bin/bash #
# #
#############################################################
# Variables :
echo""
read -p "Entrez le nom de votre Serveur LXC: " SERVER
read -p "Entrez la distribution à installer: " DISTRIB
read -p "Entrez la version à installer: " VERSION
read -p "Entrez le nom de votre conteneur: " CONTENEUR
read -p "Donner le nom de votre snapshot: " SNAP
echo ""
echo "Début de la création du conteneur."
############################################################
# 1 - Création du conteneur
salt ${SERVER} cmd.run "lxc launch ${DISTRIB}:${VERSION} ${CONTENEUR}"
echo ""
# 2 - Création d'une Snapshot
echo "Création d'une Snapshot."
salt ${SERVER} cmd.run "lxc snapshot ${CONTENEUR} ${SNAP}"
echo ""
# 3 - Infos Conteneur
salt ${SERVER} cmd.run "lxc info ${CONTENEUR}"
echo ""
echo "Votre conteneur ${CONTENEUR} est maintenant créé et opérationnelle"
echo ""

