diff --git a/ceph.spec.in b/ceph.spec.in
index 22defe5e216..1b41ec1f964 100644
--- a/ceph.spec.in
+++ b/ceph.spec.in
@@ -448,6 +448,7 @@ exposes all these to the python modules.
 
 %package mgr-dashboard
 Summary:        Ceph Dashboard
+BuildArch:      noarch
 %if 0%{?suse_version}
 Group:          System/Filesystems
 %endif
@@ -474,6 +475,7 @@ detailed feature overview.
 
 %package mgr-diskprediction-local
 Summary:        ceph-mgr diskprediction_local plugin
+BuildArch:      noarch
 %if 0%{?suse_version}
 Group:          System/Filesystems
 %endif
@@ -486,6 +488,7 @@ disk failures using local algorithms and machine-learning databases.
 
 %package mgr-diskprediction-cloud
 Summary:        ceph-mgr diskprediction_cloud plugin
+BuildArch:      noarch
 %if 0%{?suse_version}
 Group:          System/Filesystems
 %endif
@@ -495,6 +498,7 @@ ceph-mgr-diskprediction-cloud is a ceph-mgr plugin that tries to predict
 disk failures using services in the Google cloud.
 
 %package mgr-rook
+BuildArch:      noarch
 Summary:        ceph-mgr rook plugin
 %if 0%{?suse_version}
 Group:          System/Filesystems
@@ -1454,33 +1458,33 @@ fi
 
 %files mgr
 %{_bindir}/ceph-mgr
-%dir %{_libdir}/ceph/mgr
-%{_libdir}/ceph/mgr/ansible
-%{_libdir}/ceph/mgr/balancer
-%{_libdir}/ceph/mgr/crash
-%{_libdir}/ceph/mgr/deepsea
-%{_libdir}/ceph/mgr/devicehealth
-%{_libdir}/ceph/mgr/influx
-%{_libdir}/ceph/mgr/insights
-%{_libdir}/ceph/mgr/iostat
-%{_libdir}/ceph/mgr/localpool
-%{_libdir}/ceph/mgr/mgr_module.*
-%{_libdir}/ceph/mgr/mgr_util.*
-%{_libdir}/ceph/mgr/orchestrator_cli
-%{_libdir}/ceph/mgr/orchestrator.*
-%{_libdir}/ceph/mgr/osd_perf_query
-%{_libdir}/ceph/mgr/pg_autoscaler
-%{_libdir}/ceph/mgr/progress
-%{_libdir}/ceph/mgr/prometheus
-%{_libdir}/ceph/mgr/rbd_support
-%{_libdir}/ceph/mgr/restful
-%{_libdir}/ceph/mgr/selftest
-%{_libdir}/ceph/mgr/status
-%{_libdir}/ceph/mgr/telegraf
-%{_libdir}/ceph/mgr/telemetry
-%{_libdir}/ceph/mgr/test_orchestrator
-%{_libdir}/ceph/mgr/volumes
-%{_libdir}/ceph/mgr/zabbix
+%dir %{_datadir}/ceph/mgr
+%{_datadir}/ceph/mgr/ansible
+%{_datadir}/ceph/mgr/balancer
+%{_datadir}/ceph/mgr/crash
+%{_datadir}/ceph/mgr/deepsea
+%{_datadir}/ceph/mgr/devicehealth
+%{_datadir}/ceph/mgr/influx
+%{_datadir}/ceph/mgr/insights
+%{_datadir}/ceph/mgr/iostat
+%{_datadir}/ceph/mgr/localpool
+%{_datadir}/ceph/mgr/mgr_module.*
+%{_datadir}/ceph/mgr/mgr_util.*
+%{_datadir}/ceph/mgr/orchestrator_cli
+%{_datadir}/ceph/mgr/orchestrator.*
+%{_datadir}/ceph/mgr/osd_perf_query
+%{_datadir}/ceph/mgr/pg_autoscaler
+%{_datadir}/ceph/mgr/progress
+%{_datadir}/ceph/mgr/prometheus
+%{_datadir}/ceph/mgr/rbd_support
+%{_datadir}/ceph/mgr/restful
+%{_datadir}/ceph/mgr/selftest
+%{_datadir}/ceph/mgr/status
+%{_datadir}/ceph/mgr/telegraf
+%{_datadir}/ceph/mgr/telemetry
+%{_datadir}/ceph/mgr/test_orchestrator
+%{_datadir}/ceph/mgr/volumes
+%{_datadir}/ceph/mgr/zabbix
 %{_unitdir}/ceph-mgr@.service
 %{_unitdir}/ceph-mgr.target
 %attr(750,ceph,ceph) %dir %{_localstatedir}/lib/ceph/mgr
@@ -1528,7 +1532,7 @@ if [ $FIRST_ARG -ge 1 ] ; then
 fi
 
 %files mgr-dashboard
-%{_libdir}/ceph/mgr/dashboard
+%{_datadir}/ceph/mgr/dashboard
 
 %post mgr-dashboard
 if [ $1 -eq 1 ] ; then
@@ -1541,7 +1545,7 @@ if [ $1 -eq 1 ] ; then
 fi
 
 %files mgr-diskprediction-local
-%{_libdir}/ceph/mgr/diskprediction_local
+%{_datadir}/ceph/mgr/diskprediction_local
 
 %post mgr-diskprediction-local
 if [ $1 -eq 1 ] ; then
@@ -1554,7 +1558,7 @@ if [ $1 -eq 1 ] ; then
 fi
 
 %files mgr-diskprediction-cloud
-%{_libdir}/ceph/mgr/diskprediction_cloud
+%{_datadir}/ceph/mgr/diskprediction_cloud
 
 %post mgr-diskprediction-cloud
 if [ $1 -eq 1 ] ; then
@@ -1567,7 +1571,7 @@ if [ $1 -eq 1 ] ; then
 fi
 
 %files mgr-rook
-%{_libdir}/ceph/mgr/rook
+%{_datadir}/ceph/mgr/rook
 
 %post mgr-rook
 if [ $1 -eq 1 ] ; then
diff --git a/debian/ceph-mgr-dashboard.install b/debian/ceph-mgr-dashboard.install
index 618dcbddaa8..8d3c8bd17fc 100644
--- a/debian/ceph-mgr-dashboard.install
+++ b/debian/ceph-mgr-dashboard.install
@@ -1 +1 @@
-usr/lib/ceph/mgr/dashboard
+usr/share/ceph/mgr/dashboard
diff --git a/debian/ceph-mgr-diskprediction-cloud.install b/debian/ceph-mgr-diskprediction-cloud.install
index 2d931891280..58481b25374 100644
--- a/debian/ceph-mgr-diskprediction-cloud.install
+++ b/debian/ceph-mgr-diskprediction-cloud.install
@@ -1 +1 @@
-usr/lib/ceph/mgr/diskprediction_cloud
+usr/share/ceph/mgr/diskprediction_cloud
diff --git a/debian/ceph-mgr-diskprediction-local.install b/debian/ceph-mgr-diskprediction-local.install
index b1efa5f7dd2..a381e251a7a 100644
--- a/debian/ceph-mgr-diskprediction-local.install
+++ b/debian/ceph-mgr-diskprediction-local.install
@@ -1 +1 @@
-usr/lib/ceph/mgr/diskprediction_local
+usr/share/ceph/mgr/diskprediction_local
diff --git a/debian/ceph-mgr-rook.install b/debian/ceph-mgr-rook.install
index 36b7d547cb3..50cadb435d3 100644
--- a/debian/ceph-mgr-rook.install
+++ b/debian/ceph-mgr-rook.install
@@ -1 +1 @@
-usr/lib/ceph/mgr/rook
+usr/share/ceph/mgr/rook
diff --git a/debian/ceph-mgr.install b/debian/ceph-mgr.install
index 21891ab25fb..4fe43c41d23 100644
--- a/debian/ceph-mgr.install
+++ b/debian/ceph-mgr.install
@@ -1,28 +1,28 @@
 lib/systemd/system/ceph-mgr*
 usr/bin/ceph-mgr
-usr/lib/ceph/mgr/ansible
-usr/lib/ceph/mgr/balancer
-usr/lib/ceph/mgr/crash
-usr/lib/ceph/mgr/deepsea
-usr/lib/ceph/mgr/devicehealth
-usr/lib/ceph/mgr/influx
-usr/lib/ceph/mgr/insights
-usr/lib/ceph/mgr/iostat
-usr/lib/ceph/mgr/localpool
-usr/lib/ceph/mgr/mgr_module.*
-usr/lib/ceph/mgr/mgr_util.*
-usr/lib/ceph/mgr/orchestrator_cli
-usr/lib/ceph/mgr/orchestrator.*
-usr/lib/ceph/mgr/osd_perf_query
-usr/lib/ceph/mgr/pg_autoscaler
-usr/lib/ceph/mgr/progress
-usr/lib/ceph/mgr/prometheus
-usr/lib/ceph/mgr/rbd_support
-usr/lib/ceph/mgr/restful
-usr/lib/ceph/mgr/selftest
-usr/lib/ceph/mgr/status
-usr/lib/ceph/mgr/test_orchestrator
-usr/lib/ceph/mgr/telegraf
-usr/lib/ceph/mgr/telemetry
-usr/lib/ceph/mgr/volumes
-usr/lib/ceph/mgr/zabbix
+usr/share/ceph/mgr/ansible
+usr/share/ceph/mgr/balancer
+usr/share/ceph/mgr/crash
+usr/share/ceph/mgr/deepsea
+usr/share/ceph/mgr/devicehealth
+usr/share/ceph/mgr/influx
+usr/share/ceph/mgr/insights
+usr/share/ceph/mgr/iostat
+usr/share/ceph/mgr/localpool
+usr/share/ceph/mgr/mgr_module.*
+usr/share/ceph/mgr/mgr_util.*
+usr/share/ceph/mgr/orchestrator_cli
+usr/share/ceph/mgr/orchestrator.*
+usr/share/ceph/mgr/osd_perf_query
+usr/share/ceph/mgr/pg_autoscaler
+usr/share/ceph/mgr/progress
+usr/share/ceph/mgr/prometheus
+usr/share/ceph/mgr/rbd_support
+usr/share/ceph/mgr/restful
+usr/share/ceph/mgr/selftest
+usr/share/ceph/mgr/status
+usr/share/ceph/mgr/test_orchestrator
+usr/share/ceph/mgr/telegraf
+usr/share/ceph/mgr/telemetry
+usr/share/ceph/mgr/volumes
+usr/share/ceph/mgr/zabbix
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3f7123f5451..25df4fe882f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -2,12 +2,14 @@ include(GetGitRevisionDescription)
 
 include(GNUInstallDirs)
 # for erasure and compressor plugins
