From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id E250C97A16 for ; Tue, 5 Mar 2024 16:08:41 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 73A33AF67 for ; Tue, 5 Mar 2024 16:08:09 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Tue, 5 Mar 2024 16:08:06 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 3A2CE487C7 for ; Tue, 5 Mar 2024 16:08:06 +0100 (CET) From: Max Carrara To: pve-devel@lists.proxmox.com Date: Tue, 5 Mar 2024 16:07:56 +0100 Message-Id: <20240305150758.252669-15-m.carrara@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240305150758.252669-1-m.carrara@proxmox.com> References: <20240305150758.252669-1-m.carrara@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.148 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 POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH v4 pve-manager 14/16] ceph: introduce '/etc/pve/ceph' 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: , X-List-Received-Date: Tue, 05 Mar 2024 15:08:42 -0000 This commit adds the '/etc/pve/ceph' directory to our overall expected Ceph configuration. This directory is meant to store cluster-wide, non-private configuration files used by Ceph applications and services that are executed with lower privileges, such as 'ceph-crash.service'. The existence of the directory is now also checked for when checking whether Ceph is configured correctly. This makes it easier for our other tooling to rely on the directory's existence, reducing the number of otherwise needless frequent checking. For new clusters: `pveceph init` now creates '/etc/pve/ceph' when called. For existing clusters: The 'postinst' hook this commit adds ensures that '/etc/pve/ceph' is created upon update. The 'postinst' hook is also version-guarded and does not run when upgrading from pve-manager version 8.1.5 and above. Signed-off-by: Max Carrara --- Changes v2 --> v3: * new; originally part of patches 09, 10 of series v2 - decided it's better to move all this into a separate patch to make context + intention clearer Changes v3 --> v4: * none PVE/API2/Ceph.pm | 5 +++++ PVE/Ceph/Tools.pm | 12 ++++++++++-- debian/postinst | 12 ++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/PVE/API2/Ceph.pm b/PVE/API2/Ceph.pm index 81c17d6e..7fedb87a 100644 --- a/PVE/API2/Ceph.pm +++ b/PVE/API2/Ceph.pm @@ -192,6 +192,11 @@ __PACKAGE__->register_method ({ PVE::Ceph::Tools::check_ceph_installed('ceph_bin'); } + my $pve_ceph_cfgdir = PVE::Ceph::Tools::get_config('pve_ceph_cfgdir'); + if (! -d $pve_ceph_cfgdir) { + File::Path::make_path($pve_ceph_cfgdir); + } + my $auth = $param->{disable_cephx} ? 'none' : 'cephx'; # simply load old config if it already exists diff --git a/PVE/Ceph/Tools.pm b/PVE/Ceph/Tools.pm index ee6c515c..735bb116 100644 --- a/PVE/Ceph/Tools.pm +++ b/PVE/Ceph/Tools.pm @@ -18,6 +18,7 @@ my $ccname = 'ceph'; # ceph cluster name my $ceph_cfgdir = "/etc/ceph"; my $pve_ceph_cfgpath = "/etc/pve/$ccname.conf"; my $ceph_cfgpath = "$ceph_cfgdir/$ccname.conf"; +my $pve_ceph_cfgdir = "/etc/pve/ceph"; my $pve_mon_key_path = "/etc/pve/priv/$ccname.mon.keyring"; my $pve_ckeyring_path = "/etc/pve/priv/$ccname.client.admin.keyring"; @@ -37,6 +38,7 @@ my $ceph_service = { my $config_values = { ccname => $ccname, + pve_ceph_cfgdir => $pve_ceph_cfgdir, ceph_mds_data_dir => $ceph_mds_data_dir, long_rados_timeout => 60, }; @@ -186,8 +188,14 @@ sub check_ceph_inited { return undef if !check_ceph_installed('ceph_mon', $noerr); - if (! -f $pve_ceph_cfgpath) { - die "pveceph configuration not initialized\n" if !$noerr; + my @errors; + + push(@errors, "missing '$pve_ceph_cfgpath'") if ! -f $pve_ceph_cfgpath; + push(@errors, "missing '$pve_ceph_cfgdir'") if ! -d $pve_ceph_cfgdir; + + if (@errors) { + my $err = 'pveceph configuration not initialized - ' . join(', ', @errors) . "\n"; + die $err if !$noerr; return undef; } diff --git a/debian/postinst b/debian/postinst index 6138ef6d..61b50f97 100755 --- a/debian/postinst +++ b/debian/postinst @@ -80,6 +80,14 @@ EOF fi } +update_ceph_conf() { + CEPH_CONF_DIR='/etc/pve/ceph' + + if test ! -d "${CEPH_CONF_DIR}"; then + mkdir -p "${CEPH_CONF_DIR}" + fi +} + migrate_apt_auth_conf() { output="" removed="" @@ -190,6 +198,10 @@ case "$1" in set_lvm_conf + if test -n "$2" && dpkg --compare-versions "$2" 'lt' '8.1.5~'; then + update_ceph_conf + fi + if test ! -e /proxmox_install_mode; then # modeled after code generated by dh_start for unit in ${UNITS}; do -- 2.39.2