Aller au contenu principal

Déploiement de phpIPAM avec docker compose : Un bon tool pour une gestion efficace des adresses IP via l'ui et teraform

Introduction La gestion des adresses IP dans une infrastructure réseau peut rapidement devenir un casse-tête, surtout dans les environnements complexes et en constante évolution. phpIPAM (PHP IP…

coolibra08 juil. 20261491 vues

Introduction

La gestion des adresses IP dans une infrastructure réseau peut rapidement devenir un casse-tête, surtout dans les environnements complexes et en constante évolution. phpIPAM (PHP IP Address Management) est un outil open source qui permet d’inventorier, organiser et gérer efficacement vos plages d’adresses IP, VLANs et sous-réseaux.

Dans cet article, nous allons voir comment déployer phpIPAM avec Docker Compose de manière simple, fiable et prête pour un usage en production.

1. Prérequis

Avant de commencer, il faut :

  • Un serveur Linux (Ubuntu/Debian/CentOS ou autre)
  • Docker ≥ 20.x installé

  • Docker Compose ≥ 2.x installé

  • Un accès administrateur (root ou sudo)

2. Structure du projet

On va créer un répertoire dédié :

mkdir phpipam-docker && cd phpipam-docker

 

3. Fichier docker-compose.yml

Voici un exemple complet :

services:
  phpipam-web:
    image: phpipam/phpipam-www:v1.7.3
    ports:
      - "80:80"
    environment:
      - TZ=Europe/Paris
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=wGkz28z38UJktKDQqV
      - IPAM_DATABASE_WEBHOST=%
    restart: always
    networks:
      - phpipam-net
    volumes:
      - phpipam-logo:/phpipam/css/images/logo
      - phpipam-ca:/usr/local/share/ca-certificates:ro
    depends_on:
      - phpipam-mariadb

  phpipam-cron:
    image: phpipam/phpipam-cron:v1.7.3
    environment:
      - TZ=Europe/London
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=wGkz28z38UJktKDQqV
      - SCAN_INTERVAL=1h
    restart: always
    volumes:
      - phpipam-ca:/usr/local/share/ca-certificates:ro
    depends_on:
      - phpipam-mariadb

  phpipam-mariadb:
    image: mariadb:10.6.12
    environment:
      - MYSQL_ROOT_PASSWORD=wGkz28z38UJktKDQqV
    restart: always
    volumes:
      - phpipam-db-data:/var/lib/mysql
    networks:
      - phpipam-net
volumes:
  phpipam-db-data:
  phpipam-logo:
  phpipam-ca:

networks:
  phpipam-net:
    external: true

 

4. Lancer le déploiement

Démarrez les conteneurs avec :

docker compose up -d

 

Vérifiez que tout fonctionne :

docker ps

 

 

5. Accéder à phpIPAM

Une fois le déploiement terminé :

  • Ouvrez un navigateur et accédez à : http://<IP_SERVEUR>:80

  • Suivez l’assistant d’installation phpIPAM :

    1. Configurez la connexion à la base de données (phpipam-mariadb, user/pass définis dans docker-compose.yml)

    2. Créez un compte administrateur

    3. Finalisez l’installation

 

 

 

  • Voir si les hosts sont online

 

6. Sécuriser l’installation

Pour un usage production :

  • Mettre la variable d'environnement IPAM_DISABLE_INSTALLER=1 dans docker-compose.yaml
    • Verrouillage de l’installateur et sécurise l’application.
    • Celà evite d'ecraser l'installation à chaque redemarage des conteneurs docker
services:
  phpipam-web:
    image: phpipam/phpipam-www:v1.7.3
    ports:
      - "80:80"
    environment:
      - TZ=Europe/Paris
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=wGkz28z38UJktKDQqV
      - IPAM_DATABASE_WEBHOST=%
      - IPAM_DISABLE_INSTALLER=1
    restart: always
    networks:
      - phpipam-net
    volumes:
      - phpipam-logo:/phpipam/css/images/logo
      - phpipam-ca:/usr/local/share/ca-certificates:ro
    depends_on:
      - phpipam-mariadb

  phpipam-cron:
    image: phpipam/phpipam-cron:v1.7.3
    environment:
      - TZ=Europe/London
      - IPAM_DATABASE_HOST=phpipam-mariadb
      - IPAM_DATABASE_PASS=wGkz28z38UJktKDQqV
      - SCAN_INTERVAL=1h
    restart: always
    volumes:
      - phpipam-ca:/usr/local/share/ca-certificates:ro
    depends_on:
      - phpipam-mariadb

  phpipam-mariadb:
    image: mariadb:10.6.12
    environment:
      - MYSQL_ROOT_PASSWORD=wGkz28z38UJktKDQqV
    restart: always
    volumes:
      - phpipam-db-data:/var/lib/mysql
    networks:
      - phpipam-net
volumes:
  phpipam-db-data:
  phpipam-logo:
  phpipam-ca:

networks:
  phpipam-net:
    external: true
  

 

  • Changer les mots de passe par défaut dans docker-compose.yml

  • Utiliser un reverse proxy (NGINX, Traefik, Caddy) avec HTTPS et let's encrypt par exemple

  • Sauvegarder régulièrement le volume mariadb_data :

8. Automatiser la gestion de phpIPAM avec Terraform

Une fois phpIPAM déployé, on peut automatiser la gestion des sous-réseaux, VLANs et IPs grâce au provider Terraform lord-kyron/phpipam.
Cela permet de versionner et déployer votre plan d’adressage réseau comme du code (IaC – Infrastructure as Code).

 

9.1. Installer le provider lord-kyron/phpipam

Ajoutez dans votre configuration Terraform :

provider "phpipam" {
  app_id             = "test"
  endpoint           = "https://phpipam.example.com/api"
  password           = "PHPIPAM_PASSWORD"
  username           = "Admin"
  insecure           = false
  nest_custom_fields = false
}

data "phpipam_subnet" "subnet" {
  subnet_address = "10.10.2.0"
  subnet_mask    = 24
}

data "phpipam_first_free_address" "next_address" {
  subnet_id = data.phpipam_subnet.subnet.subnet_id
}

resource "phpipam_address" "newip" {
  subnet_id   = data.phpipam_subnet.subnet.subnet_id
  ip_address  = data.phpipam_first_free_address.next_address.ip_address
  hostname    = "tf-test-host.example.internal"
  description = "Managed by Terraform"

  lifecycle {
    ignore_changes = [
      subnet_id,
      ip_address,
    ]
  }
}

 

 

Commentaires

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.