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
Introduce .image quadlet units to decouple image sourcing from container
definitions. Container roles now reference Image=<name>.image instead of
full registry URLs, and a new images role handles deployment with a
three-tier precedence model: admin overrides (/etc/foremanctl/images.d/)
> vendor RPMs (/usr/share/foremanctl/images.d/) > generated defaults.
Resolves: #277
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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 Overrides via Drop-ins
74
+
75
+
foremanctl uses quadlet's native drop-in mechanism for image overrides. Each `.image` file can have a corresponding `.image.d/` directory containing numbered drop-in configuration files. Drop-ins are applied in lexicographic order (last wins):
76
+
77
+
```
78
+
/etc/containers/systemd/
79
+
foreman.image # base, always templated by foremanctl
80
+
foreman.image.d/
81
+
90-user.conf # optional: user override
82
+
```
83
+
84
+
Precedence (last wins):
85
+
86
+
1.`foreman.image` — foremanctl default from `images.yml`
87
+
2.`90-user.conf` — user-provided layer (not managed by foremanctl)
88
+
89
+
Numbered prefixes enforce ordering with gaps for future layers.
90
+
91
+
#### Use Cases
60
92
61
-
1.**Login to your registry** using Podman and save credentials to the default auth file location:
93
+
**Upstream default (no user action):** foremanctl generates `.image` files from its built-in `images.yml`:
94
+
95
+
```ini
96
+
# /etc/containers/systemd/foreman.image (generated by foremanctl)
97
+
[Image]
98
+
Image=quay.io/foreman/foreman:nightly
99
+
```
100
+
101
+
**User's own registry:** The user creates a `90-user.conf` drop-in to point at their own registry. This overrides the base layer:
This approach integrates seamlessly with both the happy path and advanced deployment paths described above. The authentication is handled transparently during image pulling operations.
132
+
This affects the base `.image` files. Drop-in overrides (disconnected or user) manage their own `AuthFile=` directives independently.
72
133
73
134
## Deployer Stages
74
135
@@ -81,7 +142,7 @@ Some of the stages will be made available to the user to run independently.
81
142
a. system requirements
82
143
b. tuning requirements
83
144
c. certificate requirements
84
-
4. Place `.container` files
145
+
4. Place `.image` and `.container` files
85
146
5. Create podman secrets
86
147
6. Reload systemd
87
148
7. (re)start services
@@ -103,7 +164,9 @@ When the user provides parameters to alter the deployment, the deployment utilit
103
164
104
165
## Container changes (Upgrades)
105
166
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.
167
+
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.
168
+
169
+
User drop-in overrides in `.image.d/90-user.conf` take precedence over the base `.image` values — if a user-provided drop-in pins a specific tag, it will not be changed by an upgrade.
107
170
108
171
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