Go to file
Francois Lesueur 4c1e7bde33 plus de caches
2023-03-02 12:38:30 +01:00
doc/images ajout image snster 2023-01-15 21:03:43 +01:00
files plus de caches 2023-03-02 12:38:30 +01:00
.gitignore plus de caches 2023-03-02 12:38:30 +01:00
clean.sh Initial commit 2022-11-30 19:43:06 +01:00
DETAILS.md update doc snster 2023-01-14 09:11:53 +01:00
LICENSE Initial commit 2022-11-30 19:43:06 +01:00
README.md plus de caches 2023-03-02 12:38:30 +01:00
sparsify.sh fix sparsify 2023-02-08 12:26:39 +01:00
trim_enable.sh ajout du trim_enable.sh 2023-02-08 12:40:52 +01:00
Vagrantfile repassage à un vagrantfile, suppr init.sh 2023-03-01 15:01:55 +01:00

kaz-vagrant

Kaz est un CHATONS du Morbihan. Nous proposons ici un moyen de le répliquer dans une VM. Il y a des éléments de configuration à définir avant d'initialiser ce simulateur.

Le principe est de faire fonctionner un simulateur de notre CHATONS dans une VirtualBox pour mettre au point nos différents services.

Nous utilisons :

  • Vagrant pour automatiser la création de la Machine Virtuelle
  • VirtualBox pour une VM isolée
  • SNSTER pour créer des services internet tiers et notre serveur
  • LXC pour faire tourner ces services dans des conteneurs distincts (ie, kaz-prod est un conteneur LXC)
  • Docker pour chaque service de notre serveur

À la fin, nous obtenons une maquette d'un petit internet simulé, avec du DNS, des mails tiers, et notre serveur kaz-prod dans un coin.

topologie

Pré-requis

Vous avez besoin de vagrant, VirtualBox et éventuellement git.

Installation

  • Télécharger le dépôt kaz-vagrant, branche develop-snster, ou utilisez la commande git :
git clone https://git.kaz.bzh/KAZ/kaz-vagrant.git # pour essayer
git clone git+ssh://git@git.kaz.bzh:2202/KAZ/kaz-vagrant.git # pour contribuer
cd kaz-vagrant/
  • (Optionnel) Ajustez éventuellement la mémoire et les cpus utilisés dans Vagrantfile (par défaut 4GB et 2 vCPUs)

  • Pour créer tout l'univers Kaz il faut se placer dans le répertoire et lancer la commande :

vagrant up

Cette étape peut-être (très) longue. Notamment, la construction de kaz-prod se fait dans un conteneur LXC, dans lequel les overlays docker passent par un filesystem plus lent qu'en natif... Comptez entre 40 minutes et quelques heures, selon la connexion réseau et les performances de la machine.

Utilisation

Les utilisateurs créés sont

  • debian/debian
  • root/root.

Si vous avec laissé la création de Kaz, il faut bien attendre la fermeture automatique de la fenêtre et l'apparition de l'écran de connexion (on vous a dit que c'était long).

Lors du démarrage de la VM, il faut lancer SNSTER et éventuellement les conteneurs :

cd /root/snster-kaz
snster start

Normalement, kaz-prod lance automatiquement les dockers (dans son rc.local), mais si ça ne marche pas bien il peut falloir les relancer (que se passe-t-il si on relance container.sh pendant que container.sh n'est pas encore fini ? faut-il l'enlever du rc.local ? Le lancement initial peut rater, probablement si le DNS n'est pas encore fonctionnel lors du lancement, à mettre au point et peut-être enlever du rc.local ?)

snster attach kaz-prod -x /kaz/bin/container.sh start

Vous pouvez alors (toutes les commandes snster doivent être exécutées dans /root/snster-kaz) :

  • Afficher un bureau graphique sur une machine tierce à Kaz : snster display isp-a-home. Sur cette machine, vous pouvez :
    • Ouvrir Firefox et naviguer vers :
      • https://www.kaz.sns, le Kaz interne à la VM
      • https://listes.kaz.sns, le sympa interne à la VM
      • https://www.kaz.bzh, le vrai Kaz
    • Ouvrir claws-mail et retrouver les comptes mails configurés :
      • contact1@kaz.sns à contact4@kaz.sns, hébergés sur le kaz-prod de la VM
      • email@isp-a.sns, hébergé dans le conteneur LXC isp-a-infra
  • Travailler sur kaz-prod : snster attach kaz-prod
  • Afficher un plan de réseau : snster print
  • Le système de fichiers de kaz-prod est accessible directement dans la VM:
    • /kaz-prod/ [VM] correspond à / [kaz-prod]
    • /kaz [VM] correspond à /kaz [kaz-prod]
  • Il est probablement pratique d'installer son environnement de développement sur la VM, avec ses clés SSH et son éditeur favori.

Il y a un aperçu de l'état des services avec l'url https://kaz.sns/status/allServices.html

status

Les erreurs 502 correspondent à des fonctions en cours de développement. Les message "Can't open this page" correspond au fait que le services refuse pour des raison de sécurité de de fonctionner embarqué dans une page.

Vous pouvez également démarrer firefox avec les URL suivantes:

Il vous faudra accepter les éventuelles alertes de sécurité pour certificat absent (web et messagerie)

Mise au point

Il est possible d'interrompre la création à la coquille vide (juste la VM sans les services KAZ) pour des question de mise au point avec la commande :

NOKAZ="true" vagrant up

Dans ce cas, il faudra ensuite lancer dans la VM :

KAZGUARD="true" /root/vm-install-kaz.sh

Pour détruire la VM et recommencer :

vagrant destroy

## Accélération de la construction avec un proxy cache local

Au tout début de la construction de la VM, un proxy Squid et un proxy Dockerhub sont installés au niveau de la VM. Ils font du cache et sont ensuite utilisé lors des apt-get du provisionning de la VM puis lors des constructions des conteneurs LXC et des dockers. Certains téléchargements ne sont pas encore mis en cache (soit parce que certains téléchargements se font hors de ce proxy, soit par l'utilisation du HTTPS qui n'est pas (encore) intercepté pour faire ce cache), mais cela diminue déjà beaucoup le trafic réseau lors de la construction et lors des reconstructions partielles ensuite.

Il est possible de configurer ce proxy pour utiliser un proxy du réseau local à son tour. L'intérêt est d'avoir un cache persistant lors de la reconstruction de la VM, ou de pouvoir rediriger certaines requêtes (dépôts Debian ou Alpine) vers des miroirs locaux. Pour cela, il faut :

  • Un fichier files/customVM.sh. Un fichier files/customVM.sh.dist est fourni en exemple : il suffit de le renommer en customVM.sh, puis de modifier l'IP du proxy upstream dans la ligne cache_peer. Il s'adressera par exemple à un squid sur le réseau local.
  • Un fichier files/snster-kaz/kaz/prod/customKaz.sh. Un fichier files/snster-kaz/kaz/prod/customKaz.sh.dist est fourni en exemple : il suffit de le renommer en customKaz.sh, puis de modifier l'IP du registre docker sur le réseau local. Pour installer ce registre sur une Debian :
    • apt install docker-registry
    • Éditer /etc/docker/registry/config.yml :
      • Enlever la section auth
      • Ajouter proxy: remoteurl: https://registry-1.docker.io

Installation avancée

L'installation avancée, notamment pour utiliser d'autres miroirs ou des caches APT, est décrite dans le fichier DETAILS.md.