Guide pratique: Déployer iTop avec Docker

1. Introduction : iTop et Docker, un bon environnement de dev !

iTop est une solution ITSM open source puissante qui permet de gérer l’ensemble de votre infrastructure IT à travers une CMDB (Configuration Management Database) complète. Combiner iTop avec Docker, c’est allier la flexibilité d’une solution ITSM éprouvée avec la portabilité et la simplicité de déploiement des conteneurs. Dans cet article, nous allons explorer en détail comment déployer iTop en utilisant Docker et Docker Compose.

Prérequis : Préparer son environnement

Installation de Docker et Docker Compose:

Avant de plonger dans le déploiement d’iTop, assurons-nous que Docker est correctement installé sur votre système.

# Installation de Docker et Docker Compose en une seule commande
curl -sSL https://get.docker.com | sh

# Ajouter votre utilisateur au groupe docker (évite d’utiliser sudo)
sudo usermod -aG docker $USER

# Redémarrer votre session pour appliquer les changements de groupe
# ou exécuter : newgrp docker

# Vérification de l’installation
docker –version
docker compose version

Cette commande unique installe automatiquement :
– Docker Engine avec la dernière version stable
– Docker Compose (intégré dans les versions récentes de Docker)
– Tous les prérequis nécessaires
– Configuration adaptée à votre distribution Linux

Note: Docker Compose est maintenant intégré directement dans Docker. Vous pouvez utiliser `docker compose` (sans tiret) au lieu de `docker-compose`.

2. Comprendre l'architecture Docker pour iTop

2.1 Le principe des conteneurs

Un conteneur Docker est une unité d’exécution légère qui encapsule une application et toutes ses dépendances. Contrairement aux machines virtuelles traditionnelles, les conteneurs partagent le noyau du système hôte, ce qui les rend beaucoup plus légers et rapides à démarrer.

Pour iTop, nous utilisons une architecture multi-conteneurs :
Conteneur iTop: Contient Apache, PHP et l’application iTop
Conteneur MySQL: Base de données dédiée pour stocker toutes les données CMDB

2.2 Les volumes Docker : la persistance des données

Les volumes Docker sont essentiels pour garantir la persistance des données au-delà du cycle de vie des conteneurs. Sans volumes, toutes les modifications seraient perdues lors du redémarrage d’un conteneur.

Types de volumes dans notre déploiement :
Volumes nommés: Gérés par Docker.
Bind mounts: Liens directs vers des dossiers de l’hôte.

2.3 Les images Docker ITSM Factory : Un catalogue complet

Notre repository Docker Hub

Chez ITSM Factory, nous mettons à disposition un large éventail d’images iTop prêtes à l’emploi sur notre [Docker Hub]. Ces images sont régulièrement mises à jour et testées pour garantir une expérience de déploiement optimale.

Consulter les tags disponibles

Pour voir toutes les versions disponibles, rendez-vous sur l’onglet Tags de notre Docker Hub : [Docker hub tags]

Vous y trouverez :
– La liste complète des versions avec leurs dates de publication
– La taille de chaque image
– L’architecture supportée (amd64, arm64)
– Les commandes docker pull correspondantes

Versions disponibles :
iTop 3.2.x: Les dernières versions avec toutes les nouvelles fonctionnalités
iTop 3.1.x: Pour la compatibilité avec des extensions spécifiques
iTop 3.0.x: Pour la compatibilité avec des extensions spécifiques
iTop 2.7.X: Pour des version antérieurs

 Schéma d’architecture de déploiement d’iTop avec Docker et Docker Compose

# Lister tous les tags disponibles pour itsmfactory/itop
docker search itsmfactory/itop

# Télécharger une version spécifique
docker pull itsmfactory/itop:3.2.2-1

# Voir les images téléchargées localement
docker images | grep itsmfactory/itop

Choisir et changer de version

L’avantage de notre approche est la flexibilité totale dans le choix de la version. Vous pouvez facilement adapter la version selon vos besoins :

# Pour une version spécifique
image: itsmfactory/itop:3.2.1

Pour changer de version:

# Arrêter les conteneurs actuels
docker-compose down

# Modifier la version dans docker-compose.yml
# image: itsmfactory/itop:3.2.1 → image: itsmfactory/itop:3.2.2-1

# Télécharger la nouvelle image et redémarrer
docker compose pull
docker compose up -d

3. Configuration détaillée du docker-compose.yml

Créons notre fichier `docker-compose.yml` avec une configuration optimisée :

itop:
  image: itsmfactory/itop:3.2.2-1
  ports:
    – « 8009:80 »
  volumes:
    – ./itop-data/extensions:/var/www/html/itop/extensions
    – ./itop-data/data:/var/www/html/itop/data
    – ./itop-data/conf:/var/www/html/itop/conf
    – ./itop-data/logs:/var/www/html/itop/log
    – ./itop-data/apache-logs:/var/log/apache2
    – ./itop-data/env:/var/www/html/itop/env-production
    – ./itop-data/collectors:/collectors
  command: /bin/bash -c « chown -R www-data:www-data /var/www/html/itop && /usr/sbin/apache2ctl -D FOREGROUND »

mysql:
  image: mysql:5.7
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: base
  volumes:
    – ./itop-data/mysql_data:/var/lib/mysql

docker-compose.yml

Explication de la configuration

Le service iTop:
image: itsmfactory/itop:3.2.2-1 : Image Docker ITSM Factory (modifiable selon vos besoins)
ports: – « 8009:80 » : Expose iTop sur le port 8009 de votre machine
volumes : Les dossiers préfixés par `./` seront automatiquement créés lors du premier `docker-compose up` Bind mounts
command : Assure les bonnes permissions et lance Apache

