From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id CFA021FF187 for ; Mon, 14 Jul 2025 10:38:18 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7D93C11550; Mon, 14 Jul 2025 10:39:12 +0200 (CEST) From: Aaron Lauterer To: pve-devel@lists.proxmox.com Date: Mon, 14 Jul 2025 10:38:36 +0200 Message-Id: <20250714083838.68483-1-a.lauterer@proxmox.com> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.022 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH v2 1/3] fix #5244 pveceph: install: add new repository for offline installation X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" by adding a 4th repository option called 'offline'. If set, the ceph installation step will not touch the repository configuration. We add a simple version check to make sure that the latest version available (and to be installed) does match the selected major Ceph version. Signed-off-by: Aaron Lauterer Tested-by: Christoph Heiss --- Notes: Changes since v1: * rebased to new indentation RFC [0]: * rename option from 'offline' to 'manual' * start moved warning to begin uppercase as the others [0] https://lore.proxmox.com/pve-devel/20250423132825.1194271-1-a.lauterer@proxmox.com/ PVE/CLI/pveceph.pm | 60 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 18 deletions(-) diff --git a/PVE/CLI/pveceph.pm b/PVE/CLI/pveceph.pm index c8049a0e..a949582e 100755 --- a/PVE/CLI/pveceph.pm +++ b/PVE/CLI/pveceph.pm @@ -3,6 +3,7 @@ package PVE::CLI::pveceph; use strict; use warnings; +use AptPkg::Cache; use Data::Dumper; use Fcntl ':flock'; use File::Path; @@ -136,9 +137,13 @@ __PACKAGE__->register_method({ }, repository => { type => 'string', - enum => ['enterprise', 'no-subscription', 'test'], + enum => ['enterprise', 'no-subscription', 'test', 'manual'], default => 'enterprise', - description => "Ceph repository to use.", + description => "Ceph repository to use. The 'manual' option will not configure" + . " any repositories. Use it if the host cannot access the public repositories," + . " for example if Proxmox Offline Mirror is used. A repository that contains" + . " the Ceph packages for the version needs to be manually configured before" + . " starting the installation!", optional => 1, }, 'allow-experimental' => { @@ -170,6 +175,10 @@ __PACKAGE__->register_method({ warn "\nHINT: The no-subscription repository is not the best choice for production setups.\n" . "Proxmox recommends using the enterprise repository with a valid subscription.\n"; + } elsif ($repo eq 'manual') { + warn + "\nHINT: The manual repository option expects that the Ceph repository is already correctly configured." + . " For example, when used in combination with Proxmox Offline Mirror.\n"; } else { warn "\nWARN: The test repository should only be used for test setups or after consulting" @@ -199,22 +208,24 @@ EOF die "Aborting installation as requested\n" if !$continue; } - PVE::Tools::file_set_contents("/etc/apt/sources.list.d/ceph.sources", $repo_source); - - if ($available_ceph_releases->{$cephver}->{unsupported}) { - if ($param->{'allow-experimental'}) { - warn - "NOTE: installing experimental/tech-preview Ceph release ${rendered_release}!\n"; - } elsif (-t STDOUT) { - print - "Ceph ${rendered_release} is currently considered a technology preview for Proxmox VE - continue (y/N)? "; - my $answer = ; - my $continue = defined($answer) && $answer =~ m/^\s*y(?:es)?\s*$/i; - - die "Aborting installation as requested\n" if !$continue; - } else { - die - "refusing to install tech-preview Ceph release ${rendered_release} without 'allow-experimental' parameter!\n"; + if ($repo ne "manual") { + PVE::Tools::file_set_contents("/etc/apt/sources.list.d/ceph.list", $repolist); + + if ($available_ceph_releases->{$cephver}->{unsupported}) { + if ($param->{'allow-experimental'}) { + warn + "NOTE: installing experimental/tech-preview Ceph release ${rendered_release}!\n"; + } elsif (-t STDOUT) { + print + "Ceph ${rendered_release} is currently considered a technology preview for Proxmox VE - continue (y/N)? "; + my $answer = ; + my $continue = defined($answer) && $answer =~ m/^\s*y(?:es)?\s*$/i; + + die "Aborting installation as requested\n" if !$continue; + } else { + die + "Refusing to install tech-preview Ceph release ${rendered_release} without 'allow-experimental' parameter!\n"; + } } } @@ -228,6 +239,19 @@ EOF ); }; + if ($repo eq "manual") { + # TODO: get used repo metadata and print it as additional info + my $apt_cache = AptPkg::Cache->new() || die "unable to initialize AptPkg::Cache\n"; + my @ceph_versions = $apt_cache->{'ceph-common:amd64'}->{'VersionList'}->@*; + my $latest_available = $ceph_versions[0]->{'VerStr'}; + my $selected_version = + PVE::Ceph::Releases::get_ceph_release_info($cephver)->{'release'}; + + die + "Selected Ceph version '${selected_version}' does not match the available version in the repository '${latest_available}' \n" + if ($latest_available !~ "^$selected_version"); + } + my @apt_install = qw(apt-get --no-install-recommends -o Dpkg::Options::=--force-confnew install --); my @ceph_packages = qw( -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel