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 9524F91DBE for ; Wed, 31 Jan 2024 14:18:00 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7CCB33ABF7 for ; Wed, 31 Jan 2024 14:18:00 +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 ; Wed, 31 Jan 2024 14:17:59 +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 8AA9F4936B for ; Wed, 31 Jan 2024 14:17:59 +0100 (CET) Date: Wed, 31 Jan 2024 14:17:53 +0100 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= To: Proxmox VE development discussion References: <20240130184041.1125674-1-m.carrara@proxmox.com> <20240130184041.1125674-6-m.carrara@proxmox.com> In-Reply-To: <20240130184041.1125674-6-m.carrara@proxmox.com> MIME-Version: 1.0 User-Agent: astroid/0.16.0 (https://github.com/astroidmail/astroid) Message-Id: <1706704585.2yd7g33cz4.astroid@yuna.none> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-SPAM-LEVEL: Spam detection results: 0 AWL 0.065 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 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: Re: [pve-devel] [PATCH pve-manager 5/8] fix #4759: ceph: configure keyring for ceph-crash.service 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: Wed, 31 Jan 2024 13:18:00 -0000 On January 30, 2024 7:40 pm, Max Carrara wrote: > when creating the cluster's first monitor. >=20 > Signed-off-by: Max Carrara > --- > PVE/API2/Ceph/MON.pm | 28 +++++++++++++++++++++++++++- > PVE/Ceph/Services.pm | 12 ++++++++++-- > PVE/Ceph/Tools.pm | 38 ++++++++++++++++++++++++++++++++++++++ > 3 files changed, 75 insertions(+), 3 deletions(-) >=20 > diff --git a/PVE/API2/Ceph/MON.pm b/PVE/API2/Ceph/MON.pm > index 1e959ef3..8d75f5d1 100644 > --- a/PVE/API2/Ceph/MON.pm > +++ b/PVE/API2/Ceph/MON.pm > @@ -459,11 +459,37 @@ __PACKAGE__->register_method ({ > }); > die $@ if $@; > # automatically create manager after the first monitor is created > + # and set up keyring and config for ceph-crash.service > if ($is_first_monitor) { > PVE::API2::Ceph::MGR->createmgr({ > node =3D> $param->{node}, > id =3D> $param->{node} > - }) > + }); > + > + PVE::Cluster::cfs_lock_file('ceph.conf', undef, sub { > + my $cfg =3D cfs_read_file('ceph.conf'); > + > + if ($cfg->{'client.crash'}) { > + return undef; > + } > + > + $cfg->{'client.crash'}->{keyring} =3D '/etc/pve/ceph/$cluster.$nam= e.keyring'; > + > + cfs_write_file('ceph.conf', $cfg); > + }); > + die $@ if $@; > + > + eval { > + PVE::Ceph::Tools::get_or_create_crash_keyring(); > + }; > + warn "Unable to configure keyring for ceph-crash.service: $@" if $@; the order here should maybe be switched around? first handle the keyring, then put it in the config? > + > + print "enabling service 'ceph-crash.service'\n"; > + PVE::Ceph::Services::ceph_service_cmd('enable', 'crash'); shouldn't this already be handled by default? > + print "starting service 'ceph-crash.service'\n"; > + # ceph-crash already runs by default, > + # this makes sure the keyring is used > + PVE::Ceph::Services::ceph_service_cmd('restart', 'crash'); this should probably be a try-restart to avoid starting it if the admin explicitly disabled and/or stopped it.. but - AFAICT, the ceph-crash script that is executed by the service boils down to (as forked process!) "ceph -n XXX ..." where XXX is (in seque= nce) client.crash.$HOST, client.crash, client.admin, so a service restart shouldn't even be needed, since a fresh ceph (client) process will pick up the config changes anyway? > } > }; > =20 > diff --git a/PVE/Ceph/Services.pm b/PVE/Ceph/Services.pm > index e0f31e8e..5f5986f9 100644 > --- a/PVE/Ceph/Services.pm > +++ b/PVE/Ceph/Services.pm > [..] > diff --git a/PVE/Ceph/Tools.pm b/PVE/Ceph/Tools.pm > index 3acef11b..cf9f2ed4 100644 > --- a/PVE/Ceph/Tools.pm > +++ b/PVE/Ceph/Tools.pm > [..] > + my $output =3D $rados->mon_command({ > + prefix =3D> 'auth get-or-create', > + entity =3D> 'client.crash', > + caps =3D> [ > + mon =3D> 'profile crash', > + mgr =3D> 'profile crash', > + ], > + format =3D> 'plain', > + }); > + > + if (! -d $pve_ceph_cfgdir) { > + mkdir $pve_ceph_cfgdir; > + } > + > + PVE::Tools::file_set_contents($pve_ceph_crash_key_path, $output); > + > + return $pve_ceph_crash_key_path; > +} > + we have another helper for creating a keyring (and another inline call to ceph-authtool when creating a monitor), should we unify them?