-set(CMAKE_INSTALL_PKGLIBDIR ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME})
-set(CMAKE_INSTALL_FULL_PKGLIBDIR ${CMAKE_INSTALL_FULL_LIBDIR}/${PROJECT_NAME})
+set(CEPH_INSTALL_PKGLIBDIR ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME})
+set(CEPH_INSTALL_FULL_PKGLIBDIR ${CMAKE_INSTALL_FULL_LIBDIR}/${PROJECT_NAME})
+# for mgr plugins
+set(CEPH_INSTALL_DATADIR ${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME})
 # so libceph-common can be found
 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
 if(NOT CMAKE_INSTALL_RPATH)
-  set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_PKGLIBDIR}")
+  set(CMAKE_INSTALL_RPATH "${CEPH_INSTALL_FULL_PKGLIBDIR}")
 endif()
 
 # to be compatible with configure_files shared with autoconfig
@@ -17,7 +19,7 @@ set(libdir ${CMAKE_INSTALL_FULL_LIBDIR})
 set(sysconfdir ${CMAKE_INSTALL_FULL_SYSCONFDIR})
 set(libexecdir ${CMAKE_INSTALL_FULL_LIBEXECDIR})
 set(pkgdatadir ${CMAKE_INSTALL_FULL_DATADIR})
-set(datadir ${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME})
+set(datadir ${CEPH_INSTALL_DATADIR})
 set(prefix ${CMAKE_INSTALL_PREFIX})
 
 add_definitions("-DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS")
