| garciadeblas | 0bc8752 | 2021-10-20 22:16:17 +0200 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # |
| 3 | # Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | # you may not use this file except in compliance with the License. |
| 5 | # You may obtain a copy of the License at |
| 6 | # |
| 7 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | # |
| 9 | # Unless required by applicable law or agreed to in writing, software |
| 10 | # distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | # See the License for the specific language governing permissions and |
| 13 | # limitations under the License. |
| 14 | # |
| 15 | |
| 16 | set +eux |
| 17 | |
| 18 | function install_docker_ce() { |
| 19 | # installs and configures Docker CE |
| 20 | [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function |
| 21 | echo "Installing Docker CE ..." |
| 22 | sudo apt-get -qq update |
| 23 | sudo apt-get install -y apt-transport-https ca-certificates software-properties-common |
| 24 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - |
| 25 | sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" |
| 26 | sudo apt-get -qq update |
| 27 | sudo apt-get install -y docker-ce |
| 28 | # echo "Reconfiguring Docker to use systemd as cgroup driver" |
| 29 | # if [ ! -f /etc/docker/daemon.json ]; then |
| 30 | # sudo bash -c "cat <<EOF > /etc/docker/daemon.json |
| 31 | #{ |
| 32 | # \"exec-opts\": [\"native.cgroupdriver=systemd\"], |
| 33 | # \"log-driver\": \"json-file\", |
| 34 | # \"log-opts\": { |
| 35 | # \"max-size\": \"100m\" |
| 36 | # }, |
| 37 | # \"storage-driver\": \"overlay2\" |
| 38 | #} |
| 39 | #EOF" |
| 40 | # else |
| 41 | # sudo sed -i "s|native.cgroupdriver=cgroupfs|native.cgroupdriver=systemd|" /etc/docker/daemon.json |
| 42 | # fi |
| 43 | echo "Adding user to group 'docker'" |
| 44 | sudo groupadd -f docker |
| 45 | sudo usermod -aG docker $USER |
| 46 | sleep 2 |
| 47 | #sudo systemctl enable docker |
| 48 | #sudo systemctl daemon-reload |
| 49 | #sudo systemctl restart docker |
| 50 | sudo service docker restart |
| 51 | echo "... restarted Docker service" |
| 52 | if [ -n "${DOCKER_PROXY_URL}" ]; then |
| 53 | echo "Configuring docker proxy ..." |
| 54 | if [ -f /etc/docker/daemon.json ]; then |
| 55 | if grep -q registry-mirrors /etc/docker/daemon.json; then |
| 56 | sudo sed -i "s|registry-mirrors.*|registry-mirrors\": [\"${DOCKER_PROXY_URL}\"] |" /etc/docker/daemon.json |
| 57 | else |
| 58 | sudo sed -i "s|^{|{\n \"registry-mirrors\": [\"${DOCKER_PROXY_URL}\"],|" /etc/docker/daemon.json |
| 59 | fi |
| 60 | else |
| 61 | sudo bash -c "cat << EOF > /etc/docker/daemon.json |
| 62 | { |
| 63 | \"registry-mirrors\": [\"${DOCKER_PROXY_URL}\"] |
| 64 | } |
| 65 | EOF" |
| 66 | fi |
| garciadeblas | fa3eb33 | 2022-11-15 14:11:56 +0100 | [diff] [blame] | 67 | fi |
| 68 | if [ -n "${OSM_BEHIND_PROXY}" ] ; then |
| 69 | if ! [ -f /etc/systemd/system/docker.service.d/http-proxy.conf ] ; then |
| 70 | sudo mkdir -p /etc/systemd/system/docker.service.d |
| 71 | cat << EOF | sudo tee -a /etc/systemd/system/docker.service.d/http-proxy.conf |
| 72 | [Service] |
| 73 | EOF |
| 74 | fi |
| 75 | [ -n "${HTTP_PROXY}" ] && sudo bash -c "cat <<EOF >> /etc/systemd/system/docker.service.d/http-proxy.conf |
| 76 | Environment=\"HTTP_PROXY=${HTTP_PROXY}\" |
| 77 | EOF" |
| 78 | [ -n "${HTTPS_PROXY}" ] && sudo bash -c "cat <<EOF >> /etc/systemd/system/docker.service.d/http-proxy.conf |
| 79 | Environment=\"HTTPS_PROXY=${HTTPS_PROXY}\" |
| 80 | EOF" |
| 81 | [ -n "${NO_PROXY}" ] && sudo bash -c "cat <<EOF >> /etc/systemd/system/docker.service.d/http-proxy.conf |
| 82 | Environment=\"NO_PROXY=${NO_PROXY}\" |
| 83 | EOF" |
| 84 | fi |
| 85 | if [ -n "${DOCKER_PROXY_URL}" ] || [ -n "${OSM_BEHIND_PROXY}" ] ; then |
| garciadeblas | 0bc8752 | 2021-10-20 22:16:17 +0200 | [diff] [blame] | 86 | #sudo systemctl enable docker |
| 87 | sudo systemctl daemon-reload |
| 88 | #sudo systemctl restart docker |
| 89 | sudo service docker restart |
| 90 | echo "... restarted Docker service again" |
| 91 | fi |
| 92 | [ -z "${DEBUG_INSTALL}" ] || ! echo "File: /etc/docker/daemon.json" || cat /etc/docker/daemon.json |
| 93 | sg docker -c "docker version" || FATAL "Docker installation failed" |
| 94 | echo "... Docker CE installation done" |
| 95 | [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function |
| 96 | return 0 |
| 97 | } |
| 98 | |
| garciadeblas | fa3eb33 | 2022-11-15 14:11:56 +0100 | [diff] [blame] | 99 | OSM_BEHIND_PROXY="" |
| 100 | DOCKER_PROXY_URL="" |
| 101 | |
| 102 | while getopts ":D:p:-: P" o; do |
| garciadeblas | 0bc8752 | 2021-10-20 22:16:17 +0200 | [diff] [blame] | 103 | case "${o}" in |
| 104 | D) |
| 105 | OSM_DEVOPS="${OPTARG}" |
| 106 | ;; |
| 107 | p) |
| 108 | DOCKER_PROXY_URL="${OPTARG}" |
| 109 | ;; |
| garciadeblas | fa3eb33 | 2022-11-15 14:11:56 +0100 | [diff] [blame] | 110 | P) |
| 111 | OSM_BEHIND_PROXY="y" |
| 112 | ;; |
| garciadeblas | 0bc8752 | 2021-10-20 22:16:17 +0200 | [diff] [blame] | 113 | -) |
| 114 | [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="y" && continue |
| 115 | echo -e "Invalid option: '--$OPTARG'\n" >&2 |
| 116 | exit 1 |
| 117 | ;; |
| 118 | :) |
| 119 | echo "Option -$OPTARG requires an argument" >&2 |
| 120 | exit 1 |
| 121 | ;; |
| 122 | \?) |
| 123 | echo -e "Invalid option: '-$OPTARG'\n" >&2 |
| 124 | exit 1 |
| 125 | ;; |
| 126 | *) |
| 127 | exit 1 |
| 128 | ;; |
| 129 | esac |
| 130 | done |
| 131 | |
| 132 | source $OSM_DEVOPS/common/logging |
| 133 | |
| 134 | echo "DEBUG_INSTALL=$DEBUG_INSTALL" |
| 135 | echo "DOCKER_PROXY_URL=$DOCKER_PROXY_URL" |
| garciadeblas | fa3eb33 | 2022-11-15 14:11:56 +0100 | [diff] [blame] | 136 | echo "OSM_BEHIND_PROXY=$OSM_BEHIND_PROXY" |
| garciadeblas | 0bc8752 | 2021-10-20 22:16:17 +0200 | [diff] [blame] | 137 | echo "USER=$USER" |
| 138 | |
| 139 | install_docker_ce |
| 140 | |