Astech Astech Mise à jour des environnements Prod et Test Astech Mise à jour des environnements Prod et Test Mises à Jour Astech Mise à jour AWO / Symphonie www.astech-solutions.com 01.60.42.74.40 AS-TECH Solutions – FUTURE BUILDING II – 1280, Avenue des Platanes – 34970 Lattes/Boirargues Table des matières 1 Généralités 1 2 Téléchargement 1 2.1 Contenu 1 3 Exécution 2 3.1 ASTech.Maj.exe 2 3.2 ASTech.IIS.Maj.exe 5 4 AWO / Mise à jour des postes clients 6 5 Symphonie / Mise à jour des images Docker 6 6 UPGRADE DE L’OS UBUNTU 7 6.1 Prérequis 7 6.2 Préparation de l’Upgrade OS 7 6.3 Lancement de l’Upgrade OS 8 6.4 A réaliser après l’Upgrade OS (Même si L’Upgrade est KO) 8 7 Récupération de la mise à jour 9 8 La VM a un accès web (ONLINE) 9 8.1 Suppression des anciennes images 9 8.2 Copie du fichier de configuration (Docker-compose) 9 8.3 NOUVEAU : Ajout du fichier de configuration Redis 10 8.4 NOUVEAU : Revue de la configuration Nginx 11 8.5 Lancement de la mise à jour 12 9 La VM n’a aucun accès externe (OFFLINE) 13 9.1 Suppression des anciennes images 13 9.2 Copie des nouvelles images sur la VM 13 9.2.1 Copie depuis un environnement Windows 13 9.2.2 Copie depuis un environnement Linux 14 9.3 Préparation de la mise à jour 14 9.4 NOUVEAU : Ajout du fichier de configuration Redis 15 9.5 NOUVEAU : Revue de la configuration Nginx 15 9.6 Lancement de la mise à jour 16 Généralités Procédure de mise à jour des applications AWO et OPUS Cette mise à jour permet la montée de version de l’OS Ubuntu de Symphonie vers la version 24.04 qui devra être fait en priorité (si vous avez ce type d’OS), avant la mise à jour des containers ( Voir §9 pour les actions) En lien avec ce changement de version d’OS, Nous vous rappelons aussi les préconisations pour la VM Symphonie : Processeurs : allouer au minimum 2 vcpu Mémoire vive : allouer au minimum 8Go Téléchargement Les mises à jour sont disponibles sur l’espace client de notre site http://www.astech-solutions.com Télécharger et décompresser ce fichier dans un répertoire temporaire sur le serveur d’application (ex : \ ASTechSolutions\Update\Release\) Contenu Le fichier téléchargé contient plusieurs fichiers ASTech.Maj.exe Mise à jour des fichiers principaux de l’application. Son exécution est obligatoire. ASTech.IIS.Maj.exe Mise à jour des services web. Son exécution est obligatoire. ASTechSymphonie.tar.gz Images Docker pour la mise à jour de la Symphonie Box SymphonieBase.tar.gz Images de base Docker pour la mise à jour de la Symphonie Box Exécution ASTech.Maj.exe Indiquer le répertoire de base de l’application. Il est obligatoire que l’arborescence des répertoires soit respectée. Sinon, les fichiers de mise à jour ne seront pas copiés dans les bons répertoires Une fois les fichiers extraits du setup de mise à jour, l’utilitaire de mise à jour de la base de données s’exécute automatiquement. Utiliser la liste déroulante pour sélectionner la base de données à mettre à jour. Ensuite, utiliser le bouton Préparation script afin d’afficher le script à exécuter. Une fois le script affiché, il faut l’exécuter. Une fois la mise à jour effectuée, si des messages d’erreur apparaissent, compresser et faites-nous parvenir le répertoire \Update\Tool\Log Pour cela, merci de créer un ticket sur l’espace client https://support.astech-solutions.com/ En fin de mise à jour de la base de données, si un écran s’ouvre automatiquement, cela veut dire que vous possédez une SymphonieBox . Dans ce cas, merci de vous reporter au $5 de ce document. ASTech.IIS.Maj.exe Ce setup de mise à jour de la partie Web s’exécute de la même façon que précédemment. Indiquer le répertoire de base de l’application. Si la partie Service web est installée sur un autre serveur, il faut utiliser la structure suivante : Ce Setup ne fait qu’une extraction de fichiers dans les répertoires concernés. Il n’y a pas de lancement de l’application de mise à jour des bases de données car cela est déjà fait avec le Setup précédent. AWO / Mise à jour des postes clients La mise à jour des postes clients se fait en automatique au lancement de l’application par l’intermédiaire de ASTechLance.exe. Si les fichiers présents sur le serveur sont différents des fichiers sur le poste client alors une mise à jour est proposée à l’utilisateur. Donc aucune action nécessaire pour mettre à jour les postes clients Symphonie / Mise à jour des images Docker Ce document décrit la mise à jour manuelle d’un environnement Symphonie non ouvert à notre serveur de déploiement. Il existe 2 possibilités de mise à jour : Soit la VM a un accès web permettant de télécharger les images docker à mettre à jour ( voir §8 ) Soit la VM n’a aucun accès et dans ce cas les images doivent être copiées et déployées manuellement ( Voir §9 ) Cette mise à jour permet la montée de version de l’OS Ubuntu vers la version 24.04 qui devra être fait en priorité (si vous avez ce type d’OS), avant la mise à jour des containers ( Voir §6 pour les actions) UPGRADE DE L’OS UBUNTU Prérequis Dans le cas où une MAJ de la Box est prévue en parallèle, il faudra d’abord réaliser l’Upgrade OS. Afin de procéder à la montée de version de l’OS de la Box : la version actuelle de l’OS est inférieure à 24.04 Vérifications : lsb_release -rs la VM doit accéder au repo système d’Ubuntu. Vérifications : sudo apt-get update Si la vérification est KO : demander l’ouverture du flux au niveau réseau. le /boot doit disposer d’au moins 1.5Go d’espace libre Vérifications : df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 2,0G 75M 1,8G 5% /boot Si la vérification est KO : Exécuter les deux lignes de commande ci-dessous (Puis vérifier à nouveau) sudo dpkg -l linux-{image,headers}-"[0-9]*" | awk '/^ii/ { print $2 }' |grep -v "$(uname -r | cut -f1,2 -d"-")" | grep -e '[0-9]' |sudo xargs apt-get -y purge sudo dpkg --list | grep ^rc | awk '{ print $2; }' | xargs -r sudo apt-get -y purge Préparation de l’Upgrade OS Préparation des packages système : sudo apt-get remove docker.io sudo apt-get autoremove sudo DEBIAN_FRONTEND=noninteractive dpkg --configure -a sudo apt-get update sudo apt-get upgrade *** sudo apt dist-upgrade sudo apt-get install update-manager-core *** Répondre “ Y ” pour la mise à jour de zabbix.list Reboot du serveur si nécessaire, via cette ligne de commande : if [[ -n $(ls /var/run/reboot-required ) ]] ; then sudo reboot now ; fi Lancement de l’Upgrade OS Lancement de la montée de version : sudo do-release-upgrade -f DistUpgradeViewNonInteractive *** *** Répondre “ N ” pour toutes les questions Note : cette étape prend généralement une dizaine de minutes. Mise à jour des packages de base et de sécurité : sudo apt-get install libjansson-dev sudo apt list --upgradable | grep security | cut \-d\/ -f1|xargs sudo apt-get install -y || /bin/true sudo apt-cache search linux-image-[0-9] | grep generic | sort -V | tail -1 | cut -d' ' -f 1 | xargs sudo apt-get install -y || /bin/true sudo apt-cache search linux-headers-[0-9] | grep generic | sort -V | tail -1 | cut -d' ' -f 1 | xargs sudo apt-get install -y || /bin/true Reboot du serveur si nécessaire : if [[ -n $(ls /var/run/reboot-required) ]] ; then sudo reboot now ; fi Vérifier que la version de l’OS est correctement montée : lsb_release -rs Note : il faudra répéter la procédure jusqu’à atteindre la version 24.04. A réaliser après l’Upgrade OS (Même si L’Upgrade est KO) Les étapes suivantes devront être réalisées, même dans le cas où l’Upgrade OS est en erreur. Réinstaller docker : sudo apt-get install docker.io docker-compose-v2 Se connecter à Docker Hub avec le mot de passe 352bd13d-5e39-4441-8360-44f8fb6b60a3 sudo docker login -u astechsolutions Note : Suite à la mise à jour de docker-compose, il est possible d’obtenir des messages de warning sur les commandes docker, ces messages sont sans impact et à ignorer  : WARN[0000] /home/symphoniedeploy/symphonie/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion Démarrer les containers : sudo su – symphoniedeploy docker compose --project-directory "/home/symphoniedeploy/symphonie/" up -d --quiet-pull Vérifier que tous les containers sont en statut « UP » : sudo docker ps -a A la fin de cette étape l’Upgrade OS est terminé, il est possible de procéder à la MAJ applicative de la Box si nécessaire. Récupération de la mise à jour Le setup de mise à jour récupéré depuis l’espace client contient la mise à jour AWO ainsi que les images Docker pour Symphonie Le fichier ASTechSymphonie.tar.gz contient : - PROD-< containername : >/.tar - docker-compose.yml Le fichier SymphonieBase.tar.gz contient : - elasticsearch:.tar - mercure:.tar - rabbitmq:.tar - redis:.tar La VM a un accès web (ONLINE) Suppression des anciennes images Afin de mettre en place le nouvel environnement il est nécessaire de supprimer l’environnement actuel. Pour commencer, connectez-vous à la VM Symphonie et effectuez les commandes suivantes Arrêt des différents containers : sudo docker stop $(sudo docker ps -a -q) Suppression des différentes images sudo docker rmi -f $(sudo docker images -q) Nettoyage du système docker et suppression des partages entres les containers sudo docker system prune -af && sudo docker volume ls -qf dangling=true Suppression du docker-compose de la version précédente sudo rm /home/symphoniedeploy/symphonie/docker-compose.yml Copie du fichier de configuration (Docker-compose) Le fichier docker-compose.yml est disponible dans le Zip téléchargé. Si vous n’avez pas la possibilité de copier vers la VM ou si vous ne souhaitez pas mettre en place la clé SSH, vous pouvez télécharger directement le fichier depuis la VM Télécharger le fichier docker-compose.yml lié à la version à installer cd /home/symphoniedeploy/symphonie https://astech34970.sharepoint.com/:u:/s/Externe/EcRK064cDpVLhqBXlCkDAyIB6Cstd1RArxWM9BR0_ia6tA?download=1 Le lien de téléchargement est mis à jour à chaque version Vérifier que la version des containers dans le docker-compose est bien celle attendue cat docker-compose.yml Une fois le fichier téléchargé se connecter au serveur Docker Hub avec le mot de passe dckr_pat_15b9hTo-bR_xSLWMn35NDMFFsz8 sudo docker login -u astechsolutions Le mot de passe est soumis à une politique de sécurité et peut donc être modifié. Dans ce cas merci de contacter notre support NOUVEAU : Ajout du fichier de configuration Redis A partir de la version 6.07.800, un container REDIS a été ajouté à l'application afin d'optimiser les temps de réponse. Le fichier de configuration de ce container est donc à ajouter manuellement la première fois en suivant les étapes suivantes : Vérifier si le fichier redis.conf existe déjà sur la Box Symphonie : sudo ls /opt/config/redis/redis.conf Si le fichier n’existe pas , il faut l’ajouter : sudo mkdir -p /opt/config/redis echo -ne 'bind 0.0.0.0\nport 6379\nprotected-mode yes\nsave ""\nappendonly no\nmaxmemory 1gb\nmaxmemory-policy allkeys-lru\nloglevel notice\nlogfile ""' | sudo tee /opt/config/redis/redis.conf sudo chown -R symphoniedeploy:symphoniedeploy /opt/config/redis/ NOUVEAU : Revue de la configuration Nginx A partir de la version 6.07.900, la configuration par défaut du container nginx diffère, ce qui implique des modifications de la configuration nginx déjà présente sur votre Box Symphonie. Vérifier le fichier symfony.conf grep 'http://es-upstream' /opt/config/symfony.conf Si la commande ci-dessus retourne une ligne proxy_pass http://es-upstream ; sudo /opt/config/symfony.conf /opt/config/symfony.conf.backup sudo sed -i '/location ~ \^\(\/_aliases\|.*_search\|.*_mapping.*\)/,/^}/ { /proxy_pass http:\/\/es-upstream;/!d }' /opt/config/symfony.conf sudo sed -i '/^\s*# ELASTICSEARCH\s*$/d' /opt/config/symfony.conf sudo sed -i '/^\s*proxy_pass http:\/\/es-upstream;\s*$/d' /opt/config/symfony.conf En complément, uniquement si vous utilisez Docker (serveur Ubuntu) sudo echo IP_RESOLVER=127.0.0.11 >> /home/symphoniedeploy/symphonie/.env En complément, uniquement si vous utilisez Podman (serveur RedHat) sudo sed -i 's/^\([[:space:]]*\)resolver 127\.0\.0\.11 10\.89\.0\.1;/\1resolver 10.89.0.1;/' /opt/config/symfony.conf sudo echo IP_RESOLVER=10.89.0.1 >> /home/symphoniedeploy/symphonie/.env Lancement de la mise à jour Note : Suite à la mise à jour de docker-compose, il est possible d’obtenir des messages de warning sur les commandes docker, ces messages sont sans impact et à ignorer  : WARN[0000] /home/symphoniedeploy/symphonie/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion Changer d’utilisateur pour utiliser « symphoniedeploy » : sudo su symphoniedeploy Se positionner dans le répertoire « symphonie » : cd /home/symphoniedeploy/symphonie Configurer le mot de passe Redis : echo 'REDIS_PASSWORD=RG59NYLiAnJEeF' >> /home/symphoniedeploy/symphonie/.env  Lancer les containers docker : Cette action télécharge les images des containers, cela peut prendre un certain temps sudo docker-compose up -d Mise à jour du fichier parameters.yml: sudo docker-compose exec php php app/updateparameters Supprimer les anciens caches de l’application : sudo rm -rd cache/dev cache/prod Créer les caches de l’application : sudo docker-compose exec php php app/console ca:cl --env=prod && sudo docker-compose exec php php app/console ca:cl --env=dev Changer les droits sur les dossiers : sudo docker-compose exec php chown -R www-data:www-data app/cache app/logs app/config web/uploads sudo chown -R www-data:www-data cache logs config sudo chmod -R 777 cache logs config Création de l’utilisateur astech pour rabbitMQ : sudo docker-compose exec php php app/console astech:rabbit:configure --add-astech-user La dernière étape consiste à lancer une indexation des données : sudo docker-compose exec php php app/console astech:elastica:populate A la fin de cette étape l’application Symphonie est à jour La VM n’a aucun accès externe (OFFLINE) Suppression des anciennes images Afin de mettre en place le nouvel environnement il est nécessaire de supprimer l’environnement actuel. Pour commencer, connectez-vous à la VM Symphonie et effectuez les commandes suivantes : Arrêt des différents containers sudo docker stop $(sudo docker ps -a -q) Suppression des différentes images sudo docker rmi -f $(sudo docker images -q) Nettoyage du système docker et suppression des partages entres les containers sudo docker system prune -af && sudo docker volume ls -qf dangling=true Suppression du docker-compose de la version précédente sudo rm /home/symphoniedeploy/symphonie/docker-compose.yml Copie des nouvelles images sur la VM Copie depuis un environnement Windows Exemple avec WinSCP Une fois connecté sur la VM, copier les fichiers téléchargés (ASTechSymphonie.tar.gz et SymphonieBase.tar.gz) dans /var/images/ Si le dossier /var/images/ n’existe pas il faut l’ajouter sudo mkdir /var/images sudo chown -R $USER:$USER /var/images Copie depuis un environnement Linux Le transfert de fichier se fera en ligne de commande : Exemple de commande dans laquelle il faut remplacer et scp -i -P 3422 administrateur@:/var/images Préparation de la mise à jour Etape pour décompresser et charger les nouvelles images Se positionner dans le dossier  cd /var/images Décompresser les fichiers en utilisant les commandes sudo tar -xvf ASTechSymphonie.tar.gz sudo tar -xvf SymphonieBase.tar.gz Le résultat de cette commande sera la création d’un dossier contenant les images docker des différentes parties essentielles au fonctionnement du logiciel. Une fois la décompression faite, on peut supprimer les 2 fichiers gz pour gagner de la place qui sera nécessaire sinon il faut /var avec 40Go. Mais même si les 2 fichiers gz sont supprimés il faudra quand même 30Go pour /var. Charger les nouvelles images. Se positionner dans les dossiers décompressés, par exemple : cd prod-6.06.500.00.00 Puis charger les images (une par une depuis les 2 répertoires : prod et base) : sudo docker load -i .tar Copier le fichier de configuration (Docker-compose) qui se trouve dans le dossier de la nouvelle version (ex : 6.06.500.00.00) dans le répertoire de configuration sudo cp docker-compose.yml /home/symphoniedeploy/symphonie Vérifier la présence des nouvelles images dans DOCKER sudo docker images Une fois les images vérifiées vous pouvez supprimer les fichiers de mise à jour sudo rm -rd /var/images/prod-6.06.500.00.00 && sudo rm prod-6.06.500.00.00.tar.gz NOUVEAU : Ajout du fichier de configuration Redis A partir de la version 6.07.800, un container REDIS a été ajouté à l'application afin d'optimiser les temps de réponse. Le fichier de configuration de ce container est donc à ajouter manuellement la première fois en suivant les étapes suivantes : Vérifier si le fichier redis.conf existe déjà sur la Box Symphonie : sudo ls /opt/config/redis/redis.conf Si le fichier n’existe pas , il faut l’ajouter : sudo mkdir -p /opt/config/redis echo -ne 'bind 0.0.0.0\nport 6379\nprotected-mode yes\nsave ""\nappendonly no\nmaxmemory 1gb\nmaxmemory-policy allkeys-lru\nloglevel notice\nlogfile ""' | sudo tee /opt/config/redis/redis.conf sudo chown -R symphoniedeploy:symphoniedeploy /opt/config/redis/ NOUVEAU : Revue de la configuration Nginx A partir de la version 6.07.900, la configuration par défaut du container nginx diffère, ce qui implique des modifications de la configuration nginx déjà présente sur votre Box Symphonie. Vérifier le fichier symfony.conf grep 'http://es-upstream' /opt/config/symfony.conf Si la commande ci-dessus retourne une ligne proxy_pass http://es-upstream ; sudo /opt/config/symfony.conf /opt/config/symfony.conf.backup sudo sed -i '/location ~ \^\(\/_aliases\|.*_search\|.*_mapping.*\)/,/^}/ { /proxy_pass http:\/\/es-upstream;/!d }' /opt/config/symfony.conf sudo sed -i '/^\s*# ELASTICSEARCH\s*$/d' /opt/config/symfony.conf sudo sed -i '/^\s*proxy_pass http:\/\/es-upstream;\s*$/d' /opt/config/symfony.conf En complément, uniquement si vous utilisez Docker (serveur Ubuntu) sudo echo IP_RESOLVER=127.0.0.11 >> /home/symphoniedeploy/symphonie/.env En complément, uniquement si vous utilisez Podman (serveur RedHat) sudo sed -i 's/^\([[:space:]]*\)resolver 127\.0\.0\.11 10\.89\.0\.1;/\1resolver 10.89.0.1;/' /opt/config/symfony.conf sudo echo IP_RESOLVER=10.89.0.1 >> /home/symphoniedeploy/symphonie/.env Lancement de la mise à jour Note : Suite à la mise à jour de docker-compose, il est possible d’obtenir des messages de warning sur les commandes docker, ces messages sont sans impact et à ignorer  : WARN[0000] /home/symphoniedeploy/symphonie/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion Téléchargement des containers Docker et mise à jour des dossiers Changer d’utilisateur pour utiliser « symphoniedeploy » : sudo su symphoniedeploy Se positionner dans le répertoire « symphonie » : cd /home/symphoniedeploy/symphonie Configurer le mot de passe Redis : echo "REDIS_PASSWORD=RG59NYLiAnJEeF" > /home/symphoniedeploy/symphonie/.env  Lancer les containers docker : Cette action télécharge les images des containers, cela peut prendre un certain temps sudo docker-compose up -d Mise à jour du fichier parameters.yml: sudo docker-compose exec php php app/updateparameters Supprimer les anciens caches de l’application : sudo rm -rd cache/dev cache/prod Créer les caches de l’application : sudo docker-compose exec php php app/console ca:cl --env=prod && sudo docker-compose exec php php app/console ca:cl --env=dev Changer les droits sur les dossiers : sudo docker-compose exec php chown -R www-data:www-data app/cache app/logs app/config web/uploads sudo chown -R www-data:www-data cache logs config sudo chmod -R 777 cache logs config Création de l’utilisateur astech pour rabbitMQ : sudo docker-compose exec php php app/console astech:rabbit:configure --add-astech-user La dernière étape consiste à lancer une indexation des données : sudo docker-compose exec php php app/console astech:elastica:populate A la fin de cette étape l’application Symphonie est à jour