You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
See [IOP Architecture](iop.md) for details on the services deployed and configuration options.
54
54
55
-
### Authenticated Registry Handling
55
+
### Image Management
56
56
57
-
If you need to pull images from private or authenticated container registries, you can configure registry authentication using Podman's auth file.
57
+
foremanctl uses Podman quadlet `.image` units to separate image sourcing from container definitions. Each unique container image (foreman, candlepin, pulp, etc.) gets a corresponding `.image`file deployed to `/etc/containers/systemd/`. Container roles reference these by name rather than by full image URL:
All containers that share a base image (e.g., foreman, dynflow-sidekiq, foreman-recurring) reference the same `.image` unit. systemd ensures the image is pulled before any dependent container starts.
72
+
73
+
#### Image Precedence
74
+
75
+
During `foremanctl deploy`, foremanctl resolves which `.image` files to place in `/etc/containers/systemd/` using a three-tier precedence model:
76
+
77
+
1.**Admin overrides** (`/etc/foremanctl/images.d/`) — highest priority. Place custom `.image` files here to override any default.
78
+
2.**Vendor/RPM overrides** (`/usr/share/foremanctl/images.d/`) — used by packaging or vendor layers to set image sources via RPM.
79
+
3.**Generated defaults** — built from the image variables in `images.yml` during deploy.
80
+
81
+
This follows the standard Linux filesystem hierarchy: `/etc/` is for admin-controlled configuration, `/usr/share/` is for vendor-provided data that users should not edit.
82
+
83
+
#### Use Cases
84
+
85
+
**Upstream default (no user action):** No `.image` files exist in `/usr/share/foremanctl/images.d/` or `/etc/foremanctl/images.d/`. foremanctl generates default `.image` files from its built-in `images.yml`:
86
+
87
+
```ini
88
+
# /etc/containers/systemd/foreman.image (generated by foremanctl)
89
+
[Image]
90
+
Image=quay.io/foreman/foreman:nightly
91
+
```
60
92
61
-
1.**Login to your registry** using Podman and save credentials to the default auth file location:
93
+
**RPM-provided image definitions (no user action):** An RPM installs pre-rendered `.image` files to the vendor directory (`/usr/share/foremanctl/images.d/foreman.image`, etc.). foremanctl copies them to `/etc/containers/systemd/` during deploy. The RPM's presence is the configuration:
94
+
95
+
```ini
96
+
# /usr/share/foremanctl/images.d/foreman.image
97
+
[Image]
98
+
Image=registry.example.com/org/foreman:6.17
99
+
AuthFile=/etc/foreman/registry-auth.json
100
+
```
101
+
102
+
**User's own registry (user-configured):** The user creates `.image` files in `/etc/foremanctl/images.d/` pointing at their own registry (e.g., Foreman+Katello/Pulp). These override any vendor-provided files:
This approach integrates seamlessly with both the happy path and advanced deployment paths described above. The authentication is handled transparently during image pulling operations.
133
+
This only affects generated defaults (tier 3). Admin and vendor `.image` files manage their own `AuthFile=` directives.
72
134
73
135
## Deployer Stages
74
136
@@ -81,7 +143,7 @@ Some of the stages will be made available to the user to run independently.
81
143
a. system requirements
82
144
b. tuning requirements
83
145
c. certificate requirements
84
-
4. Place `.container` files
146
+
4. Place `.image` and `.container` files
85
147
5. Create podman secrets
86
148
6. Reload systemd
87
149
7. (re)start services
@@ -103,7 +165,9 @@ When the user provides parameters to alter the deployment, the deployment utilit
103
165
104
166
## Container changes (Upgrades)
105
167
106
-
When the running containers change because the stream was changed in the configuration, the deployment utility will pull the new images and use the new images when starting services.
168
+
When the running containers change because the stream was changed in the configuration, the deployment utility regenerates `.image` units with the new image references and restarts services to pull and use the updated images.
169
+
170
+
Admin overrides in `/etc/foremanctl/images.d/` take precedence over `images.yml` values — if an admin-provided `.image` file pins a specific tag, it will not be changed by an upgrade.
107
171
108
172
As there is currently no way for the deployment utility to verify which image version is used by a running service, the user is advised to stop all services before performing an upgrade.
0 commit comments