Skip to content

Feature Request: Autodiscovery for Podman Quadlets #8951

Open

Description

@ChristianCiach

Is your feature request related to a problem?

Podman Quadlets are similar to Docker Compose service definitions, but they are using a systemd unit like syntax. Quadlets are usually placed in /etc/containers/systemd/ and the simpliest kind of a Quadlet uses the .container file suffix, which I would like for updatecli to support.

Example:

/etc/containers/systemd/wg-easy.container

[Unit]
Description=A simple wireguard management server

[Install]
WantedBy=default.target

[Container]
Image=ghcr.io/wg-easy/wg-easy:15.3.0
Environment=INSECURE=true
Volume=/lib/modules:/lib/modules:ro
Volume=/etc/wg-easy:/etc/wireguard:rw
PublishPort=51820:51820/udp
PublishPort=51821:51821/tcp

Solution you'd like

I would like to just execute updatecli apply inside the /etc/containers/systemd/ directory and let updatecli do its thing :) Images should be automatically updated and pinned using digests.

Alternatives you've considered

No response

Anything else?

No response

Activity

  1. olblak commented on May 20, 2026

    @olblak
    Member

    This is a good idea, we could parse systemd configuration file using https://github.com/coreos/go-systemd/tree/main

    We would need a few plugin https://github.com/coreos/go-systemd/tree/main

  2. ScMofeoluwa commented on May 24, 2026

    @ScMofeoluwa
    Contributor

    I'd like to work on this. For the first PR, should I limit the scope to .container files and autodiscovery of Image= values using go-systemd, or do you expect a dedicated Quadlet resource plugin too?

  3. ChristianCiach commented on May 24, 2026

    @ChristianCiach
    Author

    I don't even know what a quadlet resource plugin would do. Sorry, I never used the full feature set of updatecli. I usually just updatecli apply my docker compose files and I am happy that it works 😅

    There doesn't seem to be a dedicated "docker compose" resource plugin, probably because you can just use the "yaml" resource plugin. In that sense, there should probably (if at all) a systemd-unit resource plugin instead of a specialized quadlet plugin. But this is out of scope of my feature request.

  4. ScMofeoluwa commented on May 24, 2026

    @ScMofeoluwa
    Contributor

    Thanks, that matches my understanding. I'll wait for @olblak confirmation, but autodiscovery only for .container files sounds like the right first scope

  5. olblak commented on May 24, 2026

    @olblak
    Member

    Just to clarify here, an autodiscovery plugin is nothing more than a generator of Updatecli manifest.
    For example here the docker compose autodiscovery plugin: https://github.com/updatecli/updatecli/blob/main/pkg/plugins/autodiscovery/dockercompose/manifestTemplate.go

    Unless we can use the regular expression reliably, we'll need to implement a source/condition/target plugin for systemd configuration using something like https://github.com/coreos/go-systemd/tree/main/unit

    Something like https://github.com/updatecli/updatecli/tree/main/pkg/plugins/resources/file

    And then implement the autodiscovery plugin

  6. ScMofeoluwa commented on May 24, 2026

    @ScMofeoluwa
    Contributor

    Thanks, that makes sense. I'll start by looking at pkg/plugins/resources/file and implement a systemd resource plugin using go-systemd package, then build the Quadlet autodiscovery plugin on top of it. I'll keep the first PR focused on .container files and Image= updates unless you prefer a different scope

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions