francois.lesueur
1 year ago
15 changed files with 191 additions and 282 deletions
@ -0,0 +1,43 @@ |
|||
# Utilisation d'un cache local |
|||
|
|||
Il est possible de configurer la VM pour utiliser un proxy et un registre docker du réseau local. 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. |
|||
|
|||
## Configuration de la VM |
|||
|
|||
Dans le dossier vagrant, 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 les IP du proxy et du registre Docker upstreams dans les premières lignes. |
|||
|
|||
Il est évidemment possible de n'activer que l'une des 2 fonctionnalités (soit que le proxy http externe, soit que le docker registry externe) en commentant les lignes associées. D'autres modifications de la VM peuvent aussi être réalisées dans ce fichier... |
|||
|
|||
## Installation d'un proxy squid sur l'hôte |
|||
|
|||
Pour installer un squid sur l'hôte : |
|||
* `apt install squid` |
|||
* Éditer `/etc/squid/squid.conf` : |
|||
* Décommenter la ligne `#http_access allow localnet` (ATTENTION ! Il faut bien décommenter cette ligne existante, et non l'ajouter à la fin, sa place dans le fichier de conf est importante) |
|||
* Ajouter à la fin : |
|||
``` |
|||
cache_dir aufs /var/spool/squid 5000 14 256 |
|||
maximum_object_size 4000 MB |
|||
http_port 3142 |
|||
``` |
|||
|
|||
|
|||
## Installation d'un docker-registry sur l'hôte |
|||
|
|||
Pour installer un docker-registry sur l'hôte : |
|||
* `apt install docker-registry` |
|||
* Éditer `/etc/docker/registry/config.yml` : |
|||
* Enlever la section `auth` |
|||
* Ajouter à la fin : |
|||
```yaml |
|||
proxy: |
|||
remoteurl: https://registry-1.docker.io |
|||
``` |
|||
|
|||
|
|||
Configurer une IP pérenne |
|||
------------------------- |
|||
|
|||
Si vous utilisez un ordinateur portable, votre adresse IP changera sûrement au grè de vos connexions à l'Internet. Dans ce cas il est préférable d'utiliser une adresse stable pour designer votre mandataire. |
|||
|
|||
Il est par exemple possible d'assigner une seconde adresse à la carte loopback de votre hôte avec `/sbin/ifconfig lo:0 192.168.128.1/24` |
@ -1,171 +0,0 @@ |
|||
# kaz-vagrant |
|||
|
|||
(ATTENTION, NON À JOUR POUR SNSTER) |
|||
|
|||
[Kaz](https://kaz.bzh/) est un CHATONS du Morbihan. Nous proposons ici un moyen de le répliquer dans d'autres lieux. 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 simuler notre serveur |
|||
* Docker pour chaque service de notre serveur |
|||
|
|||
## Pré-requis |
|||
|
|||
Dans la suite, on imagine que vous disposer d'une machine sous Linux (par exemple dernière version de [Debian](https://fr.wikipedia.org/wiki/Debian)) |
|||
|
|||
Vous devez disposer d'un minimum de paquets : |
|||
|
|||
```bash |
|||
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | apt-key add - |
|||
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | apt-key add - |
|||
apt install software-properties-common |
|||
add-apt-repository "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" |
|||
apt update |
|||
apt install git vagrant virtualbox-6.1 linux-image |
|||
vagrant plugin install vagrant-disksize |
|||
``` |
|||
Lancez VirtualBox et vérifiez les mises à jours. |
|||
|
|||
Par la suite, si vous ne disposez pas d'un bon débit, il est conseiller d'installer `approx` et `squid` pour ne pas recharger systématiquement tous les paquets depuis l'internet. |
|||
|
|||
pour `approx`, vous pouvez choisir une partition de stockage `/mnt/big/approx` |
|||
```bash |
|||
apt-get install approx |
|||
netstat -ant | grep 9999 |
|||
mkdir /mnt/big/approx |
|||
chown -R approx : /mnt/big/approx |
|||
rmdir /var/cache/approx |
|||
ln -s /mnt/big/approx/ /var/cache/ |
|||
cd /etc/apt/ |
|||
grep -E "^[^#]" sources.list | cut -d " " -f2 | sort -u >> /etc/approx/approx.conf |
|||
``` |
|||
|
|||
Pour `squid`, vous pouvez choisir une partition de stockage `/mnt/big/squid` |
|||
|
|||
```bash |
|||
apt-get install squid |
|||
emacs /etc/squid/squid.conf |
|||
|
|||
mkdir /mnt/big/squid |
|||
chown -R proxy: /mnt/big/squid |
|||
rmdir /var/spool/squid/ |
|||
ln -s /mnt/big/squid/ /var/spool/squid/ |
|||
|
|||
/etc/init.d/squid restart |
|||
``` |
|||
|
|||
Si vous utilisez un ordinateur portable, votre adresse IP changera sûrement au grè de vos connexions à l'Internet. Dans ce cas il est préférable d'utiliser une adresse stable pour designer votre mandataire. Après vous êtes connecté, il faudra ajouter une adresse à la carte réseaux qui est active. |
|||
Dans l'exemple suivant, nous imaginons que la connexion utilise le wifi `wlo1̀ que nous utilisons une classe privée locale `192.168.128.0/25̀ et que notre machine utilisera la première adresse. |
|||
|
|||
```bash |
|||
/sbin/ifconfig |
|||
/sbin/ifconfig wlo1:0 192.168.128.1/25 |
|||
/sbin/ifconfig wlo1:0 up |
|||
/sbin/ifconfig |
|||
``` |
|||
|
|||
## Installation |
|||
|
|||
* Télécharger le dépôt kaz-vagrant ou utilisez la commande : |
|||
```bash |
|||
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/ |
|||
``` |
|||
* Personalisez votre simulateur avec la commande (au besoin ajustez la mémoire et les cpus utilisés dans Vagrantfile) : |
|||
```bash |
|||
vagrant plugin install vagrant-disksize |
|||
init.sh |
|||
``` |
|||
* Personnalisez le miroir des paquets Debian si vous en avez un (sinon ignorez cette étape). |
|||
Pour cela créez un fichier qui défini des variables d'environnements qui pointent vers l'hôte et le port (dans l'exemple suivant on prend (machine : **__mirror-host__**, port : **__mirror-port__**) dans un fichier `files/.apt-mirror-config` comme ci-dessous |
|||
``` |
|||
APT_MIRROR_DEBIAN=mirror-host:mirror-port |
|||
APT_MIRROR_SECURITY=mirror-host:mirror-port |
|||
``` |
|||
|
|||
VirtualBox utilise un réseau privé 172.17.X.X |
|||
|
|||
Pour pouvoir désigner dans conflit votre PC comme mirror, vous pouvez déclarer un autre réseau (par exemple 172.19.X.X) |
|||
```bash |
|||
/sbin/ifconfig (eno2) add 172.19.1.1 netmask 255.255.255.0 |
|||
``` |
|||
Dans ce cas, il faut refaire le init.sh pour mettre à jour l'adresse IP du serveur mirroir. |
|||
|
|||
|
|||
* Pour créer tout l'univers Kaz il faut se placer dans le répertoire et lancer la commande : |
|||
```bash |
|||
vagrant up |
|||
``` |
|||
Il faudra répondre "docker0" à la question "Which interface should the network bridge to?" |
|||
|
|||
|
|||
Il est possible d'interrompre la création à la coquille vide (sans les services) pour des question de mise au point avec la commande : |
|||
```bash |
|||
NOKAZ="true" vagrant up |
|||
``` |
|||
Il se peut que le répertoire `/vagrant` ne soit pas monté. Dans ce cas. Quittez la VM et relancez `vagrant up`. |
|||
|
|||
Il est possible de choisir de tester une autres branche de développement du dépôt de Kaz. |
|||
```bash |
|||
KAZBRANCH="develop" vagrant up |
|||
``` |
|||
|
|||
* Une fois la commande de création de l'univers, il faut patienter... |
|||
|
|||
* Après il faut patienter encore un peu si on a pas la fibre ... |
|||
|
|||
La fenêtre de virtualbox va se lancer et l'installation va se poursuivre |
|||
|
|||
La progression est visible dans la fenêtre où la commande vagrant est lancée. |
|||
|
|||
## Utilisation |
|||
|
|||
Les utilisateurs créés sont |
|||
* debian/debian |
|||
* root/root. |
|||
|
|||
Si vous avec laissé la création des dockers, 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). |
|||
|
|||
|
|||
Vous pouvez alors démarrer le client de messagerie clawsmail dans lequel 4 comptes ont été paramétrés (contact1@kaz.local, contact2@kaz.local, contact3@kaz.local, contact4@kaz.local) |
|||
|
|||
Il y a un aperçu de l'état des services avec l'url https://kaz.local/status/allServices.html |
|||
|
|||
![status](/doc/images/allServices.jpg) |
|||
|
|||
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: |
|||
* https://www.kaz.local |
|||
* https://tableur.kaz.local |
|||
* https://pad.kaz.local |
|||
|
|||
* https://depot.kaz.local |
|||
* https://agora.kaz.local/login (compte contact1@kaz.local créé, mot de passe toto) |
|||
* https://cloud.kaz.local/login (compte contact1@kaz.local créé, mot de passe totototototototo1234 ) |
|||
* https://sondage.kaz.local |
|||
|
|||
Il vous faudra accepter les alertes de sécurité pour certificat absent (web et messagerie) |
|||
|
|||
## Echanges avec la machine virtuelle |
|||
|
|||
En cas de nouvelle re-création, la clef privée sera mise à jour. Il faudra effacer l'ancienne pour ne pas avoir le message : |
|||
``` |
|||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
|||
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ |
|||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
|||
``` |
|||
|
|||
Pour cela il faut supprimer l'entrée des hôtes connus : |
|||
```bash |
|||
ssh-keygen -f ~/.ssh/known_hosts -R "[127.0.0.1]:2222" |
|||
``` |
|||
|
|||
Pour copier des fichiers vers la machine virtuelle : |
|||
```bash |
|||
rsync -rlptDEHAX --no-o -e "ssh -p 2222 -i ~/git/kaz-vagrant/.vagrant/machines/default/virtualbox/private_key" src vagrant@127.0.0.1:/dst |
|||
``` |
@ -0,0 +1,42 @@ |
|||
#!/bin/bash |
|||
|
|||
PROXY="192.168.0.121:3128" |
|||
REGISTRY="192.168.0.121:5000" |
|||
|
|||
# Pour le proxy http/https (https sans cache) avec iptables |
|||
cat >> /etc/rc.local <<EOF |
|||
#!/bin/sh |
|||
PROXY=${PROXY} |
|||
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 3142 -j DNAT --to \${PROXY} |
|||
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 3142 -j DNAT --to \${PROXY} |
|||
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE |
|||
EOF |
|||
chmod +x /etc/rc.local |
|||
echo "net.ipv4.conf.eth0.route_localnet=1" >> /etc/sysctl.conf |
|||
sysctl -p |
|||
# fin proxy |
|||
|
|||
# Pour le cache docker |
|||
cat >> /etc/rc.local <<EOF |
|||
REGISTRY=${REGISTRY} |
|||
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 5000 -j DNAT --to \${REGISTRY} |
|||
EOF |
|||
# fin cache docker |
|||
|
|||
|
|||
bash /etc/rc.local |
|||
|
|||
# Un peu de customisation |
|||
DEBIAN_FRONTEND=noninteractive apt-get install -y vim rsync |
|||
rsync -a /vagrant/files/.emacs* /root/ |
|||
|
|||
|
|||
### |
|||
# Une autre façon de router vers un autre proxy http/https upstream, si on veut que la VM fasse le cache |
|||
### |
|||
# Pour le proxy http/https (https sans cache) avec squid config |
|||
#echo "cache_peer $(cut -d':' -f1 <<< $PROXY) parent $(cut -d':' -f2 <<< $PROXY) 0 no-query default |
|||
#acl all src 0.0.0.0/0.0.0.0 |
|||
#http_access allow all |
|||
#never_direct allow all" >> /etc/squid/squid.conf |
|||
#service squid restart |
@ -1,20 +0,0 @@ |
|||
#!/bin/bash |
|||
# Installation de Kaz |
|||
|
|||
if [ -z "${KAZGUARD}" ] ; then |
|||
exit 1 |
|||
fi |
|||
|
|||
snster -c /root/snster-kaz start |
|||
sleep 10 |
|||
snster -c /root/snster-kaz attach kaz-prod -x /mnt/snster/root/snster-kaz/kaz/prod/kaz.sh |
|||
|
|||
# On crée quelques mails |
|||
SETUP_MAIL="docker exec mailServ setup" |
|||
snster -c /root/snster-kaz attach kaz-prod -x "${SETUP_MAIL} email add contact1@kaz.sns toto" |
|||
snster -c /root/snster-kaz attach kaz-prod -x "${SETUP_MAIL} email add contact2@kaz.sns toto" |
|||
snster -c /root/snster-kaz attach kaz-prod -x "${SETUP_MAIL} email add contact3@kaz.sns toto" |
|||
snster -c /root/snster-kaz attach kaz-prod -x "${SETUP_MAIL} email add contact4@kaz.sns toto" |
|||
|
|||
echo -e '#!/bin/sh\nsnster -c /root/snster-kaz start' >> /etc/rc.local |
|||
chmod +x /etc/rc.local |
Loading…
Reference in new issue