Skip to content

Commit 8f826bc

Browse files
authored
Packaging: Cherry-pick rpm/deb scriptlets from st2-packages (#6313)
2 parents c57f59d + 83394be commit 8f826bc

File tree

8 files changed

+308
-1
lines changed

8 files changed

+308
-1
lines changed

CHANGELOG.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ Added
111111
* Add python 3.10 and 3.11 to the GitHub Actions test matrix.
112112
Contributed by @nzlosh, @guzzijones12, and @cognifloyd
113113

114-
* Copy systemd files from st2-packages.git for future packaging via pants. #6303
114+
* Copy systemd files and rpm/deb scriptlets from st2-packages.git for future packaging via pants. #6303 #6313
115115
Cherry-picked by @cognifloyd
116116

117117
* Cherry-pick changes to runners.sh from st2-packages git repo. #6302

packaging/deb/scripts/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
shell_sources(skip_shellcheck=True)
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#!/bin/sh
2+
# postinst script for st2
3+
#
4+
# see: dh_installdeb(1)
5+
6+
set -e
7+
8+
# summary of how this script can be called:
9+
# * <postinst> `configure' <most-recently-configured-version>
10+
# * <old-postinst> `abort-upgrade' <new version>
11+
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
12+
# <new-version>
13+
# * <postinst> `abort-remove'
14+
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
15+
# <failed-install-package> <version> `removing'
16+
# <conflicting-package> <version>
17+
# for details, see http://www.debian.org/doc/debian-policy/ or
18+
# the debian-policy package
19+
20+
ST2_USER=st2
21+
PACKS_GROUP=st2packs
22+
ST2_UPGRADESTAMP="/tmp/.stamp-stackstorm-st2-deb-package"
23+
upgrading=0
24+
25+
## Permissions of files which should be set on install
26+
SET_PERMS=$(cat <<EHD | sed 's/\s\+/ /g'
27+
-R ug+rw root:_packsgroup /opt/stackstorm/packs
28+
-R ug+rw root:_packsgroup /usr/share/doc/st2/examples
29+
ug+rw root:_packsgroup /opt/stackstorm/virtualenvs
30+
755 _st2user:root /opt/stackstorm/configs
31+
755 _st2user:root /opt/stackstorm/exports
32+
755 _st2user:root /var/log/st2
33+
755 _st2user:root /var/run/st2
34+
600 _st2user:_st2user /etc/st2/htpasswd
35+
EHD
36+
)
37+
38+
## Fix directories permissions on install (different across maint scripts!)
39+
set_permissions() {
40+
local fileperms="$1"
41+
fileperms=$(echo "$fileperms" | sed -e "s/_st2user/$ST2_USER/g" -e "s/_packsgroup/$PACKS_GROUP/g")
42+
# Reqursively chown given destinations!
43+
echo "$fileperms" | cut -f1,3,4 -d' ' | xargs -L1 chown
44+
# Set directories mode
45+
echo "$fileperms" | cut -f1,2,4 -d' ' | xargs -L1 chmod
46+
}
47+
48+
# Choose first install or upgrade
49+
[ -f $ST2_UPGRADESTAMP ] && upgrading=1 || :
50+
51+
case "$1" in
52+
configure)
53+
# Initially set destination files owenership (only on the first install)
54+
[ "$upgrading" = 1 ] || set_permissions "$SET_PERMS"
55+
rm -f $ST2_UPGRADESTAMP
56+
57+
# make sure that our socket generators run
58+
systemctl daemon-reload >/dev/null 2>&1 || true
59+
;;
60+
abort-upgrade|abort-remove|abort-deconfigure)
61+
;;
62+
63+
*)
64+
echo "postinst called with unknown argument \`$1'" >&2
65+
exit 1
66+
;;
67+
esac
68+
69+
# dh_installdeb will replace this with shell code automatically
70+
# generated by other debhelper scripts.
71+
72+
#DEBHELPER#
73+
74+
exit 0
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#!/bin/sh
2+
# postrm script for st2
3+
#
4+
# see: dh_installdeb(1)
5+
6+
set -e
7+
8+
# summary of how this script can be called:
9+
# * <postrm> `remove'
10+
# * <postrm> `purge'
11+
# * <old-postrm> `upgrade' <new-version>
12+
# * <new-postrm> `failed-upgrade' <old-version>
13+
# * <new-postrm> `abort-install'
14+
# * <new-postrm> `abort-install' <old-version>
15+
# * <new-postrm> `abort-upgrade' <old-version>
16+
# * <disappearer's-postrm> `disappear' <overwriter>
17+
# <overwriter-version>
18+
# for details, see http://www.debian.org/doc/debian-policy/ or
19+
# the debian-policy package
20+
21+
## Save st2 logrotate config on remove, but wipe it out on purge.
22+
preserve_logrotate() {
23+
if [ "$1" = remove ]; then
24+
[ -f /etc/logrotate.d/st2 ] && mv /etc/logrotate.d/st2-pkgsaved.disabled 1>/dev/null 2>&1 || :
25+
elif [ "$1" = purge ]; then
26+
rm -f /etc/logrotate.d/st2-pkgsaved.disabled 1>/dev/null 2>&1 || :
27+
# Clean up other StackStorm related configs and directories
28+
rm -rf /etc/st2 1>/dev/null 2>&1 || :
29+
rm -rf /opt/stackstorm 1>/dev/null 2>&1 || :
30+
rm -rf /root/.st2 1>/dev/null 2>&1 || :
31+
rm -rf /var/log/st2 1>/dev/null 2>&1 || :
32+
rm -f /etc/sudoers.d/st2 1>/dev/null 2>&1 || :
33+
fi
34+
}
35+
36+
case "$1" in
37+
remove|purge)
38+
preserve_logrotate "$1"
39+
;;
40+
upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
41+
;;
42+
*)
43+
echo "postrm called with unknown argument \`$1'" >&2
44+
exit 1
45+
;;
46+
esac
47+
48+
# dh_installdeb will replace this with shell code automatically
49+
# generated by other debhelper scripts.
50+
51+
#DEBHELPER#
52+
53+
exit 0
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
#!/bin/sh
2+
# preinst script for st2
3+
#
4+
# see: dh_installdeb(1)
5+
6+
set -e
7+
8+
# summary of how this script can be called:
9+
# * <new-preinst> `install'
10+
# * <new-preinst> `install' <old-version>
11+
# * <new-preinst> `upgrade' <old-version>
12+
# * <old-preinst> `abort-upgrade' <new-version>
13+
# for details, see http://www.debian.org/doc/debian-policy/ or
14+
# the debian-policy package
15+
16+
PACKS_GROUP=st2packs
17+
SYS_USER=stanley
18+
ST2_USER=st2
19+
ST2_CONFPATH="/etc/st2/st2.conf"
20+
ST2_UPGRADESTAMP="/tmp/.stamp-stackstorm-st2-deb-package"
21+
22+
## Permissions of directories which has to be reset on upgrade
23+
RESET_PERMS=$(cat <<EHD | sed 's/\s\+/ /g'
24+
ug+rw root:_packsgroup /opt/stackstorm/packs
25+
ug+rw root:_packsgroup /usr/share/doc/st2/examples
26+
ug+rw root:_packsgroup /opt/stackstorm/virtualenvs
27+
755 _st2user:root /opt/stackstorm/configs
28+
755 _st2user:root /opt/stackstorm/overrides
29+
755 _st2user:root /opt/stackstorm/exports
30+
EHD
31+
)
32+
33+
## Create stackstorm users and groups
34+
create_users() {
35+
# create st2 user (services user)
36+
(id $ST2_USER 1>/dev/null 2>&1) ||
37+
adduser --group --disabled-password --no-create-home --system $ST2_USER
38+
39+
# make st2 member of st2packs group
40+
(getent group $PACKS_GROUP 1>/dev/null 2>&1) || groupadd -r $PACKS_GROUP
41+
(groups $ST2_USER 2>/dev/null | grep -q "\b${PACKS_GROUP}\b") ||
42+
usermod -a -G $PACKS_GROUP $ST2_USER
43+
44+
# create stanley user (for actionrunner service)
45+
if (! id $SYS_USER 1>/dev/null 2>&1); then
46+
adduser --group $SYS_USER
47+
adduser --disabled-password --gecos "" --ingroup $SYS_USER $SYS_USER
48+
fi
49+
}
50+
51+
## [NOT USED!] Get current system user from the st2.conf
52+
config_sysuser() {
53+
# exit hooked
54+
return 0
55+
local sysuser=
56+
if [ -f $ST2_CONFPATH ]; then
57+
sysuser=$(cat $ST2_CONFPATH |
58+
sed -n -e '/\[system_user\]/,/\[.*\]\|\$/ { /\[.*\]/d; /user\s*=/ { s/\s*user\s*=\s*//; p } }')
59+
fi
60+
echo $sysuser
61+
}
62+
63+
## Update logrotate configuration
64+
enable_logrotate() {
65+
[ -f /etc/logrotate.d/st2-pkgsaved.disabled ] &&
66+
mv -f /etc/logrotate.d/st2-pkgsaved.disabled /etc/logrotate.d/st2 || :
67+
}
68+
69+
## Fix directories permissions on upgrade (different across maint scripts!)
70+
# NB! USED FOR COMPATIBILITY ON UPGRADE FROM PREVIOUS VERSIONS OF PACKAGES.
71+
# NB! In future package releases reseting permissions SHOULD BE REMOVED.
72+
#
73+
set_permissions() {
74+
local fileperms="$1" mode= ownership= path= current_ownership= user= group=
75+
76+
echo "$fileperms" | sed -e "s/_packsgroup/$PACKS_GROUP/g" -e "s/_st2user/$ST2_USER/g" |
77+
while read mode ownership path; do
78+
user=$(echo $ownership | cut -f1 -d:)
79+
group=$(echo $ownership | cut -f2 -d:)
80+
# set top level permissions whether it's a file or directory
81+
[ -e $path ] || continue
82+
chown $ownership $path && chmod $mode $path
83+
84+
# recursively change permissions of children (since those are directories)
85+
find $path -mindepth 1 -maxdepth 1 -not \( -user $user -group $group \) |
86+
xargs -I {} sh -c "echo chown -R $ownership {} && echo chmod -R $mode {}"
87+
done
88+
}
89+
90+
case "$1" in
91+
install)
92+
create_users
93+
enable_logrotate
94+
;;
95+
upgrade)
96+
create_users
97+
enable_logrotate
98+
set_permissions "$RESET_PERMS"
99+
touch $ST2_UPGRADESTAMP
100+
;;
101+
abort-upgrade)
102+
;;
103+
*)
104+
echo "preinst called with unknown argument \`$1'" >&2
105+
exit 1
106+
;;
107+
esac
108+
109+
# dh_installdeb will replace this with shell code automatically
110+
# generated by other debhelper scripts.
111+
112+
#DEBHELPER#
113+
114+
exit 0

