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 39373907F7 for ; Tue, 2 Apr 2024 16:56:55 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 22359838A for ; Tue, 2 Apr 2024 16:56:55 +0200 (CEST) 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, 2 Apr 2024 16:56:54 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 60DFC4476F for ; Tue, 2 Apr 2024 16:56:54 +0200 (CEST) From: Max Carrara To: pve-devel@lists.proxmox.com Date: Tue, 2 Apr 2024 16:55:21 +0200 Message-Id: <20240402145523.683008-10-m.carrara@proxmox.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240402145523.683008-1-m.carrara@proxmox.com> References: <20240402145523.683008-1-m.carrara@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.129 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 Subject: [pve-devel] [PATCH v5 pve-manager 09/11] 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, 02 Apr 2024 14:56:55 -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 when updating. 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 Changes v4 --> v5: * use placeholder for version guard in `postinst` (see cover letter) * reword commit message 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..58f2713f 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' '0.0.0'; 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