dist/common/systemd: untemplataize *.service, use drop-in units instead
Since systemd unit can override parameters using drop-in unit, we don't need mustache template for them. Also, drop --disttype and --target options on install.sh since it does not required anymore, introduce --sysconfdir instead for non-redhat distributions.
This commit is contained in:
3
dist/common/sysconfig/scylla-housekeeping
vendored
Normal file
3
dist/common/sysconfig/scylla-housekeeping
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
UUID_FILE=/var/lib/scylla-housekeeping/housekeeping.uuid
|
||||
CONFIG_FILE=/etc/scylla.d/housekeeping.cfg
|
||||
REPO_FILES=/etc/yum.repos.d/scylla*.repo
|
||||
14
dist/common/systemd/scylla-housekeeping-daily.service
vendored
Normal file
14
dist/common/systemd/scylla-housekeeping-daily.service
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=Scylla Housekeeping daily mode
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=scylla
|
||||
Group=scylla
|
||||
EnvironmentFile=/etc/sysconfig/scylla-housekeeping
|
||||
ExecStart=/opt/scylladb/scripts/scylla-housekeeping --uuid-file $UUID_FILE -q -c $CONFIG_FILE --repo-files $REPO_FILES version --mode d
|
||||
Slice=scylla-helper.slice
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -1,18 +0,0 @@
|
||||
[Unit]
|
||||
Description=Scylla Housekeeping daily mode
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=scylla
|
||||
Group=scylla
|
||||
{{#debian}}
|
||||
ExecStart=/opt/scylladb/scripts/scylla-housekeeping --uuid-file /var/lib/scylla-housekeeping/housekeeping.uuid -q -c /etc/scylla.d/housekeeping.cfg --repo-files '/etc/apt/sources.list.d/scylla*.list' version --mode d
|
||||
{{/debian}}
|
||||
{{#redhat}}
|
||||
ExecStart=/opt/scylladb/scripts/scylla-housekeeping --uuid-file /var/lib/scylla-housekeeping/housekeeping.uuid -q -c /etc/scylla.d/housekeeping.cfg --repo-files '/etc/yum.repos.d/scylla*.repo' version --mode d
|
||||
{{/redhat}}
|
||||
Slice=scylla-helper.slice
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
13
dist/common/systemd/scylla-housekeeping-restart.service
vendored
Normal file
13
dist/common/systemd/scylla-housekeeping-restart.service
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Scylla Housekeeping restart mode
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=scylla
|
||||
Group=scylla
|
||||
EnvironmentFile=/etc/sysconfig/scylla-housekeeping
|
||||
ExecStart=/opt/scylladb/scripts/scylla-housekeeping --uuid-file $UUID_FILE -q -c $CONFIG_FILE --repo-files $REPO_FILES version --mode r
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -1,17 +0,0 @@
|
||||
[Unit]
|
||||
Description=Scylla Housekeeping restart mode
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=scylla
|
||||
Group=scylla
|
||||
{{#debian}}
|
||||
ExecStart=/opt/scylladb/scripts/scylla-housekeeping --uuid-file /var/lib/scylla-housekeeping/housekeeping.uuid -q -c /etc/scylla.d/housekeeping.cfg --repo-files '/etc/apt/sources.list.d/scylla*.list' version --mode r
|
||||
{{/debian}}
|
||||
{{#redhat}}
|
||||
ExecStart=/opt/scylladb/scripts/scylla-housekeeping --uuid-file /var/lib/scylla-housekeeping/housekeeping.uuid -q -c /etc/scylla.d/housekeeping.cfg --repo-files '/etc/yum.repos.d/scylla*.repo' version --mode r
|
||||
{{/redhat}}
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -13,12 +13,7 @@ LimitMEMLOCK=infinity
|
||||
LimitNOFILE=800000
|
||||
LimitAS=infinity
|
||||
LimitNPROC=8096
|
||||
{{#debian}}
|
||||
EnvironmentFile=/etc/default/scylla-server
|
||||
{{/debian}}
|
||||
{{#redhat}}
|
||||
EnvironmentFile=/etc/sysconfig/scylla-server
|
||||
{{/redhat}}
|
||||
EnvironmentFile=/etc/scylla.d/*.conf
|
||||
ExecStartPre=/opt/scylladb/scripts/scylla_prepare
|
||||
ExecStart=/usr/bin/scylla $SCYLLA_ARGS $SEASTAR_IO $DEV_MODE $CPUSET
|
||||
6
dist/debian/build_deb.sh
vendored
6
dist/debian/build_deb.sh
vendored
@@ -148,9 +148,9 @@ chmod a+rx debian/rules
|
||||
if [ "$PRODUCT" != "scylla" ]; then
|
||||
SERVER_SERVICE_PREFIX="$PRODUCT-server."
|
||||
fi
|
||||
pystache dist/common/systemd/scylla-server.service.mustache "{ $MUSTACHE_DIST }" > debian/${SERVER_SERVICE_PREFIX}scylla-server.service
|
||||
pystache dist/common/systemd/scylla-housekeeping-daily.service.mustache "{ $MUSTACHE_DIST }" > debian/$PRODUCT-server.scylla-housekeeping-daily.service
|
||||
pystache dist/common/systemd/scylla-housekeeping-restart.service.mustache "{ $MUSTACHE_DIST }" > debian/$PRODUCT-server.scylla-housekeeping-restart.service
|
||||
ln -fv dist/common/systemd/scylla-server.service debian/${SERVER_SERVICE_PREFIX}scylla-server.service
|
||||
ln -fv dist/common/systemd/scylla-housekeeping-daily.service debian/$PRODUCT-server.scylla-housekeeping-daily.service
|
||||
ln -fv dist/common/systemd/scylla-housekeeping-restart.service debian/$PRODUCT-server.scylla-housekeeping-restart.service
|
||||
ln -fv dist/common/systemd/scylla-fstrim.service debian/$PRODUCT-server.scylla-fstrim.service
|
||||
ln -fv dist/common/systemd/node-exporter.service debian/$PRODUCT-server.node-exporter.service
|
||||
|
||||
|
||||
14
dist/debian/rules.mustache
vendored
14
dist/debian/rules.mustache
vendored
@@ -17,9 +17,17 @@ override_dh_auto_clean:
|
||||
|
||||
override_dh_auto_install:
|
||||
dh_auto_install
|
||||
./install.sh --root "$(CURDIR)/debian/{{product}}-conf" $(install_arg) --target "stable" --pkg "conf" --disttype "debian"
|
||||
./install.sh --root "$(CURDIR)/debian/{{product}}-kernel-conf" $(install_arg) --target "stable" --pkg "kernel-conf" --disttype "debian"
|
||||
./install.sh --root "$(CURDIR)/debian/{{product}}-server" $(install_arg) --target "stable" --pkg "server" --disttype "debian"
|
||||
./install.sh --root "$(CURDIR)/debian/{{product}}-conf" $(install_arg) --sysconfdir "/etc/default" --pkg "conf"
|
||||
./install.sh --root "$(CURDIR)/debian/{{product}}-kernel-conf" $(install_arg) --sysconfdir "/etc/default" --pkg "kernel-conf"
|
||||
./install.sh --root "$(CURDIR)/debian/{{product}}-server" $(install_arg) --sysconfdir "/etc/default" --pkg "server"
|
||||
{{#housekeeping}}
|
||||
# XXX: since housekeeping.cfg is mistakenly belongs to different package
|
||||
# in .rpm/.deb, we need this workaround to make package upgradable
|
||||
mv $(CURDIR)/debian/{{product}}-conf/etc/scylla.d/housekeeping.cfg $(CURDIR)/debian/{{product}}-server/etc/scylla.d/housekeeping.cfg
|
||||
rm -rf $(CURDIR)/debian/{{product}}-conf/etc/scylla.d
|
||||
{{/housekeeping}}
|
||||
# don't use default sysconfig file, use Debian version
|
||||
cp dist/debian/sysconfig/scylla-housekeeping $(CURDIR)/debian/{{product}}-server/etc/default/
|
||||
|
||||
override_dh_installinit:
|
||||
{{#scylla}}
|
||||
|
||||
3
dist/debian/sysconfig/scylla-housekeeping
vendored
Normal file
3
dist/debian/sysconfig/scylla-housekeeping
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
UUID_FILE=/var/lib/scylla-housekeeping/housekeeping.uuid
|
||||
CONFIG_FILE=/etc/scylla.d/housekeeping.cfg
|
||||
REPO_FILES=/etc/apt/sources.list.d/scylla*.list
|
||||
3
dist/redhat/scylla.spec.mustache
vendored
3
dist/redhat/scylla.spec.mustache
vendored
@@ -64,7 +64,7 @@ defines=()
|
||||
{{#housekeeping}}
|
||||
install_arg="--housekeeping"
|
||||
{{/housekeeping}}
|
||||
./install.sh --root "$RPM_BUILD_ROOT" $install_arg --target {{target}} --disttype "redhat"
|
||||
./install.sh --root "$RPM_BUILD_ROOT" $install_arg
|
||||
|
||||
%pre server
|
||||
getent group scylla || /usr/sbin/groupadd scylla 2> /dev/null || :
|
||||
@@ -107,6 +107,7 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%defattr(-,root,root)
|
||||
|
||||
%config(noreplace) %{_sysconfdir}/sysconfig/scylla-server
|
||||
%config(noreplace) %{_sysconfdir}/sysconfig/scylla-housekeeping
|
||||
%{_sysconfdir}/security/limits.d/scylla.conf
|
||||
%attr(0755,root,root) %dir %{_sysconfdir}/scylla.d
|
||||
%config(noreplace) %{_sysconfdir}/scylla.d/*.conf
|
||||
|
||||
71
install.sh
71
install.sh
@@ -31,9 +31,8 @@ Options:
|
||||
--prefix /prefix directory prefix (default /usr)
|
||||
--python3 /opt/python3 path of the python3 interpreter relative to install root (default /opt/scylladb/python3/bin/python3)
|
||||
--housekeeping enable housekeeping service
|
||||
--target centos specify target distribution
|
||||
--disttype [redhat|debian] specify type of distribution (redhat or debian)
|
||||
--pkg package specify build package (server/conf/kernel-conf)
|
||||
--sysconfdir /etc/sysconfig specify sysconfig directory name
|
||||
--help this helpful message
|
||||
EOF
|
||||
exit 1
|
||||
@@ -42,8 +41,8 @@ EOF
|
||||
root=/
|
||||
prefix=/opt/scylladb
|
||||
housekeeping=false
|
||||
target=centos
|
||||
python3=/opt/scylladb/python3/bin/python3
|
||||
sysconfdir=/etc/sysconfig
|
||||
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
@@ -59,22 +58,18 @@ while [ $# -gt 0 ]; do
|
||||
housekeeping=true
|
||||
shift 1
|
||||
;;
|
||||
"--target")
|
||||
target="$2"
|
||||
shift 2
|
||||
;;
|
||||
"--python3")
|
||||
python3="$2"
|
||||
shift 2
|
||||
;;
|
||||
"--disttype")
|
||||
disttype="$2"
|
||||
shift 2
|
||||
;;
|
||||
"--pkg")
|
||||
pkg="$2"
|
||||
shift 2
|
||||
;;
|
||||
"--sysconfdir")
|
||||
sysconfdir="$2"
|
||||
shift 2
|
||||
;;
|
||||
"--help")
|
||||
shift 1
|
||||
print_usage
|
||||
@@ -116,37 +111,14 @@ rprefix="$root/$prefix"
|
||||
retc="$root/etc"
|
||||
rusr="$root/usr"
|
||||
rdoc="$rprefix/share/doc"
|
||||
|
||||
is_redhat=false
|
||||
is_debian=false
|
||||
MUSTACHE_DIST="\"$target\": true, \"target\": \"$target\""
|
||||
if [ "$disttype" = "redhat" ]; then
|
||||
MUSTACHE_DIST="\"redhat\": true, $MUSTACHE_DIST"
|
||||
is_redhat=true
|
||||
sysconfdir=sysconfig
|
||||
elif [ "$disttype" = "debian" ]; then
|
||||
MUSTACHE_DIST="\"debian\": true, $MUSTACHE_DIST"
|
||||
is_debian=true
|
||||
sysconfdir=default
|
||||
else
|
||||
print_usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p build
|
||||
pystache dist/common/systemd/scylla-server.service.mustache "{ $MUSTACHE_DIST }" > build/scylla-server.service
|
||||
pystache dist/common/systemd/scylla-housekeeping-daily.service.mustache "{ $MUSTACHE_DIST }" > build/scylla-housekeeping-daily.service
|
||||
pystache dist/common/systemd/scylla-housekeeping-restart.service.mustache "{ $MUSTACHE_DIST }" > build/scylla-housekeeping-restart.service
|
||||
|
||||
rsysconfdir="$root/$sysconfdir"
|
||||
|
||||
if [ -z "$pkg" ] || [ "$pkg" = "conf" ]; then
|
||||
install -d -m755 "$retc"/scylla
|
||||
install -d -m755 "$retc"/scylla.d
|
||||
install -m644 conf/scylla.yaml -Dt "$retc"/scylla
|
||||
install -m644 conf/cassandra-rackdc.properties -Dt "$retc"/scylla
|
||||
# XXX: since housekeeping.cfg is mistakenly belongs to different package
|
||||
# in .rpm/.deb, we need this workaround to make package upgradable
|
||||
if $is_redhat && $housekeeping; then
|
||||
if $housekeeping; then
|
||||
install -m644 conf/housekeeping.cfg -Dt "$retc"/scylla.d
|
||||
fi
|
||||
fi
|
||||
@@ -155,15 +127,14 @@ if [ -z "$pkg" ] || [ "$pkg" = "kernel-conf" ]; then
|
||||
install -m644 dist/common/sysctl.d/*.conf -Dt "$rusr"/lib/sysctl.d
|
||||
fi
|
||||
if [ -z "$pkg" ] || [ "$pkg" = "server" ]; then
|
||||
install -m755 -d "$retc/$sysconfdir"
|
||||
install -m755 -d "$rsysconfdir"
|
||||
install -m755 -d "$retc/security/limits.d"
|
||||
install -m755 -d "$retc/scylla.d"
|
||||
install -m644 dist/common/sysconfig/scylla-server -Dt "$retc"/$sysconfdir
|
||||
install -m644 dist/common/sysconfig/* -Dt "$rsysconfdir"
|
||||
install -m644 dist/common/limits.d/scylla.conf -Dt "$retc"/security/limits.d
|
||||
install -m644 dist/common/scylla.d/*.conf -Dt "$retc"/scylla.d
|
||||
|
||||
install -d -m755 "$retc"/scylla "$rusr/lib/systemd/system" "$rusr/bin" "$rprefix/bin" "$rprefix/libexec" "$rprefix/libreloc" "$rprefix/scripts"
|
||||
install -m644 build/*.service -Dt "$rusr"/lib/systemd/system
|
||||
install -m644 dist/common/systemd/*.service -Dt "$rusr"/lib/systemd/system
|
||||
install -m644 dist/common/systemd/*.slice -Dt "$rusr"/lib/systemd/system
|
||||
install -m644 dist/common/systemd/*.timer -Dt "$rusr"/lib/systemd/system
|
||||
@@ -179,11 +150,6 @@ if [ -z "$pkg" ] || [ "$pkg" = "server" ]; then
|
||||
ln -srf "$rprefix/bin/scylla" "$rusr/bin/scylla"
|
||||
ln -srf "$rprefix/bin/iotune" "$rusr/bin/iotune"
|
||||
|
||||
# XXX: since housekeeping.cfg is mistakenly belongs to different package
|
||||
# in .rpm/.deb, we need this workaround to make package upgradable
|
||||
if $is_debian && $housekeeping; then
|
||||
install -m644 conf/housekeeping.cfg -Dt "$retc"/scylla.d
|
||||
fi
|
||||
install -d -m755 "$rdoc"/scylla
|
||||
install -m644 README.md -Dt "$rdoc"/scylla/
|
||||
install -m644 README-DPDK.md -Dt "$rdoc"/scylla
|
||||
@@ -213,6 +179,23 @@ if [ -z "$pkg" ] || [ "$pkg" = "server" ]; then
|
||||
for i in $SBINFILES; do
|
||||
ln -srf "$rprefix/scripts/$i" "$rusr/sbin/$i"
|
||||
done
|
||||
if [ "$sysconfdir" != "/etc/sysconfig" ]; then
|
||||
install -d -m755 "$retc"/systemd/system/scylla-server.service.d
|
||||
cat << EOS > "$retc"/systemd/system/scylla-server.service.d/sysconfdir.conf
|
||||
[Service]
|
||||
EnvironmentFile=
|
||||
EnvironmentFile=$sysconfdir/scylla-server
|
||||
EnvironmentFile=/etc/scylla.d/*.conf
|
||||
EOS
|
||||
for i in daily restart; do
|
||||
install -d -m755 "$retc"/systemd/system/scylla-housekeeping-$i.service.d
|
||||
cat << EOS > "$retc"/systemd/system/scylla-housekeeping-$i.service.d/sysconfdir.conf
|
||||
[Service]
|
||||
EnvironmentFile=
|
||||
EnvironmentFile=$sysconfdir/scylla-housekeeping
|
||||
EOS
|
||||
done
|
||||
fi
|
||||
|
||||
install -m755 scylla-gdb.py -Dt "$rprefix"/scripts/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user