Skip to content

Commit b1f5dac

Browse files
committed
Do things as $SWAPPER.
(Much of the seed code for this profile came from a profile that insisted on being root; fix all of that.)
1 parent 2152394 commit b1f5dac

11 files changed

+164
-198
lines changed

profile.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import os.path
1212
import sys
1313

14-
TBCMD = "sudo mkdir -p /root/setup && (if [ -d /local/repository ]; then sudo -H /local/repository/setup-driver.sh 2>&1 | sudo tee /root/setup/setup-driver.log; else sudo -H /tmp/setup/setup-driver.sh 2>&1 | sudo tee /root/setup/setup-driver.log; fi)"
14+
TBCMD = "sudo mkdir -p /local/setup && sudo chown `cat /var/emulab/boot/swapper` /local/setup && sudo -u `cat /var/emulab/boot/swapper` -Hi /bin/sh -c '/local/repository/setup-driver.sh >/local/setup/setup-driver.log 2>&1'"
1515

1616
#
1717
# For now, disable the testbed's root ssh key service until we can remove ours.

setup-disk-space.sh

+25-29
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,6 @@ set -x
1010
if [ -z "$EUID" ]; then
1111
EUID=`id -u`
1212
fi
13-
if [ $EUID -ne 0 ] ; then
14-
echo "This script must be run as root" 1>&2
15-
exit 1
16-
fi
1713

1814
# Grab our libs
1915
. "`dirname $0`/setup-lib.sh"
@@ -41,16 +37,16 @@ maybe_install_packages lvm2 maybe_install_packages thin-provisioning-tools
4137
# First try to make LVM volumes; fall back to mkextrafs.pl /storage. We
4238
# use /storage later, so we make the dir either way.
4339
#
44-
mkdir -p ${STORAGEDIR}
40+
$SUDO mkdir -p ${STORAGEDIR}
4541
echo "STORAGEDIR=${STORAGEDIR}" >> $LOCALSETTINGS
4642
# Check to see if we already have an `emulab` VG. This would occur
4743
# if the user requested a temp dataset. If this happens, we simple
4844
# rename it to the VG name we expect.
49-
vgdisplay emulab
45+
$SUDO vgdisplay emulab
5046
if [ $? -eq 0 ]; then
5147
if [ ! emulab = $VGNAME ]; then
52-
vgrename emulab $VGNAME
53-
sed -i -re "s/^(.*)(\/dev\/emulab)(.*)$/\1\/dev\/$VGNAME\3/" /etc/fstab
48+
$SUDO vgrename emulab $VGNAME
49+
$SUDO sed -i -re "s/^(.*)(\/dev\/emulab)(.*)$/\1\/dev\/$VGNAME\3/" /etc/fstab
5450
fi
5551
LVM=1
5652
echo "VGNAME=${VGNAME}" >> $LOCALSETTINGS
@@ -69,15 +65,15 @@ elif [ -z "$LVM" ] ; then
6965
# Well, now there's a new partition layout; try it.
7066
if [ "$ARCH" = "aarch64" -o "$ARCH" = "ppc64le" ]; then
7167
maybe_install_packages gdisk
72-
sgdisk -i 1 /dev/sda
68+
$SUDO sgdisk -i 1 /dev/sda
7369
if [ $? -eq 0 ] ; then
7470
nparts=`sgdisk -p /dev/sda | grep -E '^ +[0-9]+ +.*$' | wc -l`
7571
if [ $nparts -lt 4 ]; then
7672
newpart=`expr $nparts + 1`
77-
sgdisk -N $newpart /dev/sda
78-
partprobe /dev/sda
73+
$SUDO sgdisk -N $newpart /dev/sda
74+
$SUDO partprobe /dev/sda
7975
if [ $? -eq 0 ] ; then
80-
partprobe /dev/sda
76+
$SUDO partprobe /dev/sda
8177
# Add the new partition specifically
8278
MKEXTRAFS_ARGS="${MKEXTRAFS_ARGS} -s $newpart"
8379
fi
@@ -88,33 +84,33 @@ elif [ -z "$LVM" ] ; then
8884
#
8985
# See if we can try to use an LVM instead of just the 4th partition.
9086
#
91-
lsblk -n -P -b -o NAME,FSTYPE,MOUNTPOINT,PARTTYPE,PARTUUID,TYPE,PKNAME,SIZE | perl -e 'my %devs = (); while (<STDIN>) { $_ =~ s/([A-Z0-9a-z]+=)/;\$$1/g; eval "$_"; if (!($TYPE eq "disk" || $TYPE eq "part")) { next; }; if (exists($devs{$PKNAME})) { delete $devs{$PKNAME}; } if ($FSTYPE eq "" && $MOUNTPOINT eq "" && ($PARTTYPE eq "" || $PARTTYPE eq "0x0") && (int($SIZE) > 3221225472)) { $devs{$NAME} = "/dev/$NAME"; } }; print join(" ",values(%devs))."\n"' > /tmp/devs
87+
$SUDO lsblk -n -P -b -o NAME,FSTYPE,MOUNTPOINT,PARTTYPE,PARTUUID,TYPE,PKNAME,SIZE | perl -e 'my %devs = (); while (<STDIN>) { $_ =~ s/([A-Z0-9a-z]+=)/;\$$1/g; eval "$_"; if (!($TYPE eq "disk" || $TYPE eq "part")) { next; }; if (exists($devs{$PKNAME})) { delete $devs{$PKNAME}; } if ($FSTYPE eq "" && $MOUNTPOINT eq "" && ($PARTTYPE eq "" || $PARTTYPE eq "0x0") && (int($SIZE) > 3221225472)) { $devs{$NAME} = "/dev/$NAME"; } }; print join(" ",values(%devs))."\n"' > /tmp/devs
9288
DEVS=`cat /tmp/devs`
9389
if [ -n "$DEVS" ]; then
94-
pvcreate $DEVS && vgcreate $VGNAME $DEVS
90+
$SUDO pvcreate $DEVS && vgcreate $VGNAME $DEVS
9591
if [ ! $? -eq 0 ]; then
9692
echo "ERROR: failed to create PV/VG with '$DEVS'; falling back to mkextrafs.pl"
97-
vgremove $VGNAME
98-
pvremove $DEVS
93+
$SUDO vgremove $VGNAME
94+
$SUDO pvremove $DEVS
9995
DONE=0
10096
else
10197
DONE=1
10298
fi
10399
fi
104100

