
Pulp est un gestionnaire d'artefacts entièrement open source (licence GPL-2.0) qui centralise, met en cache et distribue vos paquets : RPM, DEB, Python, npm, Ansible, images de conteneurs et plus encore. Cette page vous explique ce qu'est Pulp, son modèle de contenu, et pourquoi c'est le concurrent réellement libre de Nexus et Artifactory. Public visé : administrateurs et équipes DevOps qui veulent héberger leurs dépendances sans EULA ni quota. Vous y trouverez le positionnement, le vocabulaire clé et le parcours de prise en main.
Contrairement à Nexus (édition Community sous EULA avec quotas) et Artifactory (produit propriétaire à version gratuite bridée), Pulp est publié sous GPL-2.0 pour le cœur et les plugins, Apache-2.0 pour son interface web. Aucune licence à accepter, aucune limite de composants ou de requêtes : c'est un logiciel libre au sens strict, gouverné par une communauté ouverte.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Comprendre le rôle et le modèle de contenu de Pulp.
- Distinguer les notions de remote, repository, publication et distribution.
- Situer Pulp face à Nexus et Artifactory (licence, formats, sécurité).
- Repérer les formats d'artefacts pris en charge par les plugins.
Qu'est-ce que Pulp ?
Section intitulée « Qu'est-ce que Pulp ? »Pulp est une plateforme de gestion d'artefacts articulée autour d'un noyau, pulpcore, et de plugins spécialisés par format. Vous n'installez pas un dépôt figé : vous activez les plugins dont vous avez besoin (pulp_rpm, pulp_deb, pulp_python, pulp_container, pulp_ansible, pulp_npm, pulp_maven...), et chacun apporte le savoir-faire d'un type de contenu.
Un gestionnaire d'artefacts sert de point unique entre les dépôts publics (PyPI, Docker Hub, un miroir RPM) et vos machines : il met en cache ce que vous téléchargez, héberge vos paquets internes, et expose le tout via des URLs stables pour vos pipelines. Résultat : des builds plus rapides, une provenance maîtrisée et une indépendance vis-à-vis des dépôts publics.
Le modèle de contenu : le vocabulaire à connaître
Section intitulée « Le modèle de contenu : le vocabulaire à connaître »Pulp ne raisonne pas en « dépôts » monolithiques comme Nexus. Il découpe le cycle de vie d'un artefact en quatre objets, ce qui déroute au début mais offre un versionnement immuable et une grande souplesse.
| Objet | Rôle | Analogie |
|---|---|---|
| Remote | Décrit une source distante à synchroniser (URL, filtres, politique) | La commande de réappro chez un fournisseur |
| Repository | Contient les artefacts ; chaque changement crée une version immuable | L'entrepôt et son historique d'inventaire |
| Publication | Fige une version du dépôt dans un format consommable (index, métadonnées) | Le catalogue imprimé d'un état de stock |
| Distribution | Expose une publication à une URL stable | La vitrine où le client vient se servir |
Cette séparation permet de revenir en arrière instantanément (une distribution pointe vers une autre version) et de publier plusieurs vues d'un même dépôt sans dupliquer les fichiers.
Pourquoi Pulp face à Nexus et Artifactory
Section intitulée « Pourquoi Pulp face à Nexus et Artifactory »Les trois outils font le même métier : centraliser des artefacts multi-formats pour la CI/CD. Le choix se joue sur la licence, la couverture de formats et le modèle de sécurité.
| Critère | Pulp | Nexus | Artifactory |
|---|---|---|---|
| Licence | GPL-2.0 / Apache-2.0 (libre) | Community sous EULA + quotas | Propriétaire (gratuit bridé) |
| Formats | RPM, DEB, Python, npm, Ansible, conteneurs, Maven, gem, OSTree... | Large | Large |
| Proxy / cache | Oui (remotes + pull-through) | Oui | Oui |
| RBAC | Fin (rôles par plugin) | Selon édition | Selon édition |
| Interface | API REST + CLI + UI (jeune) | UI complète | UI complète |
| Modèle | Remote / Repository / Publication / Distribution | Dépôts (proxy/hosted/group) | Dépôts (local/remote/virtual) |
Le point décisif : si l'indépendance logicielle et l'absence de licence commerciale comptent (secteur public, souveraineté, homelab, budget contraint), Pulp est le seul des trois à être réellement libre. En contrepartie, son interface graphique reste jeune et son modèle de contenu demande un temps d'adaptation ; la CLI pulp et l'API REST sont la porte d'entrée principale.
Les formats pris en charge
Section intitulée « Les formats pris en charge »Chaque format est un plugin. L'image officielle pulp/pulp les active presque tous d'emblée, ce qui permet d'héberger dans une même instance vos paquets système, vos bibliothèques applicatives et vos images de conteneurs.
- Système :
pulp_rpm(RPM/YUM/DNF),pulp_deb(APT),pulp_ostree. - Développement :
pulp_python(PyPI),pulp_npm(npm),pulp_maven(Java),pulp_gem(Ruby). - DevOps :
pulp_container(registre OCI/Docker),pulp_ansible(collections et rôles). - Fichiers bruts :
pulp_filepour n'importe quel artefact binaire.
Cette couverture multi-formats dans un seul outil est exactement ce qui positionne Pulp comme un concurrent sérieux de Nexus et Artifactory, sans leurs contraintes de licence.
Par où commencer
Section intitulée « Par où commencer »Le parcours ci-dessous vous fait passer de l'installation à un dépôt sécurisé, chaque étape s'appuyant sur un lab reproductible.
À retenir
Section intitulée « À retenir »- Pulp est un gestionnaire d'artefacts 100% open source (GPL-2.0 / Apache-2.0), sans EULA ni quota.
- Son architecture repose sur un noyau pulpcore et des plugins par format (RPM, DEB, Python, conteneurs...).
- Le modèle de contenu Remote → Repository → Publication → Distribution apporte un versionnement immuable et des retours arrière instantanés.
- Face à Nexus (EULA + quotas) et Artifactory (propriétaire), Pulp est le choix de l'indépendance logicielle.
- Il n'a pas de quarantaine CVE native : la sécurité se construit avec un scanner comme Trivy et le RBAC.
FAQ : Questions fréquentes sur Pulp
Section intitulée « FAQ : Questions fréquentes sur Pulp »pulp_rpm,pulp_debpour les paquets système ;pulp_python,pulp_npm,pulp_mavenpour le développement ;pulp_containerpour les images OCI,pulp_ansiblepour les collections.
pulp_rpm, pulp_container, pulp-cli) sont publiés sous GPL-2.0 ; l'interface Pulp UI sous Apache-2.0.Contrairement à ses concurrents, il n'y a aucune contrainte commerciale :| Outil | Licence |
|---|---|
| Pulp | GPL-2.0 / Apache-2.0 (libre) |
| Nexus | Community sous EULA + quotas |
| Artifactory | Propriétaire (gratuit bridé) |
- Pulp : 100% libre (GPL), modèle Remote / Repository / Publication / Distribution avec versions immuables, mais interface graphique jeune.
- Nexus : édition Community sous EULA avec quotas, interface mature.
- Artifactory : propriétaire, version gratuite bridée, plateforme intégrée (Xray).
pulp/pulp avec podman :podman run --detach --publish 8080:80 --name pulp \
--volume "$(pwd)/settings":/etc/pulp \
--device /dev/fuse \
docker.io/pulp/pulp:3.114
Elle embarque l'API, les workers, PostgreSQL, Redis et nginx. On définit ensuite le mot de passe admin :podman exec pulp pulpcore-manager reset-admin-password --password "MotDePasse"
Puis on pilote avec la CLI pulp. Détails dans le guide d'installation.pulp_container transforme Pulp en registre OCI/Docker : il héberge vos images et met un registre amont en cache pull-through.Le scan de vulnérabilités n'est pas intégré. On le branche avec un scanner externe comme Trivy dans la CI :trivy image --exit-code 1 --severity CRITICAL \
localhost:8080/dockerhub/library/alpine:3.14
Pulp stocke et distribue, Trivy décide ce qui est promu. Deux briques libres qui remplacent une fonction de curation payante.- Filtres
--includes/--excludesà la synchronisation (liste blanche/noire). - RBAC fin (plus de 160 rôles) et content-guards (RBAC, header, x509).
- Signature de contenu (GPG, Sigstore/cosign).
- Un scanner externe (Trivy) dans la CI pour la décision.