packaging/rpm/scripts/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
shell_sources(skip_shellcheck=True)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
set -e
2+
3+
# make sure that our socket generators run
4+
systemctl daemon-reload >/dev/null 2>&1 || true
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
set -e
2+
3+
PACKS_GROUP=%{packs_group}
4+
SYS_USER=%{stanley_user}
5+
ST2_USER=%{svc_user}
6+
7+
## Permissions of directories which has to be reset on upgrade
8+
RESET_PERMS=$(cat <<EHD | sed 's/\s\+/ /g'
9+
ug+rw root:_packsgroup /opt/stackstorm/packs
10+
ug+rw root:_packsgroup /usr/share/doc/st2/examples
11+
ug+rw root:_packsgroup /opt/stackstorm/virtualenvs
12+
755 _st2user:root /opt/stackstorm/configs
13+
755 _st2user:root /opt/stackstorm/exports
14+
755 _st2user:root /opt/stackstorm/overrides
15+
EHD
16+
)
17+
18+
## Create stackstorm users and groups (differs from debian)
19+
create_users() {
20+
# create st2 user (services user)
21+
(id $ST2_USER 1>/dev/null 2>&1) ||
22+
adduser --no-create-home --system --user-group $ST2_USER
23+
24+
# make st2 member of st2packs group
25+
(getent group $PACKS_GROUP 1>/dev/null 2>&1) || groupadd -r $PACKS_GROUP
26+
(groups $ST2_USER 2>/dev/null | grep -q "\b${PACKS_GROUP}\b") ||
27+
usermod -a -G $PACKS_GROUP $ST2_USER
28+
29+
# create stanley user (unprivileged action user, we don't ship sudoers.d config)
30+
(id $SYS_USER 1>/dev/null 2>&1) ||
31+
adduser --user-group $SYS_USER
32+
}
33+
34+
## Fix directories permissions on upgrade (different across maint scripts!)
35+
# NB! USED FOR COMPATIBILITY ON UPGRADE FROM PREVIOUS VERSIONS OF PACKAGES.
36+
# NB! In future package releases reseting permissions SHOULD BE REMOVED.
37+
#
38+
set_permissions() {
39+
local fileperms="$1" mode= ownership= path= current_ownership= user= group=
40+
41+
echo "$fileperms" | sed -e "s/_packsgroup/$PACKS_GROUP/g" -e "s/_st2user/$ST2_USER/g" |
42+
while read mode ownership path; do
43+
user=$(echo $ownership | cut -f1 -d:)
44+
group=$(echo $ownership | cut -f2 -d:)
45+
# set top level permissions whether it's a file or directory
46+
[ -e $path ] || continue
47+
chown $ownership $path && chmod $mode $path
48+
49+
# recursively change permissions of children (since those are directories)
50+
find $path -mindepth 1 -maxdepth 1 -not \( -user $user -group $group \) |
51+
xargs -I {} sh -c "chown -R $ownership {} && chmod -R $mode {}"
52+
done
53+
}
54+
55+
create_users
56+
57+
# We perform upgrade (when install count > 1)
58+
if [ "$1" -gt 1 ]; then
59+
set_permissions "$RESET_PERMS"
60+
fi

0 commit comments

Comments
 (0)