Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid the integrated SmartProxy for non-Katello #3084

Merged
merged 2 commits into from
Jul 28, 2024

Conversation

ekohl
Copy link
Member

@ekohl ekohl commented Jun 20, 2024

The concept of an "integrated" or "external" Smart Proxy has never been used outside of Katello. In vanilla Foreman all Smart Proxies are equal. Some just happen to run on the same server as Foreman, but even that's optional. Advanced users can use --no-enable-foreman-proxy to the installer to disable this.

Within Katello there is a slight nuance and that's the role of Pulp. Each Smart Proxy Pulp plugin can identify itself as a mirror. Typically this is true for every Smart Proxy that's not on the Foreman server while it's false for the one on the Foreman server. If the number of non-mirrors isn't equal to 1 then Katello has a problem.

On a technical level there is no code difference and it's just a simple configuration flag. It would also be perfectly valid to separate out the non-mirror from Foreman, but the current installer doesn't make that easy and our upgrade tooling also doesn't support this.

In the future this may become supported, so it's best to keep the references to integrated/external to a minimum.

It also makes it obvious that a SmartProxyServer can provide services. All the components mentioned are optional and not provided by default (except Puppet Server in non-Katello deployments).

I still struggle to properly define these things. For example, I couldn't find how we define Smart Proxy, but here's how I would define it:

Smart Proxy: a service that acts as a facade for various services, providing a unified REST API with a single authentication mechanism. Each Smart Proxy is registered to Foreman, allowing Foreman to delegate functionality for hosts, hostgroups, domains and subnet to specific Smart Proxies.

Foreman Proxy: the default (and currently only) implementation of a Smart Proxy.

Smart Proxy Server: a server running the Smart Proxy, with optionally additional services such as DHCP, DNS, TFTP and Puppet Server.

I debated leaving these comments on #2972 or open a new issue. Feel free to consider this a bug report and take it over.

Please cherry-pick my commits into:

  • Foreman 3.11/Katello 4.13
  • Foreman 3.10/Katello 4.12
  • Foreman 3.9/Katello 4.11 (Satellite 6.15; orcharhino 6.8)
  • Foreman 3.8/Katello 4.10
  • Foreman 3.7/Katello 4.9 (Satellite 6.14)
  • Foreman 3.6/Katello 4.8
  • Foreman 3.5/Katello 4.7 (Satellite 6.13; orcharhino 6.6/6.7)
  • We do not accept PRs for Foreman older than 3.5.

All the components mentioned are optional and not provided by default
(except Puppet Server in non-Katello deployments).
The concept of an "integrated" or "external" Smart Proxy has never been
used outside of Katello. In vanilla Foreman all Smart Proxies are equal.
Some just happen to run on the same server as Foreman, but even that's
optional. Advanced users can use `--no-enable-foreman-proxy` to the
installer to disable this.

Within Katello there is a slight nuance and that's the role of Pulp.
Each Smart Proxy Pulp plugin can identify itself as a mirror. Typically
this is true for every Smart Proxy that's not on the Foreman server
while it's false for the one on the Foreman server. If the number of
non-mirrors isn't equal to 1 then Katello has a problem.

On a technical level there is no code difference and it's just a simple
configuration flag. It would also be perfectly valid to separate out the
non-mirror from Foreman, but the current installer doesn't make that
easy and our upgrade tooling also doesn't support this.

In the future this may become supported, so it's best to keep the
references to integrated/external to a minimum.
Copy link
Contributor

@maximiliankolb maximiliankolb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

diff LGTM and change is very unintrusive. Feel free to merge!

@apinnick
Copy link
Contributor

The link flagged by the linkchecker seems to work now.

@apinnick apinnick merged commit 95bf26b into theforeman:master Jul 28, 2024
7 of 8 checks passed
apinnick pushed a commit that referenced this pull request Jul 28, 2024
* Make it obvious that a SmartProxyServer can provide services

All the components mentioned are optional and not provided by default
(except Puppet Server in non-Katello deployments).

* Avoid the integrated SmartProxy for non-Katello

The concept of an "integrated" or "external" Smart Proxy has never been
used outside of Katello. In vanilla Foreman all Smart Proxies are equal.
Some just happen to run on the same server as Foreman, but even that's
optional. Advanced users can use `--no-enable-foreman-proxy` to the
installer to disable this.

Within Katello there is a slight nuance and that's the role of Pulp.
Each Smart Proxy Pulp plugin can identify itself as a mirror. Typically
this is true for every Smart Proxy that's not on the Foreman server
while it's false for the one on the Foreman server. If the number of
non-mirrors isn't equal to 1 then Katello has a problem.

On a technical level there is no code difference and it's just a simple
configuration flag. It would also be perfectly valid to separate out the
non-mirror from Foreman, but the current installer doesn't make that
easy and our upgrade tooling also doesn't support this.

In the future this may become supported, so it's best to keep the
references to integrated/external to a minimum.

(cherry picked from commit 95bf26b)
apinnick pushed a commit that referenced this pull request Jul 28, 2024
* Make it obvious that a SmartProxyServer can provide services

All the components mentioned are optional and not provided by default
(except Puppet Server in non-Katello deployments).

* Avoid the integrated SmartProxy for non-Katello

The concept of an "integrated" or "external" Smart Proxy has never been
used outside of Katello. In vanilla Foreman all Smart Proxies are equal.
Some just happen to run on the same server as Foreman, but even that's
optional. Advanced users can use `--no-enable-foreman-proxy` to the
installer to disable this.

Within Katello there is a slight nuance and that's the role of Pulp.
Each Smart Proxy Pulp plugin can identify itself as a mirror. Typically
this is true for every Smart Proxy that's not on the Foreman server
while it's false for the one on the Foreman server. If the number of
non-mirrors isn't equal to 1 then Katello has a problem.

On a technical level there is no code difference and it's just a simple
configuration flag. It would also be perfectly valid to separate out the
non-mirror from Foreman, but the current installer doesn't make that
easy and our upgrade tooling also doesn't support this.

In the future this may become supported, so it's best to keep the
references to integrated/external to a minimum.

(cherry picked from commit 95bf26b)
@apinnick
Copy link
Contributor

Merged and cherry-picked:

fe069de..9501fb6 3.10 -> 3.10
0c57c2f..e19944c 3.11 -> 3.11

@ekohl ekohl deleted the fix-glossary-smart-proxy branch July 30, 2024 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants