Compare commits
12 Commits
fafefe10ff
...
master
Author | SHA1 | Date | |
---|---|---|---|
1702f54da2 | |||
85dbf633ea | |||
ae19acc03e | |||
|
e70caa8b46 | ||
|
e8a4ef7c2f | ||
f2543879e9 | |||
62b484dc01 | |||
|
ffcd256175 | ||
3da2f37938 | |||
ef25716679 | |||
7cb69d1880 | |||
f907a5c422 |
58
README.md
58
README.md
@@ -1,6 +1,6 @@
|
||||
# kaz-vagrant
|
||||
|
||||
[Kaz](https://kaz.bzh/) 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.
|
||||
[Kaz](https://kaz.bzh/) est un CHATONS du Morbihan. Nous proposons ici un moyen de le répliquer dans une VM.
|
||||
Le principe est de faire fonctionner un simulateur de notre CHATONS dans une VirtualBox pour mettre au point nos différents services.
|
||||
|
||||
Nous utilisons :
|
||||
@@ -10,7 +10,7 @@ Nous utilisons :
|
||||
* 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 nos serveurs hoster-a-kaz1 et hoster-b-kaz2 dans un coin.
|
||||
À la fin, nous obtenons une maquette d'un petit internet simulé, avec du DNS, des mails tiers, et nos serveurs hoster-a-kaz1 (principal) et hoster-b-kaz2 (secondaire) dans un coin.
|
||||
|
||||

|
||||
|
||||
@@ -19,6 +19,11 @@ Nous utilisons :
|
||||
|
||||
Vous avez besoin de [vagrant](https://www.vagrantup.com/), [VirtualBox](https://www.virtualbox.org/) et éventuellement git.
|
||||
|
||||
Veillez à avoir des versions de vagrant et VB compatibles. Par exemple, une
|
||||
version trop récente de VB empêche d'utiliser le vagrant du repo debian.
|
||||
|
||||
* VirtualBox: 7.0.26 (https://www.virtualbox.org/wiki/Download_Old_Builds_7_0)
|
||||
* Vagrant: 2.3.7 (repo debian)
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -30,6 +35,7 @@ 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 :
|
||||
```bash
|
||||
vagrant up
|
||||
@@ -47,7 +53,7 @@ Les utilisateurs créés sont
|
||||
|
||||
Se connecter en root/root
|
||||
|
||||
Lors du démarrage de la VM, il faut lancer SNSTER :
|
||||
Lors du démarrage de la VM, il faut lancer SNSTER (normalement c'est automatique ?) :
|
||||
```bash
|
||||
cd /root/snster-kaz
|
||||
snster start
|
||||
@@ -65,18 +71,15 @@ Vous pouvez alors (toutes les commandes snster doivent être exécutées dans `/
|
||||
* `https://www.kaz.sns`, le Kaz interne à la VM
|
||||
* `https://listes.kaz.sns`, le sympa interne à la VM
|
||||
* `https://pad2.kaz.sns`, le pad sur kaz2
|
||||
* `https://www.kaz.bzh`, le vrai Kaz
|
||||
* `https://www.kaz.bzh`, le vrai Kaz (.bzh)
|
||||
* 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 hoster-a-kaz1 : `snster attach hoster-a-kaz1`
|
||||
* Afficher un plan de réseau : `snster print`
|
||||
* Le système de fichiers de hoster-a-kaz1 est accessible directement dans la VM:
|
||||
* `/kaz1-prod/` [VM] correspond à `/` [hoster-a-kaz1]
|
||||
* `/kaz` [VM] correspond à `/kaz` [hoster-a-kaz1]
|
||||
* Il est probablement pratique d'installer son environnement de développement sur la VM, avec ses clés SSH et son éditeur favori.
|
||||
|
||||
Dans Vagrantfile, existent des répertoires partagés entre le host et le VM mais pour qu'ils soient visibles depuis la VM, il faut démarrer la VM non pas avec VirtualBox mais avec Vagrant up.
|
||||
* Les systèmes de fichiers de hoster-a-kaz1 / hoster-b-kaz2 sont accessibles directement dans la VM :
|
||||
* `/kaz1/` [VM] correspond à `/` [hoster-a-kaz1]
|
||||
* `/kaz2/` [VM] correspond à `/` [hoster-b-kaz2]
|
||||
|
||||
Il y a un aperçu de l'état des services avec l'url https://kaz.sns/status/allServices.html
|
||||
|
||||
@@ -90,11 +93,11 @@ Vous pouvez également démarrer firefox avec les URL suivantes:
|
||||
* https://tableur.kaz.sns
|
||||
* https://pad.kaz.sns
|
||||
* https://depot.kaz.sns
|
||||
* https://agora.kaz.sns/login (compte contact1@kaz.local créé, mot de passe toto)
|
||||
* https://cloud.kaz.sns/login (compte contact1@kaz.local créé, mot de passe totototototototo1234 )
|
||||
* https://agora.kaz.sns/login (compte contact1@kaz.local créé, mot de passe T1totototo!)
|
||||
* https://cloud.kaz.sns/login (compte contact1@kaz.local créé, mot de passe T1totototo!)
|
||||
* https://sondage.kaz.sns
|
||||
|
||||
Il vous faudra accepter les éventuelles alertes de sécurité pour certificat absent (web et messagerie)
|
||||
Il vous faudra accepter les éventuelles alertes de sécurité pour certificat absent (web et messagerie) (normalement il n'y en a plus ?)
|
||||
|
||||
## Mise au point
|
||||
|
||||
@@ -103,12 +106,41 @@ Pour réinstaller Kaz sur kaz1 (avec suppression de /kaz, des volumes dockers et
|
||||
snster attach hoster-a-kaz1 -x "/root/kaz.sh"
|
||||
```
|
||||
|
||||
Pour reconstruire le conteneur kaz1 complètement, depuis la VM :
|
||||
```bash
|
||||
snster destroy hoster-a-kaz1
|
||||
snster create
|
||||
```
|
||||
|
||||
Pour détruire la VM et recommencer, depuis l'hôte :
|
||||
```bash
|
||||
vagrant destroy
|
||||
vagrant up
|
||||
```
|
||||
|
||||
## Développement de Kaz avec la VM
|
||||
|
||||
La VM peut être utilisée pour développer Kaz. Il existe différentes façons, chacun ses goûts, voici une possibilité. Cette méthode permet de développer dans son éditeur classique, sur son PC hôte, et d'avoir un SSH vers le conteneur Kaz.
|
||||
|
||||
### SSH vers le conteneur Kaz
|
||||
|
||||
Depuis l'hôte, dans le dossier `vagrant`, pour obtenir un shell sur le conteneur Kaz :
|
||||
```bash
|
||||
`vagrant ssh` # ssh vers la VM
|
||||
`sudo su` # passage root
|
||||
`cd /root/snster-kaz`
|
||||
`snster attach hoster-a-kaz1`
|
||||
```
|
||||
|
||||
### Édition depuis l'hôte
|
||||
|
||||
On va faire du sshfs pour voir les dossiers de la VM depuis l'hôte. Par exemple pour monter la racine du conteneur `hoster-a-kaz1` dans le dossier `vm` du dossier courant de l'hôte (rappel, le dossier `/kaz1` sur la VM est un lien symbolique vers le filesystem du conteneur `hoster-a-kaz1`) :
|
||||
```bash
|
||||
sshfs -p 2222 root@localhost:/kaz1/ vm/
|
||||
```
|
||||
|
||||
Ainsi, on peut éditer sur son PC et exécuter dans un terminal hors VM.
|
||||
|
||||
Accélération de la construction avec un proxy cache local
|
||||
---------------------------------------------------------
|
||||
|
||||
|
5
Vagrantfile
vendored
5
Vagrantfile
vendored
@@ -20,11 +20,6 @@ Vagrant.configure("2") do |config|
|
||||
end
|
||||
|
||||
|
||||
|
||||
#permet d'avoir un répertoire partagé entre la VM et le host
|
||||
config.vm.synced_folder "/tmp/", "/tmp_host"
|
||||
config.vm.synced_folder "files/", "/root/kaz-vagrant"
|
||||
|
||||
config.vm.provision "shell" do |s|
|
||||
s.inline = "/vagrant/files/vm-provision.sh"
|
||||
s.env = {"KAZGUARD" => "true", "HOSTLANG" => ENV['LANG'], "NOKAZ" => ENV['NOKAZ'], "KAZBRANCH" => ENV['KAZBRANCH']}
|
||||
|
@@ -19,7 +19,7 @@
|
||||
# --
|
||||
# NOM ; PRENOM ; EMAIL_SOUHAITE ; EMAIL_SECOURS ; ORGA ; ADMIN_ORGA ; NC_ORGA ; GARRADIN_ORGA ; WP_ORGA ; AGORA_ORGA ; WIKI_ORGA ; NC_BASE ; GROUPE_NC_BASE ; EQUIPE_AGORA ; QUOTA
|
||||
|
||||
Hello1;Contact1;contact1@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;1;tototototo
|
||||
Hello2;Contact2;contact2@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;1;tototototo
|
||||
Hello3;Contact3;contact3@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;10;tototototo
|
||||
Hello4;Contact4;contact4@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;10;tototototo
|
||||
Hello1;Contact1;contact1@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;1;T1totototo!
|
||||
Hello2;Contact2;contact2@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;1;T1totototo!
|
||||
Hello3;Contact3;contact3@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;10;T1totototo!
|
||||
Hello4;Contact4;contact4@kaz.sns;contact2@kaz.sns; ;N;N;N;N;N;N;N; ; ;10;T1totototo!
|
||||
|
@@ -4,7 +4,7 @@ dokuwiki
|
||||
garradin
|
||||
gitea
|
||||
jirafeau
|
||||
#mattermost
|
||||
mattermost
|
||||
roundcube
|
||||
#keycloak
|
||||
mobilizon
|
||||
|
@@ -68,7 +68,7 @@ traefikHost=dashboard
|
||||
########################################
|
||||
# ports internes
|
||||
|
||||
matterPort=8000
|
||||
matterPort=8065
|
||||
|
||||
########################################
|
||||
# noms des containers
|
||||
|
@@ -36,6 +36,10 @@ export DebugLog="${OUTPUT_DIR}/log/log-kaz-$(date +%y-%m-%d-%T)-"
|
||||
echo -e "\n #### secretGen\n"
|
||||
/kaz/bin/secretGen.sh
|
||||
|
||||
# echo "0 2 * * * root /kaz/bin/getX509Certificates.sh" >> /etc/cron.d/kaz-certs
|
||||
#ln -sf /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/certs/mail.pem
|
||||
#ln -sf /etc/ssl/private/ssl-cert-snakeoil.key /etc/ssl/private/mail.key
|
||||
|
||||
echo -e "\n #### install\n"
|
||||
/kaz/bin/install.sh
|
||||
|
||||
|
@@ -23,6 +23,7 @@ dashboard IN CNAME kaz1
|
||||
dashboard2 IN CNAME kaz2
|
||||
sondage IN CNAME kaz1
|
||||
webmail IN CNAME kaz1
|
||||
roundcube IN CNAME kaz1
|
||||
garradin IN CNAME kaz1
|
||||
wiki IN CNAME kaz1
|
||||
git IN CNAME kaz1
|
||||
|
@@ -22,7 +22,7 @@ DEBIAN_FRONTEND=noninteractive apt-get autoremove -y
|
||||
# KAZ specific things
|
||||
#installation de docker, docker-compose et on y fourre le user debian dans le groupe idoine
|
||||
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y dos2unix jq ldapvi argon2 docker.io docker-clean git apg curl sudo unzip rsync btrfs-progs ldap-utils unaccent # fuse-overlayfs
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y apache2-utils python3-ldap python3-email-validator python3-passlib python3-jinja2 dos2unix jq ldapvi argon2 docker.io docker-clean git apg curl sudo unzip rsync btrfs-progs ldap-utils unaccent # fuse-overlayfs
|
||||
usermod -G docker debian
|
||||
|
||||
# docker-compose
|
||||
@@ -65,6 +65,10 @@ cp -ar tls/root_ca.crt /usr/local/share/ca-certificates/
|
||||
mkdir -p /etc/letsencrypt/live/kaz.sns
|
||||
cp tls/wildcard.crt /etc/letsencrypt/live/kaz.sns/fullchain.pem
|
||||
cp tls/wildcard.key /etc/letsencrypt/live/kaz.sns/privkey.pem
|
||||
cp tls/wildcard.crt /etc/ssl/certs/mail.pem
|
||||
cp tls/wildcard.key /etc/ssl/private/mail.key
|
||||
cp tls/wildcard.crt /etc/ssl/certs/listes.pem
|
||||
cp tls/wildcard.key /etc/ssl/private/listes.key
|
||||
|
||||
# On sauve le proxy APT
|
||||
proxy=$(/sbin/ip route | awk '/default/ { print $3 }' | head -1)
|
||||
@@ -81,7 +85,7 @@ echo "{
|
||||
{
|
||||
\"httpProxy\": \"http://$proxy:3142\",
|
||||
\"httpsProxy\": \"http://$proxy:3142\",
|
||||
\"noProxy\": \"*.sns,127.0.0.1,localhost,127.0.0.0/8,100.64.0.0/10,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,agora\"
|
||||
\"noProxy\": \"app,*.sns,127.0.0.1,localhost,127.0.0.0/8,100.64.0.0/10,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,agora\"
|
||||
}
|
||||
}
|
||||
}" > /root/.docker/config.json
|
||||
|
2
files/sshd.conf
Normal file
2
files/sshd.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
PasswordAuthentication yes
|
||||
PermitRootLogin yes
|
@@ -87,11 +87,8 @@ http_port 3142" >> /etc/squid/squid.conf
|
||||
#faut virer exim, inutile
|
||||
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y exim4-base exim4-config exim4-daemon-light
|
||||
|
||||
#login ssh avec mot de passe
|
||||
sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/" /etc/ssh/sshd_config
|
||||
if ! grep -q "PasswordAuthentication yes" /etc/ssh/sshd_config 2>/dev/null; then
|
||||
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
|
||||
fi
|
||||
# config sshd
|
||||
cp "${VAGRANT_SRC_DIR}/sshd.conf" /etc/ssh/sshd_config.d/kaz.conf
|
||||
|
||||
# autorisation du routing et augmentation inotify
|
||||
if ! grep -q "net.ipv4.ip_forward" /etc/sysctl.conf 2>/dev/null; then
|
||||
@@ -200,9 +197,8 @@ auth:
|
||||
|
||||
|
||||
# On lie le filesystem de kaz-prod dans le /kaz de la VM pour le dév
|
||||
ln -s /var/lib/lxc/kaz-hoster-a-kaz1/rootfs/ /kaz1-prod
|
||||
ln -s /var/lib/lxc/kaz-hoster-b-kaz2/rootfs/ /kaz2-prod
|
||||
ln -s /kaz-prod1/kaz /kaz
|
||||
ln -s /var/lib/lxc/kaz-hoster-a-kaz1/rootfs/ /kaz1
|
||||
ln -s /var/lib/lxc/kaz-hoster-b-kaz2/rootfs/ /kaz2
|
||||
|
||||
# On met le KAZGUARD pour la mise au point
|
||||
echo "export KAZGUARD='true'" >> /root/.bashrc
|
||||
|
Reference in New Issue
Block a user