Clarification on Terminology of Repository and Remote

I’m a Satellite/Foreman user so I’m having a bit of trouble understanding how Pulp works behind the scenes and the terminology.

I have three internal YUM repositories that serve up all kinds of content pulled from the external world. There is significant storage used on these servers and my guess is that 2% of the disk space it’s consuming is used by the linux clients.

In addition, I want to create a more disaster recovery tolerant system that will run from containers, configure itself and then “on demand” pull packages from Oracle/Fedora/Puppet, etc. Right now, I have three VMs running RHEL6, 7 and 8 that each pull content from the Internet.

I’m having a hard time replicating the Satellite way of doing things when it comes to product/repositories. I want to create a “Centos7” product in Pulp and then download Centos Base, Extras and Updates. The only way that I’ve found to achieve this in Pulp is to create three separate repositories and three remotes. This doesn’t seem like the right way to do it. Is there a “product equivalent” in Pulp that emulates what Satellte/Forman do? I could do this in Satellite easy enough but Satellite is a pig of a product and I really want to start migrating away as much as I can so that my infrastructure is more fault tolerant.

I’ve followed create ,sync and publish a repository but I’ve been unable to accomplish the goal of a single product multiple repositories. Is there an equivalent of “Product” in the Pulp world? Reading the Concepts Documentation, it seems like Pulp has a repository with multiple remotes. Am I confusing terminology here? Is a Satellite/Foreman product equal to a Pulp repository and a Satellite/Foreman repository equal to a Pulp remote?

Any clarification would be most appreciated!

A “Product” in Satellite/Katello world is simply a grouping of repositories. There is no equivalent grouping in Pulp. You could use something like a Pulp repository naming scheme where several Pulp repositories all have the same prefix in their name to achieve something similar yourself.

In your Satellite example, each of the three repositories in your CentOS 7 product correspond to a separate Pulp repository. And each of those Pulp repositories will have a separate Pulp remote for syncing to them.

Thank you for the quick response.

So if I understand you correctly, there is a 1:1 relationship with repository and remote in Pulp and ONLY a 1:1 relationship?

Not quite. Satellite creates Pulp repositories and remotes in a 1:1 relationship and I generally would recommend doing this as a best practice. However, within Pulp it is possible to create one remote and use it to sync the same upstream repo into multiple different Pulp repositories (not sure why you would want to do that though). You can also create a Pulp repository and sync to it using one remote, and then sync to it again using a different remote. But again this is normally a recipe for confusion and chaos.

Generally I always create several related Pulp entities in a 1:1 relationship (for example by using the same name for all of them) even though Pulp does not require me to do so. And that is probably what 95% of Pulp users (including Satellite/Katello) do. There are probably exceptions when you know exactly what you are doing and why, but to start with I recommend keeping things as simple as possible, i.e. 1:1.

2 Likes