Aller au contenu

Guide de migration vers Canopsis 4.6.0

Ce guide donne des instructions vous permettant de mettre à jour Canopsis 4.5 vers la version 4.6.0.

Prérequis

L'ensemble de cette procédure doit être lu avant son exécution.

Ce document ne prend en compte que Canopsis Community et Canopsis Pro : tout développement personnalisé dont vous pourriez bénéficier ne fait pas partie du cadre de ce Guide de migration.

Procédure de mise à jour

Réalisation d'une sauvegarde

Des sauvegardes sont toujours recommandées, qu'elles soient régulières ou lors de modifications importantes.

La restructuration apportée dans les bases de données pour cette version de Canopsis nous amène à insister d'autant plus sur ce point. Il est donc fortement recommandé de réaliser une sauvegarde complète des VM hébergeant vos services Canopsis, avant cette mise à jour.

Arrêt de l'environnement en cours de lancement

Vous devez prévoir une interruption du service afin de procéder à la mise à jour qui va suivre.

canoctl stop
docker-compose -f 00-data.docker-compose.yml -f 01-prov.docker-compose.yml -f 02-app.docker-compose.yml down

Ou bien, si vous utilisez encore l'ancien procédé :

docker-compose down

Changement des ports d'écoute du reverse proxy nginx

Pour des raisons de sécurité, le reverse proxy nginx fourni avec Canopsis dans les images Docker n'écoute plus les ports 80 et 443. A présent, le port 8080 est utilisé pour l'écoute http et le 8443 pour l'écoute https.

Cette méthode d'installation n'est pas affectée par ce changement.

Synchronisez vos fichiers de configuration yaml depuis le dépôt ou modifiez le fichier 02-app.docker-compose.yml comme suit :

  nginx:
    image: ${DOCKER_REPOSITORY}${COMMUNITY_BASE_PATH}nginx:${CANOPSIS_IMAGE_TAG}
    ports:
-      - "80:80"
-      - "443:443"
+      - "80:8080"
+      - "443:8443"
    env_file:
      - compose.env
    restart: unless-stopped
    volumes:
      - nginxcerts:/etc/nginx/ssl

Suppression des options -enrichContext et -enrichInclude

