[pve-devel] [PATCH v4 pve-manager 14/16] ceph: introduce '/etc/pve/ceph'
Max Carrara
m.carrara at proxmox.com
Tue Mar 19 17:01:32 CET 2024
On Tue Mar 19, 2024 at 11:04 AM CET, Fabian Grünbichler wrote:
> On March 5, 2024 4:07 pm, Max Carrara wrote:
> > 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 <m.carrara at proxmox.com>
> > ---
> > 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
>
> nit: never hard code such versions in patches unless you know they will be
> applied right away ;) instead, have a placeholder here and call it out
> prominently in the patch notes and cover letter.
Thanks, will do!
>
> > + 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
> >
> >
> >
> > _______________________________________________
> > pve-devel mailing list
> > pve-devel at lists.proxmox.com
> > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> >
> >
> >
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
More information about the pve-devel
mailing list