Meetup Debian

Reprenez le contrôle de vos données avec votre cloud auto-hébergé

Logo Debian
Logo Debian

Sommaire


Présentation Nextcloud


Présentation Nextcloud

Logo Nextcloud
Logo Nextcloud

Présentation LXC / LXD


Virtualisation / Para-Virtualisation / Isolation

Virtualisation Para-Virtualisation Isolation

Source : Wikipedia


Présentation LXC

Logo LXD
Logo LXD

Présentation LXD


Démo d’installation


Prérequis

host cloud.gg42.eu
host 51.15.240.32
host collabora.gg42.eu

Démo d’installation cloud

# Installation de git
apt update && apt install -y git
# Clonage du dépôt
git clone https://github.com/AlbanVidal/cloud_full.git
cd cloud_full
# Configuration de l'hôte, installation de lxd via snapd
./10_install_start.sh
# Création et configuration des conteneurs
./11_install_next.sh

Présentation architecture

Architecture


Démo Nextcloud


Nextcloud Web


Nextcloud client Bureau


Nextcloud client Android


Mon utilisation


Scan de sécurité


Démo LXD


Démo LXD


LXD

Création de nouveaux conteneurs

# Depuis l'hôte cloud

# Lister les conteneurs
lxc ls

# Créer et démarrer des conteneurs
lxc launch images:debian/stretch debian-9
lxc launch images:debian/buster debian-10

# Créer sans démarrer
lxc init images:ubuntu/18.04 ubuntu-1804
lxc init images:centos/7 centos-7

LXD

Commandes de base

# Copier un conteneur
lxc copy debian-10 d10

# Démarrer le conteneur copié
lxc start d10

# Entrer dans un shell
lxc shell d10

# Exécuter une commande simple
lxc exec d10 -- hostname

# Exécuter une commande plus complexe
lxc exec d10 -- bash -c "hostname;date && uptime"

LXD

Copier un fichier depuis - vers un conteneur

# Copier un fichier vers le conteneur
lxc file push /etc/hosts d10/tmp/test-push
lxc exec d10 -- cat /tmp/test-push

# Récupération d'un fichier du conteneur
lxc file pull d10/etc/network/interfaces d10-interfaces
cat d10-interfaces

LXD

Snapshot

# Création d'un snapshot
lxc snapshot d10 initial
lxc ls d10

# Destruction volontaire de fichiers
# Couche 8 du modèle OSI
lxc exec d10 -- rm -rf /etc

# Vérification de la grosse boulette
lxc exec d10 -- ls -l /etc

# Restauration du snapshot
lxc restore d10 initial

# Vérification de la restauration
lxc exec d10 -- ls -l /etc

# Supprimer le snapshot
lxc delete d10/initial

LXD

Limitation des ressources

# Limiter la mémoire
lxc exec d10 -- free -m
lxc config set d10 limits.memory 128MB
lxc exec d10 -- free -m

# Limiter le nombre de cpu
lxc shell d10
## top
lxc config set d10 limits.cpu 1
lxc shell d10

# Supprimer les limites
lxc config unset d10 limits.memory
lxc config unset d10 limits.cpu

LXD

Profils

# Lister les conteneurs avec les profils attachés
lxc ls --fast

# Lister les profils
lxc profile list

# Ajouter un profil
lxc profile create 1cpu512ram
lxc profile set 1cpu512ram limits.cpu 1
lxc profile set 1cpu512ram limits.memory 512MB

# Afficher le profil
lxc profile show 1cpu512ram

# Ajouter le profil à un conteneur
lxc profile add d10 1cpu512ram

# Supprimer les profil
lxc profile delete 1cpu512ram

LXD

Info et config d’un conteneur

# Status, type, profils, processus, mémoiré, réseau, snapshots...
lxc info d10

# Image, type (éphémère ou non), profils...
lxc config show d10

LXD

Mode distant - Configuration

# Activation du mote distant sur l'hôte « demo »
lxc config set core.https_address [::]:8443
lxc config set core.trust_password MonMotDePasse

# Ajout de l'hôte « demo » depuis l'hôte « cloud »
lxc config set core.https_address [::]:8443
lxc remote add demo demo.gg42.eu
lxc remote list

LXD

Mode distant - Utilisation

# Lister les conteneurs sur l'hôte distant
lxc list demo:

# Actions sur un conteneur distant
lxc exec demo:rvprx -- hostname

# Ouvrir un shell sur un conteneur distant
lxc shell demo:rvprx

# Déplacer un conteneur
lxc stop d10
lxc profile remove d10 1cpu512ram
lxc move local:d10 demo:
lxc list
lxc list demo:

# Ouvrir un shel sur le conteneur copié
lxc start demo:d10
lxc shell demo:d10

LXD

Installation avec snap

# Installation de snapd
apt update && apt install snapd udev btrfs-tools

# Installation lxd via snap en version LTS
## version 2.0 (11/04/2016) Juin 2021
## version 3.0 (02/04/2018) Juin 2023
snap install lxd --channel=3.0

# Initialisation lxd
lxd init

LXD

Installation avec .deb maison

NE PAS UTILISER EN PRODUCTION - TESTS SEULEMENT

# Ajout clé dépôt
wget -O - http://deb.zordhak.fr/gpg.key|apt-key add -

# Ajout dépôt
wget -O /etc/apt/sources.list.d/deb.zordhak.fr.list http://deb.zordhak.fr/deb.zordhak.fr.list

# Installation LXD
apt update && apt install lxd udev btrfs-tools

# Initialisation lxd
lxd init

# Reboot pour prise en compte utilisateur non privilégié
systemctl reboot

LXD et criu

checkpoint and restore in userspace

# Ajout du dépôt Sid
echo 'deb http://ftp.fr.debian.org/debian/ sid main' > /etc/apt/sources.list.d/sid.list

# Changement de la priorité du dépôt sid
echo -e 'Package: *\nPin: release a=unstable\nPin-Priority: 50' > /etc/apt/preferences.d/sid

# Installation de criu
apt update && apt install criu

LXD et criu

Migration d’un conteneur à chaud entre deux isolateur
Utilisation
lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/<snapshot>]] [--container-only]

LXD et criu

Migration d’un conteneur à chaud entre deux isolateur
Préparation
# Création d'un conteneur sur « lxd1 » et installation openssh
lxc launch images:debian/buster d10
lxc exec d10 -- bash -c "apt update && apt install openssh-server screen"

# Mot de passe root et configuration ssh POUR LES TESTS !
lxc exec d10 -- bash -c "passwd"
lxc exec d10 -- sed -i 's/#\(PermitRootLogin\).*/\1 yes/' /etc/ssh/sshd_config
lxc exec d10 -- systemctl restart sshd

# Connexion ssh et ouverture de screen
ssh root@<IP-d10>
  # Dans la session ssh
  screen
    # Dans le screen
    top

# Détacher le screen, sortir du conteneur
<Ctrl> + a d
exit

LXD et criu

Migration d’un conteneur à chaud entre deux isolateur
Migration
# Ajouter « lxd2 » depuis « lxd1 »
lxc remote add lxd2 lxd2.gg42.eu

# Déplacement du conteneur
lxc move d10 lxd2:

# Depuis le noeud nextcloud se connecter en ssh et ouvrir screen
ssh root@<IP-d10>
  # Dans la session ssh
  screen -ls
  screen -x

Liens


Nextcloud


Collabora Online


LXC / LXD


Autres liens


Questions ?


Télécharger au format présentation

git clone https://github.com/hakimel/reveal.js.git
cd reveal.js
wget -q https://doc.zordhak.fr/meetup-md -O Présentation_Meetup_cloud_privé.md
wget -q https://doc.zordhak.fr/meetup-html -O Présentation_Meetup_cloud_privé.html

FIN

doc.zordhak.fr/meetup

Alban Vidal