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