Skip to content

Commit

Permalink
rpm, debian: move smartmontools and nvme-cli to ceph-base
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
yaarith committed Aug 25, 2021
1 parent 8a3448f commit 7ca39fa
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 26 deletions.
27 changes: 8 additions & 19 deletions ceph.spec.in
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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}/*
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -2104,7 +2094,6 @@ fi
%{_unitdir}/[email protected]
%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}
Expand Down
1 change: 1 addition & 0 deletions debian/ceph-base.install
Original file line number Diff line number Diff line change
Expand Up @@ -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
1 change: 0 additions & 1 deletion debian/ceph-osd.install
Original file line number Diff line number Diff line change
Expand Up @@ -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 changes: 2 additions & 4 deletions debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion debian/rules
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion sudoers.d/ceph-osd-smartctl → sudoers.d/ceph-smartctl
Original file line number Diff line number Diff line change
@@ -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/*

0 comments on commit 7ca39fa

Please sign in to comment.