diff --git a/Makefile b/Makefile index af11cca..f0f1ae4 100644 --- a/Makefile +++ b/Makefile @@ -151,7 +151,7 @@ cargo-build: .PHONY: upload upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION) upload: $(ALL_DEBS) - tar cf - $(ALL_DEBS) | ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg,pbs --dist $(UPLOAD_DIST) + tar cf - $(ALL_DEBS) | ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg,pbs,pdm --dist $(UPLOAD_DIST) %.img: truncate -s 2G $@ @@ -222,6 +222,20 @@ check-pbs: prepare-check-pbs check-pbs-tui: prepare-check-pbs testdir/usr/bin/proxmox-tui-installer -t test.img 2>testdir/run/stderr +prepare-check-pdm: prepare-check-env test.img + rm -f cd-info.test; $(MAKE) \ + PRODUCT='pdm' \ + PRODUCTLONG='Proxmox Datacenter Manager' \ + ISONAME='proxmox-datacenter-manager' \ + cd-info.test + ./proxmox-low-level-installer dump-env -t test.img + +check-pdm: prepare-check-pdm + G_SLICE=always-malloc perl -I testdir/usr/share/perl5 testdir/usr/bin/proxinstall -t test.img + +check-pdm-tui: prepare-check-pdm + testdir/usr/bin/proxmox-tui-installer -t test.img 2>testdir/run/stderr + .phony: clean clean: rm -rf target build $(PACKAGE)-[0-9]* testdir diff --git a/Proxmox/Install.pm b/Proxmox/Install.pm index 9074709..88d12c6 100644 --- a/Proxmox/Install.pm +++ b/Proxmox/Install.pm @@ -1455,6 +1455,16 @@ _EOD file_write_all("$targetdir/$user_cfg_fn", "user: root\@pam\n\temail ${mailto}\n"); chroot_chown($targetdir, $user_cfg_fn, user => 'root', group => 'backup'); chroot_chmod($targetdir, $user_cfg_fn, mode => '0640'); + } elsif ($iso_env->{product} eq 'pdm') { + my $base_cfg_path = "/etc/proxmox-datacenter-manager"; + mkdir "$targetdir/$base_cfg_path"; + + mkdir "$targetdir/$base_cfg_path/access"; + my $user_cfg_fn = "$base_cfg_path/acess/user.cfg"; + file_write_all("$targetdir/$user_cfg_fn", "user: root\@pam\n\temail ${mailto}\n"); + + chroot_chown($targetdir, $base_cfg_path, user => 'www-data', recursive => 1); + chroot_chmod($targetdir, $base_cfg_path, mode => '0700'); } }; diff --git a/Proxmox/Install/ISOEnv.pm b/Proxmox/Install/ISOEnv.pm index 62945d8..8a379a7 100644 --- a/Proxmox/Install/ISOEnv.pm +++ b/Proxmox/Install/ISOEnv.pm @@ -31,6 +31,12 @@ my $product_cfg = { enable_btrfs => 0, bridged_network => 0, }, + pdm => { + fullname => 'Proxmox Datacenter Manager', + port => '8443', # TODO: confirm + enable_btrfs => 0, + bridged_network => 0, + }, }; my sub read_locale_info { diff --git a/banner/Makefile b/banner/Makefile index 3fcfb50..96d65d4 100644 --- a/banner/Makefile +++ b/banner/Makefile @@ -3,6 +3,7 @@ INSTALLER_SOURCES= \ pmg-banner.png \ pve-banner.png \ pbs-banner.png \ + pdm-banner.png \ %-banner.png: %-banner.svg rsvg-convert -o $@ $< diff --git a/banner/pdm-banner.png b/banner/pdm-banner.png new file mode 120000 index 0000000..142cf47 --- /dev/null +++ b/banner/pdm-banner.png @@ -0,0 +1 @@ +pbs-banner.png \ No newline at end of file diff --git a/banner/pdm-banner.svg b/banner/pdm-banner.svg new file mode 120000 index 0000000..257e9c1 --- /dev/null +++ b/banner/pdm-banner.svg @@ -0,0 +1 @@ +pbs-banner.svg \ No newline at end of file diff --git a/debian/control b/debian/control index ee1fc44..c8cf62d 100644 --- a/debian/control +++ b/debian/control @@ -51,9 +51,10 @@ Breaks: pbs-installer (<< 7~), pve-installer (<< 7~), Replaces: pbs-installer (<< 7~), pve-installer (<< 7~), Description: Installer for Proxmox Projects This package contains the graphical installer for: - * Proxmox VE. - * Proxmox Mail Gateway. + * Proxmox VE + * Proxmox Mail Gateway * Proxmox Backup Server + * Proxmox Datacenter Manager Package: proxmox-auto-install-assistant Architecture: any diff --git a/debian/install b/debian/install index b64c8ec..f9bb149 100644 --- a/debian/install +++ b/debian/install @@ -4,6 +4,7 @@ banner/pbs-banner.png /var/lib/proxmox-installer banner/pmg-banner.png /var/lib/proxmox-installer banner/pve-banner.png /var/lib/proxmox-installer +banner/pdm-banner.png /var/lib/proxmox-installer etc html /var/lib/proxmox-installer/ sbin diff --git a/html/pdm/Makefile b/html/pdm/Makefile new file mode 100644 index 0000000..adf4646 --- /dev/null +++ b/html/pdm/Makefile @@ -0,0 +1,7 @@ +DESTDIR= + +all: + +.phony: clean +clean: + rm -rf *~ diff --git a/html/pdm/extract1-license.htm b/html/pdm/extract1-license.htm new file mode 100644 index 0000000..6929553 --- /dev/null +++ b/html/pdm/extract1-license.htm @@ -0,0 +1,54 @@ + + + + + + +
+ + + + + + + + + + +
 
+ In-Development Datacenter Manager

+ + +
+ Open-Source Management Software for Servers

+ - Central overview of all your Proxmox VE cluster.
+ - Modern user interface.
+ - Simple architecture.
+ - Easy management

+ + For more information, visit forum.proxmox.com. +

+
+


+ + + + + + + + + +
+ Graphical User Interface
+ Easily manage your resources with the integrated web interface.

+
+ Performance
+ The entire software stack, including the user interface, is written in Rust for high speed, performance, and memory efficiency. +
+
+

+
+
+ + diff --git a/html/pdm/extract2-rulesystem.htm b/html/pdm/extract2-rulesystem.htm new file mode 100644 index 0000000..257975c --- /dev/null +++ b/html/pdm/extract2-rulesystem.htm @@ -0,0 +1,62 @@ + + + + + + +
+ + + + + + + + + + +
 
+ Data Safety & Minimized Storage Consumption +

+ + +
+ Proxmox Datacenter Manager is currently under development and not yet production ready.

+ The role-based permission management, combined with the integration of multiple external + authentication sources provides the basis for a secure and stable environment.

+ +
+


+ + + + + + + + + + + + + + + + +
+ Commitment to Free Software
+ The source code is released under the GNU Affero General Public License, v3. +
+ RESTful web API
+ The resource-oriented architecture (ROA) and declarative API definition using JSON + Schema enable easy integration for third party management tools. +
+ Independent
+ There is no dependency between Proxmox Datacenter Manager and the resources it manages, + any Proxmox VE cluster stays fully self-contained. +
+

+
+
+ diff --git a/html/pdm/extract3-spam.htm b/html/pdm/extract3-spam.htm new file mode 100644 index 0000000..b3c0013 --- /dev/null +++ b/html/pdm/extract3-spam.htm @@ -0,0 +1,58 @@ + + + + + + +
+ + + + + + + + + + +
 
+ Web-Based Management +

+ + +
+ Proxmox Datacenter Manager helps you manage and gain visibility into your mission-critical + resources.
+
+


+ + + + + + + + + + + + + + + +
+ Support for Proxmox VE
+ The Proxmox Virtual Environment will be fully supported, and the seamless integration + allows you to easily manage VMs and containers.
+
+ Web Console
+ SSL-secured, browser-integrated system console.
+
+ Flaky connection? No Problem.
+ Using only the API to access resources eliminates the need for highly stable, + low-latency network connections.
+
+

+
+
+ diff --git a/html/pdm/extract4-virus.htm b/html/pdm/extract4-virus.htm new file mode 100644 index 0000000..410382c --- /dev/null +++ b/html/pdm/extract4-virus.htm @@ -0,0 +1,52 @@ + + + + + + +
+ + + + + + + + + + +
 
+ Proxmox Datacenter Manager +

+

+ + + +
+ Status Overview
+ Easily check that all resources and services are up and running and not overloaded.

+
+ Central Control
+ Operate your whole Proxmox projects based infrastructure from a single endpoint.

+
+


+ + + + + + + + + +
+ Essential Management
+ Execute essential operation on the managed resources directly.

+
+ Technical Support
+ Enterprise support options will be available from Proxmox once stable.

+
+

+
+ + diff --git a/html/pdm/page1.htm b/html/pdm/page1.htm new file mode 100644 index 0000000..6eec617 --- /dev/null +++ b/html/pdm/page1.htm @@ -0,0 +1,58 @@ + + + + + + +
+ + + + + + + + + + +
 
+ Proxmox Datacenter Manager (PDM) +

+ + +
The Proxmox Installer + automatically partitions your hard disk. It installs all required packages and makes the + system bootable from the hard disk. + All existing partitions and data on the selected disks will be lost. +

+ To continue the installation, press the Next button. +
+


+ + + + + + + + + + + + + +
Please verify the installation target
+ The displayed hard disk will be used for the installation. +
Warning: All existing partitions and data on selected disks will be lost. +

+
Automatic hardware detection
+ The installer automatically configures your hardware. +

+
Graphical user interface
+ Final configuration will be done on the graphical user interface, via a web browser. +

+
+

+
+
+ diff --git a/html/pdm/passwd.htm b/html/pdm/passwd.htm new file mode 100644 index 0000000..168a7b8 --- /dev/null +++ b/html/pdm/passwd.htm @@ -0,0 +1,52 @@ + + + + + + +
+ + + + + + + + + +
 
+ Administration Password and Email Address +

+ + +
Proxmox Datacenter Manager is a + full-featured, highly secure system, based on Debian GNU/Linux. +

+ In this step, please provide the root password. +
+


+ + + + + + + + + + + + + +
Password: + Please use a strong password. It should be at least 8 characters long, + and contain a combination of letters, numbers, and symbols. +

+
Email: + Enter a valid email address. Your Proxmox Datacenter Manager will send + important alert notifications to this email account (all emails for 'root'). +

+
To continue the installation, press the Next button.
+

+
+ diff --git a/proxmox-installer-common/src/options.rs b/proxmox-installer-common/src/options.rs index 9720804..0fd3e43 100644 --- a/proxmox-installer-common/src/options.rs +++ b/proxmox-installer-common/src/options.rs @@ -465,7 +465,7 @@ impl NetworkOptions { Fqdn::from(&format!("{hostname}.{domain}")).unwrap_or_else(|_| { // Safety: This will always result in a valid FQDN, as we control & know - // the values of default_hostname (one of "pve", "pmg" or "pbs") and + // the values of default_hostname (one of "pve", "pmg", "pbs" or "pdm") and // constant-defined DEFAULT_DOMAIN. Fqdn::from(&format!("{}.{}", default_hostname, Self::DEFAULT_DOMAIN)).unwrap() }) @@ -517,6 +517,7 @@ mod tests { ); assert_eq!(default_zfs_arc_max(ProxmoxProduct::PBS, *total_memory), 0); assert_eq!(default_zfs_arc_max(ProxmoxProduct::PMG, *total_memory), 0); + assert_eq!(default_zfs_arc_max(ProxmoxProduct::PDM, *total_memory), 0); } } } diff --git a/proxmox-installer-common/src/setup.rs b/proxmox-installer-common/src/setup.rs index 0ef47d2..6cc3804 100644 --- a/proxmox-installer-common/src/setup.rs +++ b/proxmox-installer-common/src/setup.rs @@ -26,6 +26,7 @@ pub enum ProxmoxProduct { PVE, PBS, PMG, + PDM, } impl ProxmoxProduct { @@ -34,6 +35,7 @@ impl ProxmoxProduct { Self::PVE => "pve", Self::PMG => "pmg", Self::PBS => "pbs", + Self::PDM => "pdm", } } } @@ -44,6 +46,7 @@ impl fmt::Display for ProxmoxProduct { Self::PVE => "pve", Self::PMG => "pmg", Self::PBS => "pbs", + Self::PDM => "pdm", }) } } diff --git a/proxmox-post-hook/src/main.rs b/proxmox-post-hook/src/main.rs index 08a2b90..d029b04 100644 --- a/proxmox-post-hook/src/main.rs +++ b/proxmox-post-hook/src/main.rs @@ -168,8 +168,8 @@ struct PostHookInfo { schema: PostHookInfoSchema, /// major.minor version of Debian as installed, retrieved from /etc/debian_version debian_version: String, - /// PVE/PMG/PBS version as reported by `pveversion`, `pmgversion` or - /// `proxmox-backup-manager version`, respectively. + /// PVE/PMG/PBS/PDM version as reported by `pveversion`, `pmgversion`, + /// `proxmox-backup-manager version` or `proxmox-datacenter-manager version`, respectively. product: ProductInfo, /// Release information for the ISO used for the installation. iso: IsoInfo, @@ -399,6 +399,7 @@ impl PostHookInfo { ProxmoxProduct::PVE => "pve-manager", ProxmoxProduct::PMG => "pmg-api", ProxmoxProduct::PBS => "proxmox-backup-server", + ProxmoxProduct::PDM => "proxmox-datacenter-manager", }; let version = run_cmd(&[ diff --git a/test/zfs-arc-max.pl b/test/zfs-arc-max.pl index 74cb9b5..c0938f4 100755 --- a/test/zfs-arc-max.pl +++ b/test/zfs-arc-max.pl @@ -51,6 +51,10 @@ while (my ($total_mem, $expected) = each %default_tests) { mock_product('pmg'); is(Proxmox::Install::RunEnv::default_zfs_arc_max(), 0, "zfs_arc_max should default to `0` for PMG with $total_mem MiB system memory"); + + mock_product('pdm'); + is(Proxmox::Install::RunEnv::default_zfs_arc_max(), 0, + "zfs_arc_max should default to `0` for PDM with $total_mem MiB system memory"); } my @clamp_tests = (