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>
(cherry picked from commit
7ca39fa92b47427af2f1c6000c653bb4dffc47fe)
Conflicts:
ceph.spec.in
debian/rules
Cherry-pick notes:
- conflict due to octopus not having jaeger dep
- conflict due to octopus not installing rbd-nbd_quiesce on debian
%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
%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
+
%description mon
ceph-mon is the cluster monitor daemon for the Ceph distributed file
system. One or more instances of ceph-mon form a Paxos part-time
Requires: sudo
Requires: libstoragemgmt
Requires: python%{python3_pkgversion}-ceph-common = %{_epoch_prefix}%{version}-%{release}
-%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
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}/*
%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
%{_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}
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
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
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),
${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,
${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,
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 -m 755 src/cephadm/cephadm $(DESTDIR)/usr/sbin/cephadm
+++ /dev/null
-## allow ceph-osd (which runs as user ceph) to collect device health metrics
-
-ceph ALL=NOPASSWD: /usr/sbin/smartctl -a --json=o /dev/*
-ceph ALL=NOPASSWD: /usr/sbin/nvme * smart-log-add --json /dev/*
--- /dev/null
+## allow ceph daemons (which run as user ceph) to collect device health metrics
+
+ceph ALL=NOPASSWD: /usr/sbin/smartctl -a --json=o /dev/*
+ceph ALL=NOPASSWD: /usr/sbin/nvme * smart-log-add --json /dev/*