Création automatique des volumes

Un aspect pratique de Docker Compose est la création automatique des dossiers locaux. Lors du premier lancement avec `docker compose up`, tous les dossiers spécifiés avec `./` dans les volumes seront créés automatiquement :

# Avant le premier lancement
ls -la
# Seulement docker-compose.yml

# Après docker compose up
ls -la
# docker-compose.yml
# itop-data/
# ├── extensions/
# ├── data/
# ├── conf/
# ├── logs/
# ├── apache-logs/
# ├── env/
# ├── collectors/
# └── mysql_data/

Cette fonctionnalité garantit que votre structure de dossiers est toujours correcte et prête à recevoir les données d’iTop.

⚠️ Attention : La persistance des données avec les volumes

Point critique à retenir: Seuls les fichiers stockés dans les volumes mappés sont persistants. Toute modification effectuée en dehors des volumes sera perdue lors d’un redémarrage du conteneur.

Exemple concret:

# ❌ Modification qui sera PERDUE
docker exec -it itop-docker_itop_1 /bin/bash
echo « mon_parametre = true » >> /var/www/html/itop/webservices/file.txt
# Ce fichier disparaîtra après docker-compose down && docker-compose up

# ✅ Modification qui sera CONSERVÉE
docker exec -it itop-docker_itop_1 /bin/bash
echo « mon_parametre = true » >> /var/www/html/itop/conf/production/files.txt
# Ce fichier est dans /conf qui est mappé, il sera conservé

Zones protégées par les volumes (modifications persistantes):
  – `/var/www/html/itop/extensions` → Vos extensions personnalisées
  – `/var/www/html/itop/data` → Données applicatives et cache
  – `/var/www/html/itop/conf` → Fichiers de configuration
  – `/var/www/html/itop/log` → Logs d’iTop
  – `/var/log/apache2` → Logs Apache
  – `/var/www/html/itop/env-production` → Configuration d’environnement

Zones NON protégées (modifications temporaires):
  – `/var/www/html/itop/core` → Code source d’iTop
  – `/var/www/html/itop/application` → Fichiers applicatifs
  – `/var/www/html/itop/setup` → Assistant d’installation
  – Tout autre répertoire non explicitement mappé

Bonnes pratiques:
  1. Pour des modifications permanentes: Toujours placer vos fichiers dans les dossiers mappés
  2. Pour tester temporairement: Vous pouvez modifier n’importe quel fichier, mais documentez vos changements
  3. Pour personnaliser iTop: Créez une extension dans `/extensions`
  4. Pour ajouter des collecteurs: Utilisez le volume `/collectors` ou créez un nouveau volume

Si vous avez besoin de persister d’autres dossiers, ajoutez-les simplement dans la section volumes :

volumes:
  – ./itop-data/custom-scripts:/var/www/html/itop/custom-scripts
  – ./itop-data/backups:/var/www/html/itop/backups

Le service MySQL:
– `mysql:5.7` : Version stable et compatible avec iTop
– Variables d’environnement pour la configuration initiale de la base
– Optimisations MySQL pour iTop (charset UTF8, taille des paquets)

4. Déploiement et configuration initiale

4.1 Lancement des conteneurs

# Démarrage en mode détaché
docker-compose up -d

# Vérification du statut
docker-compose ps

# Consultation des logs
docker-compose logs -f

4.2 Accéder aux conteneurs avec docker exec

Une fois vos conteneurs lancés, vous pouvez avoir besoin d’accéder directement à l’intérieur pour effectuer des opérations de maintenance, déboguer ou exécuter des commandes spécifiques.

Accéder au conteneur iTop :

# Ouvrir un shell bash interactif dans le conteneur iTop
# Note: le nom du conteneur dépend du nom de votre dossier projet
docker exec -it [nom_dossier]_itop_1 /bin/bash (vous pouvez aussi utiliser l’ID du container plutôt que [nom_dossier]_itop_1)

# Exemple si votre docker-compose.yml est dans /home/user/itop-docker/
docker exec -it itop-docker_itop_1 /bin/bash

# Une fois connecté, vous pouvez lister les dossiers par exemple
ls -ltr /var/www/html/itop

# EX: Mettre iTop en mode setup
chown +w /var/www/html/itop/conf/production/config-itop.php

5. Conclusion : Docker pour le développement, Kubernetes pour la production

L’environnement Docker : parfait pour le développement

La solution Docker que nous venons de mettre en place est idéale pour:
Développement rapide: Déploiement en quelques minutes
Tests et POC: Environnement isolé et reproductible
Formation: Chaque utilisateur peut avoir sa propre instance
Développement d’extensions: Test rapide des modifications
Environnement local: Faible consommation de ressources

 

Pour la production : pensez Kubernetes

Pour un environnement de production fiable et robuste, nous recommandons fortement le déploiement sur Kubernetes. Les avantages sont nombreux :

Haute disponibilité: Redémarrage automatique des pods en cas de défaillance
Scalabilité horizontale: Ajout automatique de réplicas selon la charge
Load balancing: Distribution intelligente du trafic
Rolling updates: Mises à jour sans interruption de service
Monitoring avancé: Métriques et alertes intégrées
Gestion des secrets: Stockage sécurisé des credentials
Auto-healing: Récupération automatique en cas de problème

Cet article vous a été utile ? Suivez-nous pour plus de contenus sur iTop et l’ITSM !