From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 610E71FF15C for <inbox@lore.proxmox.com>; Fri, 2 May 2025 13:01:07 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 8B3101EE0E; Fri, 2 May 2025 13:01:18 +0200 (CEST) Date: Fri, 02 May 2025 13:00:42 +0200 Message-Id: <D9LMFUUXXTVX.1JB2J0GGXJ27E@proxmox.com> From: "Christoph Heiss" <c.heiss@proxmox.com> To: "Aaron Lauterer" <a.lauterer@proxmox.com> Mime-Version: 1.0 X-Mailer: aerc 0.20.1 References: <20250423132825.1194271-1-a.lauterer@proxmox.com> In-Reply-To: <20250423132825.1194271-1-a.lauterer@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.029 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [pveceph.pm] Subject: Re: [pve-devel] [RFC manager 1/2] 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 <pve-devel.lists.proxmox.com> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> List-Post: <mailto:pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Cc: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> Tested both patches on a fresh PVE 8.4 installation, setting up Ceph by manually providing a repo in /etc/apt/sources.list.d/ and then installing it - through the web interface and - with `pveceph -repository offline -version squid` Tested-by: Christoph Heiss <c.heiss@proxmox.com> On Wed Apr 23, 2025 at 3:28 PM CEST, Aaron Lauterer wrote: > 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 <a.lauterer@proxmox.com> > --- > I am not sure if we should call the new repo option "offline" or > something like "dont-set". Maybe someone else has another idea. Maybe just call it 'manual'? In patch #2, the (user-facing) description is "Offline (manual setup)" - IMHO "manual setup" for the repos fits pretty good for what the option does. > > I am sending this as an RFC to get feedback if the approach is in the > right direction. > > One TODO that is missing, is to figure out which repo would be used and > print some metadata about it, so that the admins can verify that the > right manually configured repo is the source. > > PVE/CLI/pveceph.pm | 46 +++++++++++++++++++++++++++++++++------------- > 1 file changed, 33 insertions(+), 13 deletions(-) > > diff --git a/PVE/CLI/pveceph.pm b/PVE/CLI/pveceph.pm > index 488aea04..f5fde026 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; > @@ -135,9 +136,12 @@ __PACKAGE__->register_method ({ > }, > repository => { > type => 'string', > - enum => ['enterprise', 'no-subscription', 'test'], > + enum => ['enterprise', 'no-subscription', 'test', 'offline'], > default => 'enterprise', > - description => "Ceph repository to use.", > + description => "Ceph repository to use. The 'offline' repository 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 beforehand!", > optional => 1, Since this parameter is optional anyway, what about only configuring repositories when it is set? Instead of introducing another enum value and defaulting to 'enterprise'. Would seem a bit cleaner, but API breaking - so if, could only go in with 9.0. Do we rely on that behaviour somewhere else? > }, > 'allow-experimental' => { > @@ -166,6 +170,9 @@ __PACKAGE__->register_method ({ > } elsif ($repo eq 'no-subscription') { > 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 'offline') { > + warn "\nHINT: The offline 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" > ." the official Proxmox support!\n\n" > @@ -186,19 +193,21 @@ __PACKAGE__->register_method ({ > die "Aborting installation as requested\n" if !$continue; > } > > - PVE::Tools::file_set_contents("/etc/apt/sources.list.d/ceph.list", $repolist); > + if ($repo ne "offline") { > + 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 = <STDIN>; > - my $continue = defined($answer) && $answer =~ m/^\s*y(?:es)?\s*$/i; > + 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 = <STDIN>; > + 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"; > + die "Aborting installation as requested\n" if !$continue; > + } else { > + die "refusing to install tech-preview Ceph release ${rendered_release} without 'allow-experimental' parameter!\n"; tiny nit: All other messages here are started capitalized, so this one should as well for consistency. > + } > } > } > > @@ -212,6 +221,17 @@ __PACKAGE__->register_method ({ > ) > }; > > + if ($repo eq "offline") { > + # 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( > ceph _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel