1
- #! /bin/bash
1
+ #! /usr/ bin/env bash
2
2
# shellcheck disable=SC2094
3
- set -euxo pipefail
4
3
5
- # # Configures docker before system starts
4
+ set -Eeuo pipefail
5
+
6
+ on_error () {
7
+ local exit_code=" $? "
8
+ local error_line=" $1 "
9
+
10
+ echo " ${BASH_SOURCE[0]} errored with exit code ${exit_code} on line ${error_line} ."
11
+ exit " $exit_code "
12
+ }
13
+
14
+ trap ' on_error $LINENO' ERR
15
+
16
+ on_exit () {
17
+ echo " ${BASH_SOURCE[0]} completed successfully."
18
+ }
19
+
20
+ trap ' [[ $? = 0 ]] && on_exit' EXIT
21
+
22
+ # # Configure docker before system starts
6
23
7
24
# Write to system console and to our log file
8
25
# See https://alestic.com/2010/12/ec2-user-data-output/
9
26
exec > >( tee -a /var/log/elastic-stack.log | logger -t user-data -s 2> /dev/console) 2>&1
10
27
11
28
29
+ echo Reading variables from AMI creation...
12
30
# shellcheck disable=SC1091
13
31
source /usr/local/lib/bk-configure-docker.sh
14
32
15
- # Set user namespace remapping in config
16
33
if [[ " ${DOCKER_USERNS_REMAP:- false} " == " true" ]]; then
34
+ echo Configuring user namespace remapping...
35
+
17
36
cat <<< " $(jq '." userns-remap" =" buildkite-agent" ' /etc/docker/daemon.json)" > /etc/docker/daemon.json
18
- cat << EOF > /etc/subuid
37
+
38
+ echo Writing subuid...
39
+ cat << EOF | tee /etc/subuid
19
40
buildkite-agent:$( id -u buildkite-agent) :1
20
41
buildkite-agent:100000:65536
21
42
EOF
22
- cat << EOF > /etc/subgid
43
+
44
+ echo Writing subgid...
45
+ cat << EOF | tee /etc/subgid
23
46
buildkite-agent:$( getent group docker | awk -F: ' {print $3}' ) :1
24
47
buildkite-agent:100000:65536
25
48
EOF
49
+ else
50
+ echo User namespace remapping not configured.
26
51
fi
27
52
28
- # Set experimental in config
29
53
if [[ " ${DOCKER_EXPERIMENTAL:- false} " == " true" ]]; then
54
+ echo Configuring experiment flag for docker daemon...
30
55
cat <<< " $(jq '.experimental=true' /etc/docker/daemon.json)" > /etc/docker/daemon.json
56
+ else
57
+ echo Experiment flag for docker daemon not configured.
31
58
fi
32
59
33
- # Move docker root to the ephemeral device
34
60
if [[ " ${BUILDKITE_ENABLE_INSTANCE_STORAGE:- false} " == " true" ]]; then
61
+ echo Creating docker root directory in instance storage...
35
62
mkdir -p /mnt/ephemeral/docker
63
+ echo Configuring docker root directory to be in instance storage...
36
64
cat <<< " $(jq '." data-root" =" /mnt/ephemeral/docker" ' /etc/docker/daemon.json)" > /etc/docker/daemon.json
65
+ else
66
+ echo Instance storage not configured.
37
67
fi
38
68
39
- # Customise address pools
40
- cat <<< " $(jq '." default-address-pools" =[{" base" :" 172.17.0.0/12" ," size" :20},{" base" :" 192.168.0.0/16" ," size" :24}]' /etc/docker/daemon.json)" > /etc/docker/daemon.json
69
+ echo Customising docker IP address pools...
70
+ cat <<< " $(jq \
71
+ '." default-address-pools" =[{" base" :" 172.17.0.0/12" ," size" :20},{" base" :" 192.168.0.0/16" ," size" :24}]' \
72
+ /etc/docker/daemon.json \
73
+ )" > /etc/docker/daemon.json
41
74
42
75
# See https://docs.docker.com/build/building/multi-platform/
43
76
echo Installing qemu binfmt for multiarch...
@@ -48,5 +81,8 @@ docker run \
48
81
" tonistiigi/binfmt:${QEMU_BINFMT_TAG} " \
49
82
--install all
50
83
84
+ echo Cleaning up docker images...
51
85
systemctl start docker-low-disk-gc.service
86
+
87
+ echo Restarting docker daemon...
52
88
systemctl restart docker
0 commit comments