Skip to main content

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 :

image.png

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

image.png

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 ""