[pdm-devel] [PATCH proxmox/datacenter-manager 00/13] initial auto-installer integration
Christoph Heiss
c.heiss at proxmox.com
Fri Dec 5 12:26:49 CET 2025
v2 posted: https://lore.proxmox.com/pdm-devel/20251205112528.373387-1-c.heiss@proxmox.com/
On Thu Dec 4, 2025 at 1:51 PM CET, Christoph Heiss wrote:
> This series adds integration with our automated installer [0] for all our
> products. With this, Proxmox Datacenter Manager can be used for serving
> answer files via HTTP(S) in an automated fashion.
>
> It provides two new panels:
>
> - Automated Installations: List all past and currently ongoing
> installations.
> - Prepared Answers: Enables users to do the whole CRUD cycle for
> prepared answers, i.e. create new answers (from scratch or based on
> existing ones), edit and delete.
>
> Permission-wise, everything is currently scoped on
> /system/auto-installation.
>
> UI
> ==
>
> Happy about feedback regarding the UI, especially the editing dialog! By
> the nature of it, the auto-installer has a lot more options than the
> standard GUI/TUI installer, and it's kind of hard to not fully cramp up
> the UI while still providing all options.
>
> TOML API
> ========
>
> The auto-installer (currently) only supports TOML as input format for
> the answer, so we need to hack around a bit to serve TOML in the API.
> This is done in patch #12, by implementing the api method
> directly.
>
> Serving TOML from an endpoint under /api2/json/ obviously is rather
> wrong, so I'm definitely open for suggestions.
> We probably also don't want to implement `/api2/toml/` if I'd have to
> guess (or would that be possible selectively, i.e. just for this one
> endpoint?).
>
> Adding JSON support to proxmox-fetch-answer is on my list, but this
> would still be needed if we want to keep compatibility with older ISOs.
>
> Other future work
> =================
>
> - Switch the installer to use the `proxmox-installer-types` crate too
> Left this out for now (though I have a mostly-done branch locally
> already), to ease review.
>
> - Target filter selection by dropdown.
> Based on the system information schema, a list of all possible
> JSON pointers could be generated and displayed to the user, in a form
> consisting of the key, a text input for the value/glob to match and a
> set of add/remove buttons for each filter.
>
> - Display/saving the installation progress/log. The progress log
> generated by the auto-installer can be sent to PDM, showing it there
> similar to tasks.
> Requires changes to the auto-installer, so this would not be
> backwards-compatible with older ISOs.
>
> - Implement a "wait for answer"-ish system. Core idea here is that the
> installer waits for PDM to provide in answer by implemented e.g. an
> retry system. The use case is for to be able to effectively install
> systems on demand, without the need for preparations.
> Again requires changes to the auto-installer and wouldn't be
> backwards-compatible.
>
> [0] https://pve.proxmox.com/wiki/Automated_Installation
>
> Diffstat
> ========
>
> proxmox:
>
> Christoph Heiss (8):
> api-macro: allow $ in identifier name
> network-types: move `Fqdn` type from proxmox-installer-common
> network-types: implement api type for Fqdn
> network-types: cidr: add family-independent constructor and access
> network-types: add api wrapper type for std::net::IpAddr
> installer-types: add common types used by the installer
> installer-types: add types used by the auto-installer
> installer-types: implement api type for all externally-used types
>
> Cargo.toml | 1 +
> proxmox-api-macro/src/util.rs | 2 +-
> proxmox-installer-types/Cargo.toml | 26 +
> proxmox-installer-types/debian/changelog | 5 +
> proxmox-installer-types/debian/control | 67 ++
> proxmox-installer-types/debian/debcargo.toml | 7 +
> proxmox-installer-types/src/answer.rs | 1017 ++++++++++++++++++
> proxmox-installer-types/src/lib.rs | 183 ++++
> proxmox-installer-types/src/post_hook.rs | 239 ++++
> proxmox-network-types/Cargo.toml | 3 +-
> proxmox-network-types/debian/control | 2 +
> proxmox-network-types/src/fqdn.rs | 262 +++++
> proxmox-network-types/src/ip_address.rs | 98 +-
> proxmox-network-types/src/lib.rs | 1 +
> 14 files changed, 1909 insertions(+), 4 deletions(-)
> create mode 100644 proxmox-installer-types/Cargo.toml
> create mode 100644 proxmox-installer-types/debian/changelog
> create mode 100644 proxmox-installer-types/debian/control
> create mode 100644 proxmox-installer-types/debian/debcargo.toml
> create mode 100644 proxmox-installer-types/src/answer.rs
> create mode 100644 proxmox-installer-types/src/lib.rs
> create mode 100644 proxmox-installer-types/src/post_hook.rs
> create mode 100644 proxmox-network-types/src/fqdn.rs
>
> proxmox-datacenter-manager:
>
> Christoph Heiss (6):
> api-types: add api types for auto-installer integration
> config: add auto-installer configuration module
> acl: wire up new /system/auto-installation acl path
> server: api: add auto-installer integration module
> ui: auto-installer: add installations overview panel
> ui: auto-installer: add prepared answer configuration panel
>
> Cargo.toml | 6 +
> debian/control | 5 +
> lib/pdm-api-types/Cargo.toml | 3 +
> lib/pdm-api-types/src/acl.rs | 4 +-
> lib/pdm-api-types/src/auto_installer.rs | 441 +++++++++
> lib/pdm-api-types/src/lib.rs | 1 +
> lib/pdm-config/Cargo.toml | 2 +
> lib/pdm-config/src/auto_install.rs | 85 ++
> lib/pdm-config/src/lib.rs | 1 +
> lib/pdm-config/src/setup.rs | 7 +
> server/Cargo.toml | 4 +
> server/src/api/auto_installer/mod.rs | 654 ++++++++++++++
> server/src/api/mod.rs | 2 +
> ui/Cargo.toml | 4 +
> ui/src/auto_installer/add_wizard.rs | 142 +++
> ui/src/auto_installer/answer_form.rs | 849 ++++++++++++++++++
> ui/src/auto_installer/edit_window.rs | 105 +++
> ui/src/auto_installer/installations_panel.rs | 289 ++++++
> ui/src/auto_installer/mod.rs | 15 +
> .../auto_installer/prepared_answers_panel.rs | 233 +++++
> .../configuration/permission_path_selector.rs | 1 +
> ui/src/lib.rs | 2 +
> ui/src/main_menu.rs | 22 +
> 23 files changed, 2875 insertions(+), 2 deletions(-)
> create mode 100644 lib/pdm-api-types/src/auto_installer.rs
> create mode 100644 lib/pdm-config/src/auto_install.rs
> create mode 100644 server/src/api/auto_installer/mod.rs
> create mode 100644 ui/src/auto_installer/add_wizard.rs
> create mode 100644 ui/src/auto_installer/answer_form.rs
> create mode 100644 ui/src/auto_installer/edit_window.rs
> create mode 100644 ui/src/auto_installer/installations_panel.rs
> create mode 100644 ui/src/auto_installer/mod.rs
> create mode 100644 ui/src/auto_installer/prepared_answers_panel.rs
More information about the pdm-devel
mailing list