@@ -414,7 +416,7 @@ endif()
 install(
   TARGETS ceph-common
   LIBRARY
-  DESTINATION ${CMAKE_INSTALL_PKGLIBDIR}
+  DESTINATION ${CEPH_INSTALL_PKGLIBDIR}
   NAMELINK_SKIP)
 
 if(${WITH_LTTNG})
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 1aa742d5ae5..65ba10b0f14 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -127,7 +127,8 @@ add_library(common-common-objs OBJECT
 # for options.cc
 target_compile_definitions(common-common-objs PRIVATE
   "CEPH_LIBDIR=\"${CMAKE_INSTALL_FULL_LIBDIR}\""
-  "CEPH_PKGLIBDIR=\"${CMAKE_INSTALL_FULL_PKGLIBDIR}\"")
+  "CEPH_PKGLIBDIR=\"${CEPH_INSTALL_FULL_PKGLIBDIR}\""
+  "CEPH_DATADIR=\"${CEPH_INSTALL_DATADIR}\"")
 
 set(common_mountcephfs_srcs
   armor.c
diff --git a/src/common/options.cc b/src/common/options.cc
index a9f2c6e25ef..27198996392 100644
--- a/src/common/options.cc
+++ b/src/common/options.cc
@@ -5148,7 +5148,7 @@ std::vector<Option> get_global_options() {
     .set_description(""),
 
     Option("mgr_module_path", Option::TYPE_STR, Option::LEVEL_ADVANCED)
-    .set_default(CEPH_PKGLIBDIR "/mgr")
+    .set_default(CEPH_DATADIR "/mgr")
     .add_service("mgr")
     .set_description("Filesystem path to manager modules."),
 
diff --git a/src/compressor/CMakeLists.txt b/src/compressor/CMakeLists.txt
index 5182784288e..494bcc44749 100644
--- a/src/compressor/CMakeLists.txt
+++ b/src/compressor/CMakeLists.txt
@@ -8,7 +8,7 @@ add_library(compressor_objs OBJECT ${compressor_srcs})
 
 ## compressor plugins
 
-set(compressor_plugin_dir ${CMAKE_INSTALL_PKGLIBDIR}/compressor)
+set(compressor_plugin_dir ${CEPH_INSTALL_PKGLIBDIR}/compressor)
 
 add_subdirectory(snappy)
 add_subdirectory(zlib)
diff --git a/src/crimson/CMakeLists.txt b/src/crimson/CMakeLists.txt
index 5d42f60f24b..d656f59451a 100644
--- a/src/crimson/CMakeLists.txt
+++ b/src/crimson/CMakeLists.txt
@@ -96,7 +96,8 @@ add_library(crimson-common STATIC
 
 target_compile_definitions(crimson-common PRIVATE
   "CEPH_LIBDIR=\"${CMAKE_INSTALL_FULL_LIBDIR}\""
-  "CEPH_PKGLIBDIR=\"${CMAKE_INSTALL_FULL_PKGLIBDIR}\"")
+  "CEPH_PKGLIBDIR=\"${CEPH_INSTALL_FULL_PKGLIBDIR}\""
+  "CEPH_DATADIR=\"${CEPH_INSTALL_DATADIR}\"")
 
 target_link_libraries(crimson-common
   PUBLIC
diff --git a/src/crypto/CMakeLists.txt b/src/crypto/CMakeLists.txt
index dba1e033eb8..eee534435d6 100644
--- a/src/crypto/CMakeLists.txt
+++ b/src/crypto/CMakeLists.txt
@@ -1,5 +1,5 @@
 add_custom_target(crypto_plugins)
-set(crypto_plugin_dir ${CMAKE_INSTALL_PKGLIBDIR}/crypto)
+set(crypto_plugin_dir ${CEPH_INSTALL_PKGLIBDIR}/crypto)
 
 add_subdirectory(openssl)
 
diff --git a/src/erasure-code/CMakeLists.txt b/src/erasure-code/CMakeLists.txt
index 0c9832ebf2e..bd9b00460b4 100644
--- a/src/erasure-code/CMakeLists.txt
+++ b/src/erasure-code/CMakeLists.txt
@@ -1,6 +1,6 @@
 ## erasure code plugins
 
-set(erasure_plugin_dir ${CMAKE_INSTALL_PKGLIBDIR}/erasure-code)
+set(erasure_plugin_dir ${CEPH_INSTALL_PKGLIBDIR}/erasure-code)
 
 #jerasure subdir must be before shec so jerasure & neon obj libs are declared
 include_directories(SYSTEM jerasure/jerasure/include)
diff --git a/src/pybind/CMakeLists.txt b/src/pybind/CMakeLists.txt
index 1538b6fec99..664543172a1 100644
--- a/src/pybind/CMakeLists.txt
+++ b/src/pybind/CMakeLists.txt
@@ -96,15 +96,5 @@ if(WITH_MGR)
       message(WARNING "could not determine ssl version of python crypto lib")
     endif()
   endif(USE_OPENSSL)
-
-  # Location needs to match default setting for mgr_module_path, currently:
-  # OPTION(mgr_module_path, OPT_STR, CEPH_PKGLIBDIR "/mgr")
-  install(DIRECTORY
-    ${CMAKE_CURRENT_SOURCE_DIR}/mgr
-    DESTINATION ${CMAKE_INSTALL_PKGLIBDIR}
-    REGEX ".*/CMakeLists.txt" EXCLUDE
-    REGEX ".*/\\.gitignore" EXCLUDE
-    REGEX ".*/hello/.*" EXCLUDE
-    REGEX ".*/osd_perf_query/.*" EXCLUDE)
   add_subdirectory(mgr)
 endif(WITH_MGR)
diff --git a/src/pybind/mgr/CMakeLists.txt b/src/pybind/mgr/CMakeLists.txt
index 8f48689fe40..2b5f4a7d4ad 100644
--- a/src/pybind/mgr/CMakeLists.txt
+++ b/src/pybind/mgr/CMakeLists.txt
@@ -2,3 +2,13 @@ add_subdirectory(dashboard)
 add_subdirectory(insights)
 add_subdirectory(ansible)
 add_subdirectory(orchestrator_cli)
+
+# Location needs to match default setting for mgr_module_path, currently:
+# OPTION(mgr_module_path, OPT_STR, CEPH_PKGLIBDIR "/mgr")
+install(DIRECTORY
+  ${CMAKE_CURRENT_SOURCE_DIR}
+  DESTINATION ${CEPH_INSTALL_DATADIR}
+  REGEX "CMakeLists.txt" EXCLUDE
+  REGEX "\\.gitignore" EXCLUDE
+  REGEX "hello/.*" EXCLUDE
+  REGEX "osd_perf_query/.*" EXCLUDE)