Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

An introduction to the Pulp project

7,821 views

Published on

This talk shows what is Pulp, how to use to to manage your rpm repositories. It contains some basic and some more advanced usecases.

Published in: Technology

An introduction to the Pulp project

  1. 1. Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto CentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, BrusselsCentOS DoJo, Brussels January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015January 30, 2015
  2. 2. whoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoamiwhoami Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto • Open-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.eu • Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS)Linux Sysadmin (mainly CentOS) • FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004FOSS defender since 2004 • DevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelistDevOps believer and evangelist • CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011CentOS User since 2011 • @roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie on irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/github
  3. 3. inuits.eu
  4. 4. Distributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing SoftwareDistributing Software • Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM)Plain FTP (+SCM) • TarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarballTarball • Self-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarballSelf-extracting tarball • curl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bashcurl|bash • Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside?Containers? What's inside? • Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)Packages (.deb, .rpm,…)
  5. 5. How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos?How to do manage your repos? • using upstream?using upstream?using upstream?using upstream?using upstream?using upstream?using upstream?using upstream?using upstream?using upstream?using upstream?using upstream?using upstream?using upstream?using upstream?using upstream?using upstream? ▶ What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down?What if upstream is down? • rsync?rsync?rsync?rsync?rsync?rsync?rsync?rsync?rsync?rsync?rsync?rsync?rsync?rsync?rsync?rsync?rsync? ▶ no flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibilityno flexibility • createrepo?createrepo?createrepo?createrepo?createrepo?createrepo?createrepo?createrepo?createrepo?createrepo?createrepo?createrepo?createrepo?createrepo?createrepo?createrepo?createrepo? ▶ feels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90'sfeels so 90's • mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?mrepo? reposync?
  6. 6. PackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackagingPackaging Licensed under a Creative Commons Attribution-ShareAlike 2.0 License https://www.flickr.com/photos/halfbisqued/2353845688
  7. 7. Advantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packagingAdvantages of packaging • Consistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file listsConsistency checks, file lists • Dependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolvingDependencies resolving • RepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositories • GPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-SigningGPG-Signing • Lots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of toolsLots of tools • VersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioningVersioning • Unique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible buildUnique artifacts, reproducible build • CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)CfgMgmt integration (Puppet, Chef…)
  8. 8. Disadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packagingDisadvantages(?) of packaging • Learning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec filesLearning required to write spec files • Hard to writeHard to writeHard to writeHard to writeHard to writeHard to writeHard to writeHard to writeHard to writeHard to writeHard to writeHard to writeHard to writeHard to writeHard to writeHard to writeHard to write goodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgood spec filesspec filesspec filesspec filesspec filesspec filesspec filesspec filesspec filesspec filesspec filesspec filesspec filesspec filesspec filesspec filesspec files • Dozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositoriesDozens of repositories • Packages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflictsPackages conflicts • Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?Where are the dependencies?
  9. 9. FPMFPMFPMFPMFPMFPMFPMFPMFPMFPMFPMFPMFPMFPMFPMFPMFPM Effing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package ManagementEffing Package Management • Command-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line tool • Easily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package EverythingEasily Package Everything • I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/…I/O: rpm/deb/rubygems/pypi/tar/files/… • Makes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easierMakes packaging easier • Since 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansisselSince 2011, initiated by @jordansissel • https://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpmhttps://github.com/jordansissel/fpm
  10. 10. RepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositoriesRepositories • Centralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwaresCentralized source of softwares • Needed to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to updateNeeded to update • Dependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructureDependency of your infrastructure • Bad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infraBad packages can broke your infra • Down repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infraDown repos can broke your infra
  11. 11. ChallengesChallengesChallengesChallengesChallengesChallengesChallengesChallengesChallengesChallengesChallengesChallengesChallengesChallengesChallengesChallengesChallenges • Packaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CIPackaging is part of CI • Interaction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchainInteraction with the build toolchain • Disk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space mattersDisk space matters • Bandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth mattersBandwidth matters • Reliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability mattersReliability matters
  12. 12. Background licensed under a Creative Commons Attribution 2.0 License https://www.flickr.com/photos/caitlinator/15729994747/ Picture has been cropped and Pulp logo has been added to foreground
  13. 13. • Manage software reposManage software reposManage software reposManage software reposManage software reposManage software reposManage software reposManage software reposManage software reposManage software reposManage software reposManage software reposManage software reposManage software reposManage software reposManage software reposManage software repos • Mirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external reposMirror external repos • Publish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these reposPublish content to these repos • Copy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across reposCopy content across repos
  14. 14. Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0Pulp v1.0 • Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012Released in 2012 • RPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories managementRPM-Centric repositories management • Pulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumersPulp consumers • REST APIREST APIREST APIREST APIREST APIREST APIREST APIREST APIREST APIREST APIREST APIREST APIREST APIREST APIREST APIREST APIREST API
  15. 15. Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0Pulp v2.0 • Content-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnosticContent-agnostic • Extendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with pluginsExtendable with plugins ▶ RPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPMRPM ▶ Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge)Puppet modules (private forge) ▶ Docker registryDocker registryDocker registryDocker registryDocker registryDocker registryDocker registryDocker registryDocker registryDocker registryDocker registryDocker registryDocker registryDocker registryDocker registryDocker registryDocker registry ▶ OSTreeOSTreeOSTreeOSTreeOSTreeOSTreeOSTreeOSTreeOSTreeOSTreeOSTreeOSTreeOSTreeOSTreeOSTreeOSTreeOSTree ▶ PythonPythonPythonPythonPythonPythonPythonPythonPythonPythonPythonPythonPythonPythonPythonPythonPython ▶ Debian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositoriesDebian repositories (wip)(wip)(wip)(wip)(wip)(wip)(wip)(wip)(wip)(wip)(wip)(wip)(wip)(wip)(wip)(wip)(wip)
  16. 16. The ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystemThe ecosystem • Pulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community ProjectPulp is a Red Hat Community Project • It plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other toolsIt plays with other tools • Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin…Foreman, Katello, Candlepin… • They bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontendsThey bring frontends • I will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp aloneI will just demo pulp alone
  17. 17. BackgroundlicensedunderaCreativeCommonsAttribution2.0License https://www.flickr.com/photos/-aismist/15514104455/ PicturehasbeencroppedandPulpschemahasbeenadded. PulpschemacomesfromthePulpdocumentation.
  18. 18. DependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependenciesDependencies • Qpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQQpid/RabbitMQ • CeleriCeleriCeleriCeleriCeleriCeleriCeleriCeleriCeleriCeleriCeleriCeleriCeleriCeleriCeleriCeleriCeleri • MongoDBMongoDBMongoDBMongoDBMongoDBMongoDBMongoDBMongoDBMongoDBMongoDBMongoDBMongoDBMongoDBMongoDBMongoDBMongoDBMongoDB • httpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpdhttpd
  19. 19. pulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-adminpulp-admin • Command-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line toolCommand-line tool • Uses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST apiUses the REST api • Can be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another hostCan be used from another host • Also extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendableAlso extendable
  20. 20. In PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn PracticeIn Practice Licensed under a Creative Commons Attribution-ShareAlike 2.0 License https://www.flickr.com/photos/ginnerobot/2641780669
  21. 21. Setting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up PulpSetting up Pulp • Let's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use PuppetLet's use Puppet • https://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deploymenthttps://github.com/pulp/puppet_deployment • For this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrantFor this demo I will also use vagrant
  22. 22. Pulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: IngredientsPulp and Puppet: Ingredients Puppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modulesPuppet modules • puppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apachepuppetlabs/apache • puppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concatpuppetlabs/concat • stahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epelstahnma/epel • puppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodbpuppetlabs/mongodb • pulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulppulp/pulp • dprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpiddprince/qpid • puppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlibpuppetlabs/stdlib
  23. 23. Current statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent status • Standalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp serverStandalone Pulp server • Ready to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requestsReady to process requests • No repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositoriesNo repositories
  24. 24. loginloginloginloginloginloginloginloginloginloginloginloginloginloginloginloginlogin • pulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin loginpulp-admin login • Default user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/adminDefault user/password: admin/admin • Stores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificatesStores SSL certificates • Limited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetimeLimited certificate lifetime • No need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special userNo need to be root/any special user
  25. 25. Basic usecases
  26. 26. Sync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositoriesSync external repositories • Pulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external reposPulp can fetch external repos • Keeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in syncKeeps them in sync • Republish themRepublish themRepublish themRepublish themRepublish themRepublish themRepublish themRepublish themRepublish themRepublish themRepublish themRepublish themRepublish themRepublish themRepublish themRepublish themRepublish them • Yum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use themYum client can then use them
  27. 27. Create your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own reposCreate your own repos • Creating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositoriesCreating yum repositories • Upload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packagesUpload your own RPM packages • Import RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other reposImport RPM packages from other repos • Publishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositoriesPublishing the repositories
  28. 28. • A new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now createdA new repo is now created • It contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packagesIt contains no packages • Let's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packagesLet's add some RPM packages
  29. 29. • The repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our packageThe repo contains our package • But it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yetBut it is not published yet • The changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yumThe changes will not be seen by yum
  30. 30. • Now yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the packageNow yum agents can get the package • It is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apacheIt is now served by apache
  31. 31. Playing with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external reposPlaying with external repos • We will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 reposWe will create 2 repos • One "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repoOne "upstream" repo • And the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repositoryAnd the GlusterFS repository • We will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between themWe will copy packages between them
  32. 32. Current statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent statusCurrent status • We have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two reposWe have two repos • "upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster""upstream" and "gluster" • Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"Now let's copy some RPM to "upstream"
  33. 33. RPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copyRPM packages copy • --from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id--from-repo-id • --to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id--to-repo-id • Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with:Select RPM packages with: ▶ --match--match--match--match--match--match--match--match--match--match--match--match--match--match--match--match--match ▶ --gt--gt--gt--gt--gt--gt--gt--gt--gt--gt--gt--gt--gt--gt--gt--gt--gt ▶ --lt--lt--lt--lt--lt--lt--lt--lt--lt--lt--lt--lt--lt--lt--lt--lt--lt ▶ …………………………………………… • --recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies--recursive copies dependencies
  34. 34. • --bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background--bg runs in background • pulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks listpulp-admin tasks list • pulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks detailspulp-admin tasks details • pulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancelpulp-admin tasks cancel
  35. 35. Setting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositoriesSetting up client repositories • Setting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum reposSetting up like any yum repos • Using your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt toolUsing your favourite CfgMgmt tool • Or using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumersOr using pulp consumers
  36. 36. Advanced usage
  37. 37. Pulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp ConsumersPulp Consumers • Kind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agentKind of Pulp agent • Allows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updatesAllows pulp to "push" updates • Requires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the clientRequires a daemon on the client
  38. 38. Pulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp NodesPulp Nodes • Parent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodesParent and Child nodes • Sharing contentSharing contentSharing contentSharing contentSharing contentSharing contentSharing contentSharing contentSharing contentSharing contentSharing contentSharing contentSharing contentSharing contentSharing contentSharing contentSharing content • "Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories"Replicate" repositories
  39. 39. Repositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories MatrixRepositories Matrix Base Repo Sync Dev UAT Prod CentOS Y Y Y Y CentOS Updates Y Y Y Y Internal n/a Y Y Y Upstream n/a Y Y Y EPEL Y N N N Puppetlabs Y N N N Gluster Y N N N • Upstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other reposUpstream = Cherry-pick from other repos ▶ Less conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflictsLess conflicts ▶ Expose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum reposExpose less yum repos ▶ Avoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installedAvoid extra packages to be installed
  40. 40. Repositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories ManagementRepositories Management • One copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environmentOne copy of each repo per environment • "Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package"Promote" repos as it was one package • Ensure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgradesEnsure safe upgrades • Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)Pulp does not copy files (uses symlinks)
  41. 41. Conclusion
  42. 42. ConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusionConclusion • Pulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositoriesPulp manages repositories • It is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many componentsIt is made of many components • It can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPMIt can do more than just RPM • Based on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-APIBased on a REST-API
  43. 43. DisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantagesDisadvantages • How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo?How is your mongo? • BugsBugsBugsBugsBugsBugsBugsBugsBugsBugsBugsBugsBugsBugsBugsBugsBugs • SlowSlowSlowSlowSlowSlowSlowSlowSlowSlowSlowSlowSlowSlowSlowSlowSlow • Very long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLIVery long CLI
  44. 44. AdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantagesAdvantages • Uses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk spaceUses symlinks to save disk space • Combine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own reposCombine mirroring and own repos • Asynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasksAsynchronous tasks • ConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrencyConcurrency • ScalableScalableScalableScalableScalableScalableScalableScalableScalableScalableScalableScalableScalableScalableScalableScalableScalable • REST ApiREST ApiREST ApiREST ApiREST ApiREST ApiREST ApiREST ApiREST ApiREST ApiREST ApiREST ApiREST ApiREST ApiREST ApiREST ApiREST Api
  45. 45. Read moreRead moreRead moreRead moreRead moreRead moreRead moreRead moreRead moreRead moreRead moreRead moreRead moreRead moreRead moreRead moreRead more http://www.pulpproject.org/ https://github.com/pulp/ https://pulp-user-guide.readthedocs.org/en/latest/ https://pulp-rpm-user-guide.readthedocs.org/en/latest/ https://www.redhat.com/mailman/listinfo/pulp-list/
  46. 46. Thank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank youThank you Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question?Any question? Thanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp teamThanks to the pulp team
  47. 47. ContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContactContact Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto julien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eujulien@inuits.eu @roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie inuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuitsinuits https://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.euhttps://inuits.eu info@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.euinfo@inuits.eu +32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636+32 473 441 636

×