105101
if [ $DONE -eq 0 ]; then
106-
/usr/local/etc/emulab/mkextrafs.pl ${MKEXTRAFS_ARGS}
102+
$SUDO /usr/local/etc/emulab/mkextrafs.pl ${MKEXTRAFS_ARGS}
107103
if [ $? -ne 0 ]; then
108-
/usr/local/etc/emulab/mkextrafs.pl ${MKEXTRAFS_ARGS} -f
104+
$SUDO /usr/local/etc/emulab/mkextrafs.pl ${MKEXTRAFS_ARGS} -f
109105
if [ $? -ne 0 ]; then
110-
/usr/local/etc/emulab/mkextrafs.pl -f ${STORAGEDIR}
106+
$SUDO /usr/local/etc/emulab/mkextrafs.pl -f ${STORAGEDIR}
111107
LVM=0
112108
fi
113109
fi
114110
fi
115111

116112
# Get integer total space (G) available.
117-
VGTOTAL=`vgs -o vg_size --noheadings --units G $VGNAME | sed -ne 's/ *\([0-9]*\)[0-9\.]*G/\1/p'`
113+
VGTOTAL=`$SUDO vgs -o vg_size --noheadings --units G $VGNAME | sed -ne 's/ *\([0-9]*\)[0-9\.]*G/\1/p'`
118114
echo "VGNAME=${VGNAME}" >> $LOCALSETTINGS
119115
echo "VGTOTAL=${VGTOTAL}" >> $LOCALSETTINGS
120116
echo "LVM=${LVM}" >> $LOCALSETTINGS
@@ -130,29 +126,29 @@ if [ $LVM -eq 1 ]; then
130126
LV_SIZE=`perl -e "print 0.75 * $vgt;"`
131127
echo "LV_SIZE=${LV_SIZE}" >> $LOCALSETTINGS
132128

