21700: Install Bundler system-wide in Rails postinst
[arvados.git] / tools / compute-images / scripts / usr-local-bin-ensure-encrypted-partitions-aws-ebs-autoscale.sh
1 #!/bin/bash
2
3 # Copyright (C) The Arvados Authors. All rights reserved.
4 #
5 # SPDX-License-Identifier: Apache-2.0
6
7 set -e
8 set -x
9
10 MOUNTPATH=/tmp
11
12 findmntq() {
13     findmnt "$@" >/dev/null
14 }
15
16 ensure_umount() {
17     if findmntq "$1"; then
18         umount "$1"
19     fi
20 }
21
22 # First make sure docker is not using /tmp, then unmount everything under it.
23 if [ -d /etc/sv/docker.io ]
24 then
25   # TODO: Actually detect Docker state with runit
26   DOCKER_ACTIVE=true
27   sv stop docker.io || service stop docker.io || true
28 else
29   if systemctl --quiet is-active docker.service docker.socket; then
30     systemctl stop docker.service docker.socket || true
31     DOCKER_ACTIVE=true
32   else
33     DOCKER_ACTIVE=false
34   fi
35 fi
36
37 ensure_umount "$MOUNTPATH/docker/aufs"
38
39 /bin/bash /opt/amazon-ebs-autoscale/install.sh --imdsv2 -f lvm.ext4 -m $MOUNTPATH 2>&1 > /var/log/ebs-autoscale-install.log
40
41 # Make sure docker uses the big partition
42 cat <<EOF > /etc/docker/daemon.json
43 {
44     "data-root": "$MOUNTPATH/docker-data"
45 }
46 EOF
47
48 if ! $DOCKER_ACTIVE; then
49   # Nothing else to do
50   exit 0
51 fi
52
53 # restart docker
54 if [ -d /etc/sv/docker.io ]
55 then
56   ## runit
57   sv up docker.io
58 else
59   systemctl start docker.service docker.socket || true
60 fi
61
62 end=$((SECONDS+60))
63
64 while [ $SECONDS -lt $end ]; do
65   if /usr/bin/docker ps -q >/dev/null; then
66     exit 0
67   fi
68   sleep 1
69 done
70
71 # Docker didn't start within a minute, abort
72 exit 1