16 Jan 2017, 17:30

Migration

Mon stock de crédits d'hébergement chez Gandi étant arrivé à sa fin il y a quelques mois, j'avais pris la décision de migrer chez Scaleway après une période de tests et aussi parce que c'est moins cher au regard de mes besoins. Faute de temps, j'ai renouvelé les crédits et reporté plusieurs fois la migration mais cette fois-ci elle est faite.

Plusieurs choses dans cette migration :

  • Migration de tous les sites (bouts de sites) vers des containers docker ; l'occasion d'améliorer ma connaissance de docker, docker-compose et de traefik comme reverse-proxy dynamique au dessus de ces containers et gestion automatique des certificats Let's Encrypt.
  • Utilisation d'Ansible pour piloter les déploiements, avec l'objectif de ne pas avoir à me connecter en ssh sur la machine pour gérer un déploiement ou piloter un composant.
  • Faire le ménage dans les différents services, logiciels, contenus & domaines existants.

Ce qui a bien marché :

  • La partie docker, docker-compose et traefik - pas de gros soucis ; quelques limitations parfois mais rien d'insurmontable : un container "cron" pour piloter ses sauvegardes, faut se faire à l'idée mais c'est plutôt pas mal ; traefik ne supporte pas encore la redirection https pour les containers docker ou la gestion des path pour des containers docker.
  • Faire le ménage :-)
  • Au passage, les contenus du blog Web Enthusiasts ont été migrés dans ce blog et sont disponibles avec le tag web-enthusiasts.
  • L'approche de bout en bout avec Ansible : lorsqu'un service est déployé, il l'est en lui-même mais aussi les scripts de backup & co. C'est rassurant de savoir que l'application est correctement déployée sans avoir à se poser de questions.

Ce qui a moins bien marché :

  • Le pilotage via Ansible : à vouloir tout mettre dans un seul playbook pour gérer 6 domaines et pas loin de 20 applications au final (une application peut être instanciée n fois par domaine), ce n'est clairement pas la bonne idée. Si les rôles unitairement tiennent la route, c'est plus la gestion des variables et la multi-instanciation d'un role qui pose problème à ce stade. La faute n'est pas à Ansible mais à ma façon, il faut "juste" remodulariser tout ça ; reste quand même la question de la multi-instanciation d'un service qui reste ouverte (sauf à faire un playbook par url ?)
  • Le pilotage des containers docker via Ansible. Outre les bugs sur le build mal géré et d'autres ici ou là suivant les versions d'Ansible utilisées, je pense que ce n'est juste pas la bonne façon de faire. Autant utiliser des templates Ansible pour gérer ses fichiers docker-compose et autres fichiers associés est plutôt une bonne idée. Autant pour exécuter ses containers, il vaut mieux partir sur un orchestrateur. Ce sera la prochaine itération de cette plateforme d'hébergement.

Ce qui reste à faire :

  • Redirections d'urls propres
  • Régler quelques bugs ici ou là
  • Finalisation des backups pour les derniers containers gérés hors Ansible
  • Arrêt et destruction du serveur précédent
  • Tester en profondeur Kubernetes, Rancher en plus de Swarm pour savoir quelle solution d'orchestration retenir :)