133-
#lvcreate -l 75%FREE -n $LVNAME $VGNAME
134-
lvcreate -L ${LV_SIZE}G -n $LVNAME $VGNAME
129+
#$SUDO lvcreate -l 75%FREE -n $LVNAME $VGNAME
130+
$SUDO lvcreate -L ${LV_SIZE}G -n $LVNAME $VGNAME
135131

136132
if [ -f /sbin/mkfs.ext4 ]; then
137-
mkfs.ext4 /dev/$VGNAME/$LVNAME
133+
$SUDO mkfs.ext4 /dev/$VGNAME/$LVNAME
138134
echo "/dev/$VGNAME/$LVNAME ${STORAGEDIR} ext4 defaults 0 0" \
139-
>> /etc/fstab
135+
| $SUDO tee -a /etc/fstab
140136
else
141137
mkfs.ext3 /dev/$VGNAME/$LVNAME
142138
echo "/dev/$VGNAME/$LVNAME ${STORAGEDIR} ext3 defaults 0 0" \
143-
>> /etc/fstab
139+
| $SUDO tee -a /etc/fstab
144140
fi
145-
mount ${STORAGEDIR}
141+
$SUDO mount ${STORAGEDIR}
146142
fi
147143

148144
#
149145
# Redirect some Docker/k8s dirs into our extra storage.
150146
#
151147
for dir in docker kubelet ; do
152-
mkdir -p $STORAGEDIR/$dir /var/lib/$dir
153-
mount -o bind $STORAGEDIR/$dir /var/lib/$dir
148+
$SUDO mkdir -p $STORAGEDIR/$dir /var/lib/$dir
149+
$SUDO mount -o bind $STORAGEDIR/$dir /var/lib/$dir
154150
echo "$STORAGEDIR/$dir /var/lib/$dir none defaults,bind 0 0" \
155-
>> /etc/fstab
151+
| $SUDO tee -a /etc/fstab
156152
done
157153

158154
logtend "disk-space"

setup-driver.sh

+1-9
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@
22

33
set -x
44

5-
if [ -z "$EUID" ]; then
6-
EUID=`id -u`
7-
fi
8-
if [ $EUID -ne 0 ] ; then
9-
echo "This script must be run as root" 1>&2
10-
exit 1
11-
fi
12-
13-
ALLNODESCRIPTS="setup-root-ssh.sh setup-disk-space.sh"
5+
ALLNODESCRIPTS="setup-ssh.sh setup-disk-space.sh"
146
HEADNODESCRIPTS="setup-nginx.sh setup-ssl.sh setup-kubespray.sh setup-kubernetes-extra.sh"
157

168
export SRC=`dirname $0`

setup-kubernetes-extra.sh

+7-15
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,6 @@
22

33
set -x
44

5-
if [ -z "$EUID" ]; then
6-
EUID=`id -u`
7-
fi
8-
if [ $EUID -ne 0 ] ; then
9-
echo "This script must be run as root" 1>&2
10-
exit 1
11-
fi
12-
135
# Grab our libs
146
. "`dirname $0`/setup-lib.sh"
157

@@ -20,7 +12,7 @@ fi
2012
logtstart "kubernetes-extra"
2113

2214
# Create a localhost kube-proxy service and fire it off.
23-
cat <<'EOF' >/etc/systemd/system/kube-proxy.service
15+
cat <<'EOF' | $SUDO tee /etc/systemd/system/kube-proxy.service
2416
[Unit]
2517
Description=Kubernetes Local Proxy Service
2618
After=kubelet.service
@@ -36,9 +28,9 @@ StandardError=journal+console
3628
[Install]
3729
WantedBy=multi-user.target
3830
EOF
39-
systemctl daemon-reload
40-
systemctl enable kube-proxy
41-
systemctl start kube-proxy
31+
service_init_reload
32+
service_enable kube-proxy
33+
service_start kube-proxy
4234

