mplx

Usage

Prérequis 1 : Fichiers à créer

Les valeurs de configuration ainsi que quelques fichiers sensibles sont stoqués dans un dépot séparé (à recréer vous-mêmes). Il contient les répertoires suivant: - inventory (liste des hôtes et valeurs) - files (contient des clés ssh) - vars

Prérequis 2 : python

Pour dérouler les playbooks ansible :

  • python3-distutils

Prérequis 3 : Conteneurisation

La solution privilégiée pour le déploiement est LXC. Les playbooks sont prévus pour des systèmes Debian fraîchement créés.

La partie « gestion des conteneurs LXC» n’a pas encore été écrite mais fait partie des priorités. Pour le moment il faut donc créer les conteneurs LXC soi-même, et s’arranger pour qu’ils soient joignables (ou pas) depuis l’extérieur ou depuis votre LAN.

Prérequis 4 : Ajuster les variables

Comptes utilisateurs et accès au service

Les comptes utilisateurs sont renseignés dans un fichier users.yaml.

L’authentification est prévue pour se faire par clé publique SSH.

Voir : Bastion SSH

Ansible

Inventaire des hôtes

Vous devrez renseigner vos hôtes dans l’inventaire Ansible.

Déploiement

Ansible prend le relai pour ce qui est de configurer le conteneur (mise à jour des paquets, configuration des locales, ajustements concernant APT…), puis d’installer et configurer ces services.

Côté orchestrateur, il vous faudra décider quel(s) service(s) installer sur quels conteneurs. Pour cela, on indiquera dans un playbook ansible : l’hôte auquel il s’applique, ainsi que le rôle à éxécuter qui correspond à la mise en place du service.

Ansible plus en détails

Ansible.cfg

Le fichier ansible.cfg doit être situé dans le même répertoire que les playbooks. A moins de configurer ANSIBLE_CONFIG, les playbooks doivent être éxécutés depuis ce répertoire.

Je ne fais pas usage des Ansible Facts, donc il est conseillé de positionner gathering = explicit pour gagner un peu de temps d’execution. J’ai aussi viré les “retry”, il peut être plus simple de limiter le champ d’exécution via les paramètres -l ou –tags passés à ansible-playbook.

Données sensibles

J’ai abandonné l’idée d’utiliser ansible vault, en faveur de passwordstore. La solution passwordstore a quelques avantages pratiques (chiffremeng par GPG, pas besoin de passer –ask-pass en paramètre). Le mot de passe maître de passwordstore est demandé automatiquement lors de l’exécution du playbook dès qu’il rencontre cette instruction.

Il y a quelques .gitignore dont il faut tenir compte.

  • celui dans host_vars n’est pas utilisé
  • dans le rôle de création des utilisateurs, les clés publiques et privées sont ignorées
  • le répertoire fetched (actuellement non utilisé) peut stocker des fichiers récupérés depuis les hôtes distants