Les options -enrichContext et -enrichIncludeè ont été retirées du moteurengine-che`.

Lancez la commande suivante afin de savoir si cette option est utilisée :

grep -lr "-enrich" /etc/systemd/system/canopsis-engine-go@engine-che.service.d/*

Si cette commande affiche un résultat, éditez les fichiers qu'elle mentionne afin d'y retirer ces options.

Supprimez toute éventuelle utilisation des options -enrichContext et -enrichInclude dans vos fichiers de référence Docker Compose.

Contournement d'un problème empêchant nginx de démarrer en docker-compose.

Une erreur s'étant glissée dans la version 4.6.0 (elle sera corrigée en 4.6.1), il est nécéssaire d'ajouter les 3 variables suivantes a votre compose.env :

ENABLE_RUNDECK=false
RUNDECK_GRAILS_URL=
NGINX_URL=

Ce contournement pourra être supprimé en 4.6.1 et n'a aucun impact fonctionnel.

Lancement des scripts de migration

Assurez-vous que le service MongoDB soit bien lancé et exécutez les commandes suivantes, en adaptant les identifiants MongoDB ci-dessous si nécessaire :

Sur la machine sur laquelle les paquets canopsis* sont installés :

cd /opt/canopsis/share/migrations/mongodb/release4.6
for file in $(find . -type f -name "*.js" | sort -n); do
   mongo -u cpsmongo -p canopsis canopsis < "$file"
done

Depuis une machine qui a un client mongo installé et qui peut joindre le service mongodb d'un point de vue réseau :

git clone --depth 1 --single-branch -b release-4.6 https://git.canopsis.net/canopsis/canopsis-community.git
cd canopsis-community/community/go-engines-community/database/migrations
for file in $(find release4.6 -type f -name "*.js" | sort -n); do
   mongo "mongodb://cpsmongo:canopsis@localhost:27017/canopsis" < "$file" # URI à adapter au besoin
done

Il est aussi possible de récupérer le répertoire migrations et de le présenter en volume dans le conteneur mongodb afin de réaliser le lancement du script depuis le conteneur mongodb.

Attention

Ces scripts essaient de gérer le plus de cas d'usage possible, mais la bonne exécution de ces scripts en toute condition ne peut être garantie.

Ils doivent obligatoirement être lancés avant le lancement des scripts de provisioning lors de l'étape suivante.

N'hésitez pas à nous signaler tout problème d'exécution que vous pourriez rencontrer lors de cette étape.

Migration des configurations canopsis.toml personnalisées vers canopsis-override.toml

Canopsis 4.6.0 intègre un nouveau système de surchargement du fichier canopsis.toml. Toutes vos configurations personnalisées doivent maintenant utiliser ce système. Vous pouvez trouver sa documentation sur la page Modification du fichier de configuration toml canopsis.toml

Lien vers les fichiers de configuration par défaut de Canopsis :

Si vous avez des configuration personalisées dans /opt/canopsis/etc/canopsis.toml, reportez les dans /opt/canopsis/etc/conf.d/canopsis-override.toml. Restorez ensuite /opt/canopsis/etc/canopsis.toml à son état initial.

Si vous n'avez pas apporté de modification locale, ce fichier est directement intégré et mise à jour dans les conteneurs, et vous n'avez donc pas de modification à apporter.

Si vous modifiez ce fichier à l'aide d'un volume surchargeant canopsis.toml, reportez toutes vos modifications dans /opt/canopsis/etc/conf.d/canopsis-override.toml du conteneur reconfigure (à l'aide d'un volume). Supprimez ensuite tout volume pointant sur /canopsis.toml, /canopsis-pro.toml ou /canopsis-community.toml.

Lancement du provisioning et de canopsis-reconfigure

Le provisioning doit être lancé afin de mettre à jour certaines données en base, tandis que canopsis-reconfigure prend en compte les changements apportés au fichier canopsis.toml.

Lancez les scripts de provisioning :

# si vous utilisez Canopsis Community
su - canopsis -c "canopsinit --canopsis-edition core"
# OU si vous utilisez Canopsis Pro
su - canopsis -c "canopsinit --canopsis-edition cat"

Puis, lancez canopsis-reconfigure. Attention, cette fois-ci de nouvelles options doivent lui être données :

set -o allexport ; source /opt/canopsis/etc/go-engines-vars.conf
/opt/canopsis/bin/canopsis-reconfigure -migrate-postgres=true -postgres-migration-mode=up -postgres-migration-directory=/opt/canopsis/share/migrations/postgres

Lancez à nouveau toute la partie data (MongoDB, RabbitMQ, Redis, PostgreSQL…) :

docker-compose -f 00-data.docker-compose.yml up -d

Attention

Si vous avez personnalisé la ligne de commande de l'outil canopsis-reconfigure, nous vous conseillons de supprimer cette persionnalisation.
L'outil est en effet pré paramétré pour fonctionner naturellement.

Exécutez la commande suivante :

docker-compose -f 01-prov.docker-compose.yml up -d

Ou bien, si vous utilisez encore l'ancien procédé :

docker-compose up -d provisioning reconfigure

Remise en route des moteurs et des services de Canopsis

Si et seulement si les commandes précédentes n'ont pas renvoyé d'erreur, vous pouvez relancer l'intégralité des services.

Relancez la totalité de l'environnement :

systemctl daemon-reload
canoctl restart

Lancez maintenant la partie 02-app, afin de bénéficier de l'application Canopsis en elle-même :

docker-compose -f 02-app.docker-compose.yml up -d

Ou bien, si vous utilisez encore l'ancien procédé :

docker-compose up -d

Fin de la mise à jour

Après quelques minutes, le service devrait être à nouveau accessible sur son interface web habituelle. En cas de problème, consultez l'ensemble des logs.

Suivez la section « Après la mise à jour » du Guide d'administration afin d'en savoir plus.