4335
# Expose the dashboard IFF we have a certificate configuration
4436
if [ ! "$SSLCERTTYPE" = "none" -a "$SSLCERTCONFIG" = "proxy" ]; then
@@ -49,7 +41,7 @@ if [ ! "$SSLCERTTYPE" = "none" -a "$SSLCERTCONFIG" = "proxy" ]; then
4941
certpath="/etc/letsencrypt/live/${NFQDN}/fullchain.pem"
5042
keypath="/etc/letsencrypt/live/${NFQDN}/privkey.pem"
5143
fi
52-
cat <<EOF >/etc/nginx/sites-available/k8s-dashboard
44+
cat <<EOF | $SUDO tee /etc/nginx/sites-available/k8s-dashboard
5345
map \$http_upgrade \$connection_upgrade {
5446
default Upgrade;
5547
'' close;
@@ -75,9 +67,9 @@ server {
7567
}
7668
}
7769
EOF
78-
ln -sf /etc/nginx/sites-available/k8s-dashboard \
70+
$SUDO ln -sf /etc/nginx/sites-available/k8s-dashboard \
7971
/etc/nginx/sites-enabled/k8s-dashboard
80-
systemctl restart nginx
72+
service_restart nginx
8173
fi
8274

8375
# Generate a cluster-wide token for an admin account, and dump it into

setup-kubespray.sh

+16-21
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,6 @@
22

33
set -x
44

5-
if [ -z "$EUID" ]; then
6-
EUID=`id -u`
7-
fi
8-
if [ $EUID -ne 0 ] ; then
9-
echo "This script must be run as root" 1>&2
10-
exit 1
11-
fi
12-
135
# Grab our libs
146
. "`dirname $0`/setup-lib.sh"
157

@@ -22,8 +14,8 @@ logtstart "kubespray"
2214
# First, we need yq.
2315
are_packages_installed yq
2416
if [ ! $? -eq 1 ]; then
25-
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CC86BB64
26-
add-apt-repository -y ppa:rmescandon/yq
17+
$SUDO apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CC86BB64
18+
$SUDO add-apt-repository -y ppa:rmescandon/yq
2719
maybe_install_packages yq
2820
fi
2921

@@ -54,7 +46,7 @@ if [ $KUBESPRAYUSEVIRTUALENV -eq 1 ]; then
5446
$PIP install -r kubespray/requirements.txt
5547
else
5648
maybe_install_packages software-properties-common ${PYTHON}-pip
57-
add-apt-repository --yes --update ppa:ansible/ansible
49+
$SUDO add-apt-repository --yes --update ppa:ansible/ansible
5850
maybe_install_packages ansible
5951
$PIP install -r kubespray/requirements.txt
6052
fi
@@ -108,25 +100,25 @@ else
108100
ip=10.10.1.1
109101
nm=255.255.0.0
110102
cidr=$ip/16
111-
echo "$ip $HEAD" >> /etc/hosts
112-
ip link add type dummy name dummy0
113-
ip addr add $cidr dev dummy0
114-
ip link set dummy0 up
103+
echo "$ip $HEAD" | $SUDO tee -a /etc/hosts
104+
$SUDO ip link add type dummy name dummy0
105+
$SUDO ip addr add $cidr dev dummy0
106+
$SUDO ip link set dummy0 up
115107
DISTRIB_MAJOR=`. /etc/lsb-release && echo $DISTRIB_RELEASE | cut -d. -f1`
116108
if [ $DISTRIB_MAJOR -lt 18 ]; then
117-
cat <<EOF > /etc/network/interfaces.d/kube-single-node.conf
109+
cat <<EOF | $SUDO tee /etc/network/interfaces.d/kube-single-node.conf
118110
auto dummy0
119111
iface dummy0 inet static
120112
address $cidr
121113
pre-up ip link add dummy0 type dummy
122114
EOF
123115
else
124-
cat <<EOF >/etc/systemd/network/dummy0.netdev
116+
cat <<EOF | $SUDO tee /etc/systemd/network/dummy0.netdev
125117
[NetDev]
126118
Name=dummy0
127119
Kind=type
128120
EOF
129-
cat <<EOF >/etc/systemd/network/dummy0.network
121+
cat <<EOF | $SUDO tee /etc/systemd/network/dummy0.network
130122
[Match]
131123
Name=dummy0
132124
@@ -331,9 +323,12 @@ if [ ! $? -eq 0 ]; then
331323
fi
332324
cd ..
333325

