mirror of
https://github.com/YunoHost/yunohost_demo.git
synced 2024-09-03 19:56:44 +02:00
Corrections build
This commit is contained in:
parent
02ce29e13d
commit
6df2e24cfb
8 changed files with 62 additions and 23 deletions
|
@ -1,14 +1,17 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Créer les conteneurs Yunohost et les configure
|
||||
# !!! Ce script est conçu pour être exécuté par l'user root.
|
||||
|
||||
# Récupère le dossier du script
|
||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$PWD/$(dirname "$0" | cut -d '.' -f2)"; fi
|
||||
|
||||
LOG_BUILD_LXC="/var/log/lxc_demo/Build_lxc.log"
|
||||
PLAGE_IP="10.1.5"
|
||||
IP_LXC="10.1.5.3"
|
||||
ARG_SSH="-t"
|
||||
LOG=Build_lxc.log
|
||||
LOG_BUILD_LXC="$script_dir/$LOG"
|
||||
PLAGE_IP=10.1.5
|
||||
IP_LXC1=10.1.5.3
|
||||
IP_LXC2=10.1.5.4
|
||||
ARG_SSH=-t
|
||||
DOMAIN=demotest1.tld
|
||||
YUNO_PWD=admin
|
||||
LXC_NAME1=yunohost_demo1
|
||||
|
@ -28,7 +31,7 @@ echo "> Configuration réseau du conteneur" | tee -a "$LOG_BUILD_LXC"
|
|||
sudo sed -i "s/^lxc.network.type = empty$/lxc.network.type = veth\nlxc.network.flags = up\nlxc.network.link = lxc_demo\nlxc.network.name = eth0\nlxc.network.veth.pair = $LXC_NAME1\nlxc.network.hwaddr = 00:FF:AA:00:00:03/" /var/lib/lxc/$LXC_NAME1/config >> "$LOG_BUILD_LXC" 2>&1
|
||||
|
||||
echo "> Configuration réseau de la machine virtualisée" | tee -a "$LOG_BUILD_LXC"
|
||||
sudo sed -i "s@iface eth0 inet dhcp@iface eth0 inet static\n\taddress $IP_LXC/24\n\tgateway $PLAGE_IP.1@" /var/lib/lxc/$LXC_NAME1/rootfs/etc/network/interfaces >> "$LOG_BUILD_LXC" 2>&1
|
||||
sudo sed -i "s@iface eth0 inet dhcp@iface eth0 inet static\n\taddress $IP_LXC1/24\n\tgateway $PLAGE_IP.1@" /var/lib/lxc/$LXC_NAME1/rootfs/etc/network/interfaces >> "$LOG_BUILD_LXC" 2>&1
|
||||
|
||||
echo "> Configure le parefeu" | tee -a "$LOG_BUILD_LXC"
|
||||
sudo iptables -A FORWARD -i lxc_demo -o eth0 -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
|
||||
|
@ -99,16 +102,27 @@ sudo lxc-snapshot -n $LXC_NAME1 >> "$LOG_BUILD_LXC" 2>&1
|
|||
echo "> Clone la machine" | tee -a "$LOG_BUILD_LXC"
|
||||
sudo sudo lxc-clone -o $LXC_NAME1 -n $LXC_NAME2 >> "$LOG_BUILD_LXC" 2>&1
|
||||
|
||||
echo "> Modification de l'ip du clone" | tee -a "$LOG_BUILD_LXC"
|
||||
sudo sed -i "s@address $IP_LXC1@address $IP_LXC2@" /var/lib/lxc/$LXC_NAME2/rootfs/etc/network/interfaces >> "$LOG_BUILD_LXC" 2>&1
|
||||
echo "> Et le nom du veth" | tee -a "$LOG_BUILD_LXC"
|
||||
sudo sed -i "s@^lxc.network.veth.pair = $LXC_NAME1$@lxc.network.veth.pair = $LXC_NAME2@" /var/lib/lxc/$LXC_NAME2/config >> "$LOG_BUILD_LXC" 2>&1
|
||||
|
||||
# Mise en place du cron de switch
|
||||
echo | sudo tee /etc/cron.d/demo_switch <<EOF
|
||||
# Switch des conteneurs toutes les $TIME_TO_SWITCH minutes
|
||||
*/$TIME_TO_SWITCH * * * * root $script_dir/demo_switch.sh > /dev/null 2>&1
|
||||
*/$TIME_TO_SWITCH * * * * root $script_dir/demo_switch.sh >> "$script_dir/demo_switch.log" 2>&1
|
||||
EOF
|
||||
# Et du cron d'upgrade
|
||||
echo | sudo tee /etc/cron.d/demo_upgrade <<EOF
|
||||
# Vérifie les mises à jour des conteneurs de demo, lorsqu'ils ne sont pas utilisés, à partir de 3h chaque nuit.
|
||||
0 3 * * * root $script_dir/demo_switch.sh > /dev/null 2>&1
|
||||
0 3 * * * root $script_dir/demo_switch.sh >> "$script_dir/demo_upgrade.log" 2>&1
|
||||
EOF
|
||||
|
||||
# Démarrage de la démo
|
||||
"$script_dir/demo_start.sh"
|
||||
|
||||
# Après le démarrage du premier conteneur, fait un snapshot du deuxième.
|
||||
|
||||
echo "> Création d'un snapshot pour le 2e conteneur" | tee -a "$LOG_BUILD_LXC"
|
||||
sudo lxc-snapshot -n $LXC_NAME2 >> "$LOG_BUILD_LXC" 2>&1
|
||||
# Il sera nommé snap0 et stocké dans /var/lib/lxcsnaps/$LXC_NAME2/snap0/
|
||||
|
|
|
@ -1,15 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Installe LXC et les paramètres réseaux avant de procéder au build.
|
||||
# !!! Ce script est conçu pour être exécuté par l'user root.
|
||||
|
||||
# Récupère le dossier du script
|
||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$PWD/$(dirname "$0" | cut -d '.' -f2)"; fi
|
||||
|
||||
LOG_BUILD_LXC="$(cat "$script_dir/demo_lxc_build.sh" | grep LOG_BUILD_LXC= | cut -d '=' -f2)"
|
||||
LOG=$(cat "$script_dir/demo_lxc_build.sh" | grep LOG= | cut -d '=' -f2)
|
||||
LOG_BUILD_LXC="$script_dir/$LOG"
|
||||
LXC_NAME1=$(cat "$script_dir/demo_lxc_build.sh" | grep LXC_NAME1= | cut -d '=' -f2)
|
||||
LXC_NAME2=$(cat "$script_dir/demo_lxc_build.sh" | grep LXC_NAME2= | cut -d '=' -f2)
|
||||
PLAGE_IP=$(cat "$script_dir/demo_lxc_build.sh" | grep PLAGE_IP= | cut -d '=' -f2)
|
||||
IP_LXC=$(cat "$script_dir/demo_lxc_build.sh" | grep IP_LXC= | cut -d '=' -f2)
|
||||
IP_LXC1=$(cat "$script_dir/demo_lxc_build.sh" | grep IP_LXC1= | cut -d '=' -f2)
|
||||
IP_LXC2=$(cat "$script_dir/demo_lxc_build.sh" | grep IP_LXC2= | cut -d '=' -f2)
|
||||
DOMAIN=$(cat "$script_dir/demo_lxc_build.sh" | grep DOMAIN= | cut -d '=' -f2)
|
||||
|
||||
# Créer le dossier de log
|
||||
|
@ -39,17 +42,22 @@ sudo ifup lxc_demo --interfaces=/etc/network/interfaces.d/lxc_demo >> "$LOG_BUIL
|
|||
echo "> Mise en place de la connexion ssh vers l'invité." | tee -a "$LOG_BUILD_LXC"
|
||||
if [ -e $HOME/.ssh/$LXC_NAME1 ]; then
|
||||
rm -f $HOME/.ssh/$LXC_NAME1 $HOME/.ssh/$LXC_NAME1.pub
|
||||
ssh-keygen -f $HOME/.ssh/known_hosts -R $IP_LXC
|
||||
ssh-keygen -f $HOME/.ssh/known_hosts -R $IP_LXC1
|
||||
ssh-keygen -f $HOME/.ssh/known_hosts -R $IP_LXC2
|
||||
fi
|
||||
ssh-keygen -t dsa -f $HOME/.ssh/$LXC_NAME1 -P '' >> "$LOG_BUILD_LXC" 2>&1
|
||||
|
||||
echo | tee -a $HOME/.ssh/config <<EOF >> "$LOG_BUILD_LXC" 2>&1
|
||||
# ssh $LXC_NAME1
|
||||
Host $LXC_NAME1
|
||||
Host $LXC_NAME2
|
||||
Hostname $IP_LXC
|
||||
Hostname $IP_LXC1
|
||||
User ssh_demo
|
||||
IdentityFile $HOME/.ssh/$LXC_NAME1
|
||||
Host $LXC_NAME2
|
||||
Hostname $IP_LXC2
|
||||
User ssh_demo
|
||||
IdentityFile $HOME/.ssh/$LXC_NAME1
|
||||
# End ssh $LXC_NAME1
|
||||
EOF
|
||||
|
||||
echo "> Mise en place du reverse proxy" | tee -a "$LOG_BUILD_LXC"
|
||||
|
@ -73,7 +81,7 @@ server {
|
|||
server_name $DOMAIN;
|
||||
|
||||
location / {
|
||||
proxy_pass https://$IP_LXC;
|
||||
proxy_pass https://$IP_LXC1;
|
||||
proxy_redirect off;
|
||||
proxy_set_header Host \$host;
|
||||
proxy_set_header X-Real-IP \$remote_addr;
|
||||
|
@ -100,5 +108,7 @@ sudo service nginx reload
|
|||
# Add
|
||||
# maxconn 500
|
||||
|
||||
echo "\nLe serveur est prêt à déployer les conteneurs de demo."
|
||||
echo "Exécutez le script demo_lxc_build.sh pour créer les conteneurs et mettre en place la demo."
|
||||
# Déploie les conteneurs de demo
|
||||
"$script_dir/demo_lxc_build.sh"
|
||||
# "$script_dir/demo_lxc_build.sh"
|
||||
|
|
|
@ -2,12 +2,15 @@
|
|||
|
||||
# Détruit les conteneurs lxc de demo.
|
||||
# Permet de repartir sur des bases saines avec le script demo_lxc_build.sh
|
||||
# !!! Ce script est conçu pour être exécuté par l'user root.
|
||||
|
||||
# Récupère le dossier du script
|
||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$PWD/$(dirname "$0" | cut -d '.' -f2)"; fi
|
||||
|
||||
LXC_NAME1=$(cat "$script_dir/lxc_build.sh" | grep LXC_NAME1= | cut -d '=' -f2)
|
||||
LXC_NAME2=$(cat "$script_dir/lxc_build.sh" | grep LXC_NAME2= | cut -d '=' -f2)
|
||||
LXC_NAME1=$(cat "$script_dir/demo_lxc_build.sh" | grep LXC_NAME1= | cut -d '=' -f2)
|
||||
LXC_NAME2=$(cat "$script_dir/demo_lxc_build.sh" | grep LXC_NAME2= | cut -d '=' -f2)
|
||||
IP_LXC1=$(cat "$script_dir/demo_lxc_build.sh" | grep IP_LXC1= | cut -d '=' -f2)
|
||||
IP_LXC2=$(cat "$script_dir/demo_lxc_build.sh" | grep IP_LXC2= | cut -d '=' -f2)
|
||||
|
||||
"$script_dir/demo_stop.sh"
|
||||
|
||||
|
@ -19,6 +22,10 @@ sudo lxc-snapshot -n $LXC_NAME2 -d snap0
|
|||
sudo rm -f /var/lib/lxcsnaps/$LXC_NAME2/snap0.tar.gz
|
||||
sudo lxc-destroy -n $LXC_NAME2 -f
|
||||
|
||||
# Suppression des crons
|
||||
echo "> Suppression des crons"
|
||||
sudo rm /etc/cron.d/demo_switch
|
||||
sudo rm /etc/cron.d/demo_upgrade
|
||||
|
||||
echo "> Suppression des clés ECDSA dans known_hosts"
|
||||
ssh-keygen -f "$HOME/.ssh/known_hosts" -R $IP_LXC1
|
||||
ssh-keygen -f "$HOME/.ssh/known_hosts" -R $IP_LXC2
|
||||
|
|
|
@ -2,11 +2,12 @@
|
|||
|
||||
# Purge l'ensemble de la config lxc pour les conteneurs de demo.
|
||||
# Il sera nécessaire de lancer le script demo_lxc_build_init.sh pour réinstaller l'ensemble le cas échéant.
|
||||
# !!! Ce script est conçu pour être exécuté par l'user root.
|
||||
|
||||
# Récupère le dossier du script
|
||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$PWD/$(dirname "$0" | cut -d '.' -f2)"; fi
|
||||
|
||||
LXC_NAME1=$(cat "$script_dir/lxc_build.sh" | grep LXC_NAME1= | cut -d '=' -f2)
|
||||
LXC_NAME1=$(cat "$script_dir/demo_lxc_build.sh" | grep LXC_NAME1= | cut -d '=' -f2)
|
||||
|
||||
"$script_dir/demo_lxc_destroy.sh"
|
||||
|
||||
|
@ -22,7 +23,7 @@ sudo apt-get remove lxc lxctl
|
|||
|
||||
echo "> Suppression des lignes de pchecker_lxc dans .ssh/config"
|
||||
BEGIN_LINE=$(cat $HOME/.ssh/config | grep -n "^# ssh $LXC_NAME1$" | cut -d':' -f 1)
|
||||
sed -i "$BEGIN_LINE,/^IdentityFile/d" $HOME/.ssh/config
|
||||
sed -i "$BEGIN_LINE,/^# End ssh $LXC_NAME1$/d" $HOME/.ssh/config
|
||||
|
||||
# Suppression de la clé SSH...
|
||||
# Suppression du reverse proxy ?
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Démarre le premier conteneur de demo et active la config réseau dédiée.
|
||||
# !!! Ce script est conçu pour être exécuté par l'user root.
|
||||
|
||||
# Récupère le dossier du script
|
||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$PWD/$(dirname "$0" | cut -d '.' -f2)"; fi
|
||||
|
@ -8,7 +9,7 @@ if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$P
|
|||
PLAGE_IP=$(cat "$script_dir/demo_lxc_build.sh" | grep PLAGE_IP= | cut -d '=' -f2)
|
||||
LXC_NAME=$(cat "$script_dir/demo_lxc_build.sh" | grep LXC_NAME1= | cut -d '=' -f2)
|
||||
|
||||
"$script_dir/demo_stop.sh"
|
||||
"$script_dir/demo_stop.sh" > /dev/null 2>&1
|
||||
|
||||
echo "Initialisation du réseau pour le conteneur."
|
||||
if ! sudo ifquery lxc_demo --state > /dev/null; then
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Stoppe les conteneurs de demo et arrête la config réseau dédiée.
|
||||
# !!! Ce script est conçu pour être exécuté par l'user root.
|
||||
|
||||
# Récupère le dossier du script
|
||||
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$PWD/$(dirname "$0" | cut -d '.' -f2)"; fi
|
||||
|
|
|
@ -10,6 +10,9 @@ PLAGE_IP=$(cat "$script_dir/demo_lxc_build.sh" | grep PLAGE_IP= | cut -d '=' -f2
|
|||
LXC_NAME1=$(cat "$script_dir/demo_lxc_build.sh" | grep LXC_NAME1= | cut -d '=' -f2)
|
||||
LXC_NAME2=$(cat "$script_dir/demo_lxc_build.sh" | grep LXC_NAME2= | cut -d '=' -f2)
|
||||
|
||||
echo "LXC_NAME1=$LXC_NAME1"
|
||||
echo "LXC_NAME2=$LXC_NAME2"
|
||||
|
||||
# Vérifie l'état des machines.
|
||||
if [ $(sudo lxc-info --name $LXC_NAME1 | grep -c "STOPPED") -eq 0 ]; then # Si la machine 1 est démarrée.
|
||||
LXC_A=$LXC_NAME1
|
||||
|
@ -20,14 +23,16 @@ else # Sinon, on suppose que c'est la machine 2 qui est en cours.
|
|||
# Si aucune machine ne tourne, la première démarrera.
|
||||
fi
|
||||
|
||||
echo "LXC_A=$LXC_A"
|
||||
echo "LXC_B=$LXC_B"
|
||||
|
||||
# Démarre le conteneur B et arrête le conteneur A.
|
||||
sudo lxc-start -n $LXC_B -d # Démarre l'autre machine
|
||||
sudo lxc-start -n $LXC_B -o "$script_dir/demo_switch.log" -d > /dev/null # Démarre l'autre machine
|
||||
sleep 10 # Attend 10 seconde pour s'assurer du démarrage de la machine.
|
||||
if [ $(sudo lxc-info --name $LXC_B | grep -c "STOPPED") -ne 0 ]; then
|
||||
# Le conteneur n'a pas réussi à démarrer. On devrait avertir un responsable par mail...
|
||||
# [...]
|
||||
return 1
|
||||
exit 1
|
||||
else
|
||||
# Bascule sur le conteneur B avec HAProxy...
|
||||
# [...]
|
||||
|
|
|
@ -21,7 +21,7 @@ UPGRADE_DEMO_CONTAINER () { # Démarrage, upgrade et snapshot
|
|||
sudo lxc-snapshot -r snap0 $MACHINE
|
||||
|
||||
# Démarre le conteneur
|
||||
sudo lxc-start -n $MACHINE -d
|
||||
sudo lxc-start -n $MACHINE -d > /dev/null
|
||||
sleep 10
|
||||
|
||||
# Update
|
||||
|
|
Loading…
Add table
Reference in a new issue