rpm, debian: move smartmontools and nvme-cli to ceph-base

We wish to be able to scrape SMART and NVMe metrics from OSD and MON
nodes. For this we require / recommend smartmontools and nvme-cli
dependencies for both the ceph-osd and ceph-mon packages.  However, the
sudoers file (which is required for invoking `smartctl` by user 'ceph')
was installed only in the ceph-osd package.  Since different packages
cannot own the same file, and because we want to be able to scrape from
every daemon, we move the dependencies and the sudoers installation to
ceph-base. For generalization, we rename:
	sudoers.d/ceph-osd-smartctl -> sudoers.d/ceph-smartctl

Fixes: https://tracker.ceph.com/issues/50657
Signed-off-by: Yaarit Hatuka <yaarit@redhat.com>
This commit is contained in:
Yaarit Hatuka 2021-08-25 02:12:08 +00:00
parent 8a3448f6a9
commit 7ca39fa92b
6 changed files with 13 additions and 26 deletions

View File

@ -458,6 +458,12 @@ Requires: gperftools-libs >= 2.6.1
%endif
%if 0%{?weak_deps}
Recommends: chrony
Recommends: nvme-cli
%if 0%{?suse_version}
Requires: smartmontools
%else
Recommends: smartmontools
%endif
%endif
%description base
Base is the package that includes all the files shared amongst ceph servers
@ -526,14 +532,6 @@ Group: System/Filesystems
%endif
Provides: ceph-test:/usr/bin/ceph-monstore-tool
Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
%if 0%{?weak_deps}
Recommends: nvme-cli
%if 0%{?suse_version}
Requires: smartmontools
%else
Recommends: smartmontools
%endif
%endif
%if 0%{with jaeger}
Requires: libjaeger = %{_epoch_prefix}%{version}-%{release}
%endif
@ -806,15 +804,6 @@ Requires: sudo
Requires: libstoragemgmt
Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release}
Requires: python%{python3_pkgversion}-setuptools
%if 0%{?weak_deps}
Recommends: nvme-cli
%if 0%{?suse_version}
Requires: smartmontools
%else
Recommends: smartmontools
%endif
%endif
%description osd
ceph-osd is the object storage daemon for the Ceph distributed file
system. It is responsible for storing objects on a local file system
@ -1421,7 +1410,7 @@ ln -sf %{_sbindir}/mount.ceph %{buildroot}/sbin/mount.ceph
install -m 0644 -D udev/50-rbd.rules %{buildroot}%{_udevrulesdir}/50-rbd.rules
# sudoers.d
install -m 0440 -D sudoers.d/ceph-osd-smartctl %{buildroot}%{_sysconfdir}/sudoers.d/ceph-osd-smartctl
install -m 0440 -D sudoers.d/ceph-smartctl %{buildroot}%{_sysconfdir}/sudoers.d/ceph-smartctl
%if 0%{?rhel} >= 8
pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}%{_bindir}/*
@ -1518,6 +1507,7 @@ rm -rf %{buildroot}
%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-mgr
%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd
%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/bootstrap-rbd-mirror
%{_sysconfdir}/sudoers.d/ceph-smartctl
%post base
/sbin/ldconfig
@ -2104,7 +2094,6 @@ fi
%{_unitdir}/ceph-volume@.service
%attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/osd
%config(noreplace) %{_sysctldir}/90-ceph-osd.conf
%{_sysconfdir}/sudoers.d/ceph-osd-smartctl
%post osd
%if 0%{?suse_version}

View File

@ -19,3 +19,4 @@ usr/share/man/man8/crushtool.8
usr/share/man/man8/monmaptool.8
usr/share/man/man8/osdmaptool.8
usr/share/man/man8/ceph-kvstore-tool.8
etc/sudoers.d/ceph-smartctl

View File

@ -23,4 +23,3 @@ usr/share/man/man8/ceph-volume-systemd.8
usr/share/man/man8/ceph-osd.8
usr/share/man/man8/ceph-bluestore-tool.8
etc/sysctl.d/30-ceph-osd.conf
etc/sudoers.d/ceph-osd-smartctl

6
debian/control vendored
View File

@ -147,6 +147,8 @@ Recommends: btrfs-tools,
libradosstriper1 (= ${binary:Version}),
librbd1 (= ${binary:Version}),
ntp | time-daemon,
nvme-cli,
smartmontools,
Replaces: ceph (<< 10),
ceph-common (<< 0.78-500),
ceph-test (<< 12.2.2-14),
@ -379,8 +381,6 @@ Depends: ceph-base (= ${binary:Version}),
${shlibs:Depends},
Replaces: ceph (<< 10), ceph-test (<< 12.2.2-14)
Breaks: ceph (<< 10), ceph-test (<< 12.2.2-14)
Recommends: nvme-cli,
smartmontools,
Description: monitor server for the ceph storage system
Ceph is a massively scalable, open-source, distributed
storage system that runs on commodity hardware and delivers object,
@ -414,8 +414,6 @@ Depends: ceph-base (= ${binary:Version}),
${shlibs:Depends},
Replaces: ceph (<< 10), ceph-test (<< 12.2.2-14)
Breaks: ceph (<< 10), ceph-test (<< 12.2.2-14)
Recommends: nvme-cli,
smartmontools,
Description: OSD server for the ceph storage system
Ceph is a massively scalable, open-source, distributed
storage system that runs on commodity hardware and delivers object,

2
debian/rules vendored
View File

@ -69,7 +69,7 @@ override_dh_auto_install:
install -D -m 644 udev/50-rbd.rules $(DESTDIR)/lib/udev/rules.d/50-rbd.rules
install -D -m 644 src/etc-rbdmap $(DESTDIR)/etc/ceph/rbdmap
install -D -m 644 etc/sysctl/90-ceph-osd.conf $(DESTDIR)/etc/sysctl.d/30-ceph-osd.conf
install -D -m 440 sudoers.d/ceph-osd-smartctl $(DESTDIR)/etc/sudoers.d/ceph-osd-smartctl
install -D -m 440 sudoers.d/ceph-smartctl $(DESTDIR)/etc/sudoers.d/ceph-smartctl
install -D -m 755 src/tools/rbd_nbd/rbd-nbd_quiesce $(DESTDIR)/usr/libexec/rbd-nbd/rbd-nbd_quiesce
install -m 755 src/cephadm/cephadm $(DESTDIR)/usr/sbin/cephadm

View File

@ -1,4 +1,4 @@
## allow ceph-osd (which runs as user ceph) to collect device health metrics
## allow ceph daemons (which run as user ceph) to collect device health metrics
ceph ALL=NOPASSWD: /usr/sbin/smartctl -x --json=o /dev/*
ceph ALL=NOPASSWD: /usr/sbin/nvme * smart-log-add --json /dev/*