334-
mkdir -p /root/.kube
335-
mkdir -p /users/$SWAPPER/.kube
326+
$SUDO rm -rf /root/.kube
327+
$SUDO mkdir -p /root/.kube
336328
cp -p $INVDIR/artifacts/admin.conf /root/.kube/config
329+
330+
[ -d /users/$SWAPPER/.kube ] && rm -rf /users/$SWAPPER/.kube
331+
mkdir -p /users/$SWAPPER/.kube
337332
cp -p $INVDIR/artifacts/admin.conf /users/$SWAPPER/.kube/config
338333
chown -R $SWAPPER /users/$SWAPPER/.kube
339334

@@ -347,7 +342,7 @@ which helm
347342
if [ ! $? -eq 0 -a -n "${HELM_VERSION}" ]; then
348343
wget https://storage.googleapis.com/kubernetes-helm/helm-${HELM_VERSION}-linux-amd64.tar.gz
349344
tar -xzvf helm-${HELM_VERSION}-linux-amd64.tar.gz
350-
mv linux-amd64/helm /usr/local/bin/helm
345+
$SUDO mv linux-amd64/helm /usr/local/bin/helm
351346

352347
helm init --upgrade --force-upgrade
353348
kubectl create serviceaccount --namespace kube-system tiller

setup-letsencrypt.sh

+9-17
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,6 @@
22

33
set -x
44

5-
if [ -z "$EUID" ]; then
6-
EUID=`id -u`
7-
fi
8-
if [ $EUID -ne 0 ] ; then
9-
echo "This script must be run as root" 1>&2
10-
exit 1
11-
fi
12-
135
# Grab our libs
146
. "`dirname $0`/setup-lib.sh"
157

@@ -20,17 +12,17 @@ fi
2012
logtstart "letsencrypt"
2113

2214
maybe_install_packages python-certbot-nginx
23-
certbot certonly -d $NFQDN --nginx --agree-tos -m "$SWAPPER_EMAIL" -n
24-
mkdir -p /etc/nginx/ssl
25-
#cp -p /etc/letsencrypt/live/$NFQDN/*.pem /etc/nginx/ssl/
26-
#chown -R www-data:root /etc/nginx/ssl/
27-
#chmod 770 /etc/nginx/ssl
15+
$SUDO certbot certonly -d $NFQDN --nginx --agree-tos -m "$SWAPPER_EMAIL" -n
16+
$SUDO mkdir -p /etc/nginx/ssl
17+
#$SUDO cp -p /etc/letsencrypt/live/$NFQDN/*.pem /etc/nginx/ssl/
18+
#$SUDO chown -R www-data:root /etc/nginx/ssl/
19+
#$SUDO chmod 770 /etc/nginx/ssl
2820

2921
#
3022
# Add a simple revocation service that runs on shutdown/reboot and if
3123
# the node is no longer allocated, certbot revoke .
3224
#
33-
cat <<'EOF' >/etc/systemd/system/tbhook.service
25+
cat <<'EOF' | $SUDO tee /etc/systemd/system/tbhook.service
3426
[Unit]
3527
Description=Testbed Hook Service
3628
After=testbed.service
@@ -46,9 +38,9 @@ StandardError=journal+console
4638
[Install]
4739
WantedBy=multi-user.target
4840
EOF
49-
systemctl daemon-reload
50-
systemctl enable tbhook
51-
systemctl start tbhook
41+
service_init_reload
42+
service_enable tbhook
43+
service_start tbhook
5244

5345
logtend "letsencrypt"
5446
touch $OURDIR/letsencrypt-done

0 commit comments

Comments
 (0)