public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Aaron Lauterer <a.lauterer@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: Re: [pve-devel] [PATCH manager v1 1/3] fix #5244 pveceph: install: add new repository for offline installation
Date: Mon, 14 Jul 2025 10:40:26 +0200	[thread overview]
Message-ID: <73563abc-94cd-42d2-bc3f-19569d809284@proxmox.com> (raw)
In-Reply-To: <20250528164630.2204379-1-a.lauterer@proxmox.com>

sent a v2 rebased on current indentations 
https://lore.proxmox.com/pve-devel/20250714083838.68483-1-a.lauterer@proxmox.com/T/#t

On  2025-05-28  18:46, 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>
> Tested-by: Christoph Heiss <c.heiss@proxmox.com>
> ---
> 
> Notes:
>      Changes since 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 | 47 +++++++++++++++++++++++++++++++++-------------
>   1 file changed, 34 insertions(+), 13 deletions(-)
> 
> diff --git a/PVE/CLI/pveceph.pm b/PVE/CLI/pveceph.pm
> index 488aea04..bff7ba70 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,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' => {
> @@ -166,6 +171,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 '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"
>   		." the official Proxmox support!\n\n"
> @@ -186,19 +194,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 "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 = <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";
> +		}
>   	    }
>   	}
>   
> @@ -212,6 +222,17 @@ __PACKAGE__->register_method ({
>   	    )
>   	};
>   
> +	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(
>   	    ceph



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


      parent reply	other threads:[~2025-07-14  8:40 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-28 16:46 Aaron Lauterer
2025-05-28 16:46 ` [pve-devel] [PATCH manager v1 2/3] ui: CephInstallWizard: add option and hint for offline repository Aaron Lauterer
2025-05-28 16:46 ` [pve-devel] [PATCH manager v1 3/3] pveceph: print repo metadata when installing from manual Aaron Lauterer
2025-07-14  8:40 ` Aaron Lauterer [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=73563abc-94cd-42d2-bc3f-19569d809284@proxmox.com \
    --to=a.lauterer@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal