thulium_drake.docker_services

Statut de construction

Catalogue des services Docker

Ce rôle contient une collection de services qui fonctionnent sur un Docker Swarm, chaque service est segmenté dans son propre (ensemble de) réseau(x). Tout le stockage persistant est monté dans le conteneur, ce qui permet de placer ces données sur un stockage partagé, comme NFS ou GlusterFS.

Le catalogue contient actuellement :

  • Drone : un contrôleur CI/CD avec des agents (https://github.com/drone/drone)
  • Drawio : Un logiciel de diagrammes auto-hébergé gratuit pour créer des diagrammes de flux, des diagrammes de processus, des organigrammes, UML, ER et des diagrammes de réseau.
  • Gitea : Serveur Git basé sur Go avec interface web (https://github.com/go-gitea/gitea)
  • Portainer : Interface de gestion Docker (https://github.com/portainer/portainer)
  • AWX : La version amont d'Ansible Tower (https://github.com/ansible/awx)
  • Traefik : Proxy inverse intégré à Docker (https://github.com/containous/traefik)
  • Registre Docker : stockage d'images Docker local
  • Janitor : un conteneur qui exécutera périodiquement un script pour nettoyer toutes les choses inutilisées et obsolètes
  • Mediawiki : le moteur wiki de Wikipedia, vérifiez les instructions ci-dessous.
  • DB_backup : un conteneur qui exécutera périodiquement un script pour demander à tous les conteneurs mariadb trouvés de sauvegarder leurs bases de données sur le stockage partagé.
  • Kanboard : Un tableau Kanban avec une interface web.
  • Serveur Factorio : Un jeu où vous gérez une usine automatisée et la défendez contre les voisins.
  • Serveur Minecraft : Un jeu où vous pouvez construire des choses et combattre le dragon dans le Netherrealm !
  • Serveur Teamspeak : Serveur VOIP.
  • Rocket chat : Une alternative auto-hébergée à Slack et autres.
  • PeerTube : Une alternative gratuite et décentralisée aux plateformes vidéo.
  • VaultWarden : Un serveur alternatif gratuit pour le gestionnaire de mots de passe Bitwarden.

Ce rôle a quelques parties obligatoires qui seront provisionnées, dont (la plupart, sinon toutes) les autres services dépendent :

  • Portainer
  • Janitor
  • Traefik

Déploiement

Pour utiliser les services de ce catalogue, suivez les étapes suivantes :

  • Installez la collection community.docker sur votre contrôleur Ansible.
  • Installez Docker (conseil : utilisez le rôle Docker de Jeff Geerlings).
  • Créez le {{ docker_data_dir }}, de préférence sur un stockage partagé.
  • Copiez defaults/main.yml et configurez-le.
  • Exécutez le rôle avec un playbook tel que :
---
- hosts: 'docker'
  roles:
    - 'docker_services'

Accès aux services

Après le provisionnement, tous les services seront accessibles sous le nom suivant :

https://{{ service_app_name }}.{{ traefik_domain }}

Ce qui se traduit par quelque chose comme https://portainer.dckr.example.com.

Actions supplémentaires

Certains services nécessitent des actions supplémentaires avant de fonctionner, ci-dessous se trouvent les instructions spécifiques par service si elles nécessitent une configuration supplémentaire.

Mediawiki

Veuillez vous assurer de créer une copie locale de LocalSettings.php dans {{ docker_data_dir }}/mediawiki_data, cette copie sera montée à l'intérieur du conteneur.

Ce playbook vérifiera si le fichier est présent, mais ne changera pas le contenu.

Sauvegarde de base de données

Le service de sauvegarde de base de données est assez simple, il ne sauvegardera que tous les conteneurs qui correspondent aux filtres :

  • le nom du conteneur se termine par mariadb.

Il ne gérera PAS vos sauvegardes, il créera un fichier backup.sql dans {{ docker_data_dir }}/{{ app_name }}_db et écrasera ce fichier à chaque fois.

PeerTube

Lorsque vous placez un autre proxy inverse devant l'hôte Docker, veuillez vous assurer de définir des en-têtes supplémentaires. Voici un exemple de configuration pour NginX :

server {
   listen 443 ssl http2;
   listen [::]:443 ssl http2;
   server_name peertube.example.com;
   ssl_certificate /etc/ssl/peertube.example.com_fullchain.cer;
   ssl_certificate_key /etc/ssl/peertube.example.com.key;

   location / {
      proxy_pass https://peertube.int.example.com;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Upgrade $http_upgrade;
   }
}

Matomo

La configuration initiale de Matomo est un peu délicate, car elle nécessite un fichier config.ini.php persistant pour fonctionner après les redémarrages.

Cependant, le logiciel ne peut pas gérer un fichier de configuration vide ou incomplet correctement.

Jusqu'à présent, j'ai pu le déployer avec succès comme suit :

  • Déployez Matomo avec la tâche matomo_setup.
  • Entrez dans le conteneur docker pour récupérer la configuration :
docker exec -it containerid /bin/bash
cat /var/www/html/config/config.ini.php
# Enregistrez le contenu de ce fichier dans {{ docker_data_dir }}/matomo_data/config.ini.php
  • Déployez Matomo avec la liste de tâches 'régulière' matomo.
Installer
ansible-galaxy install thulium_drake.docker_services
Licence
gpl-3.0
Téléchargements
4.3k
Propriétaire