| # Copyright 2021 The Chromium OS Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| description "Start the satlab remote access docker container." | |
| author "chromium-os-dev@chromium.org" | |
| # Disable OOM killer, critical for Satlab operation. | |
| oom score never | |
| start on (stopped satlab-network-init RESULT=ok and \ | |
| started satlab-dockerd) | |
| script | |
| mkdir -p /var/log/bootup/ | |
| exec >>/var/log/bootup/${UPSTART_JOB}.log 2>&1 | |
| set -x | |
| set +e | |
| APP_KEY="$(vpd -i RW_VPD -g application)" | |
| if [ "$?" != "0" ] || [ "${APP_KEY}" != "satlab" ]; then | |
| echo "Cannot start ${UPSTART_JOB} for APP_KEY = ${APP_KEY}." | |
| exit 1 | |
| fi | |
| set -e | |
| LABEL=release | |
| REPO_ADDR=us-docker.pkg.dev/chromeos-partner-moblab/satlab | |
| if [ -e /etc/lsb-release ]; then | |
| track=$(cat /etc/lsb-release | \ | |
| grep "CHROMEOS_RELEASE_TRACK" | \ | |
| awk -F = '{ print $2 }') | |
| case $track in | |
| beta-channel) | |
| LABEL=beta | |
| ;; | |
| testimage-channel | dev-channel | developer-build ) | |
| LABEL=autopush | |
| if [ -e /dev/disk/by-label/SATLAB-DEV ] ; then | |
| mkdir -p /usr/local/tmp/satlab-dev | |
| umount /usr/local/tmp/satlab-dev || true | |
| mount "$(readlink -f /dev/disk/by-label/SATLAB-DEV)" \ | |
| /usr/local/tmp/satlab-dev || true | |
| LABEL=$(cat /usr/local/tmp/satlab-dev/dev-remote-access-label || echo autopush) | |
| REPO_ADDR=$(cat /usr/local/tmp/satlab-dev/dev-remote-access-repo || echo "us-docker.pkg.dev/chromeos-partner-moblab/satlab") | |
| fi | |
| ;; | |
| esac | |
| fi | |
| SSH_PORT=22 | |
| case $track in | |
| testimage-channel ) | |
| SSH_PORT=2223 | |
| ;; | |
| esac | |
| reps=0 | |
| while [ ${reps} -lt 100 ] && ! docker info ; do | |
| : $((reps += 1)) | |
| sleep 1 | |
| done | |
| # On boot get rid of any prior containers and make sure we have the latest | |
| # satlab_remote_access container. | |
| docker stop satlab_remote_access || true | |
| docker rm satlab_remote_access || true | |
| docker pull "${REPO_ADDR}/satlab_remote_access:${LABEL}" | |
| DOCKERD_ENV=/var/docker/certs/.env | |
| if [ -f "${DOCKERD_ENV}" ]; then | |
| # partition has a noexec flag, so source won't work | |
| while IFS='=' read -r key value; do | |
| export "$key"="$value" | |
| done < "${DOCKERD_ENV}" | |
| fi | |
| DOCKER_TLS_ARGS="" | |
| if [ -n "${DOCKER_CERT_PATH}" ]; then | |
| DOCKER_TLS_ARGS="-v docker_tls:${DOCKER_CERT_PATH}:ro \ | |
| -v "${DOCKERD_ENV}":/etc/profile.d/tls.env \ | |
| -e DOCKER_CERT_PATH=${DOCKER_CERT_PATH} \ | |
| -e DOCKER_TLS_VERIFY=${DOCKER_TLS_VERIFY} \ | |
| -e DOCKER_HOST=${DOCKER_HOST}" | |
| fi | |
| docker run -ti -d -v logs:/var/log/satlab \ | |
| -v /var/log/bootup:/var/log/bootup \ | |
| -v /var/run/docker.sock:/var/run/docker.sock \ | |
| -v /etc/lsb-release:/etc/lsb-release \ | |
| -v satlab_keys:/home/satlab/keys \ | |
| -v rpm_keys:/home/satlab/rpm_keys \ | |
| -v cache_server:/home/satlab/cache_server \ | |
| -v leases:/leases:ro \ | |
| -v shared:/home/satlab/shared \ | |
| --name satlab_remote_access \ | |
| -e PUBLIC_KEY_FILE=/testing_rsa.pub \ | |
| -e PUID=246 \ | |
| -e PGID=246 \ | |
| -e TZ=Etc/UTC \ | |
| -e USER_NAME=moblab \ | |
| -e DOCKER_MODS=linuxserver/mods:openssh-server-ssh-tunnel \ | |
| -e SUDO_ACCESS=true \ | |
| -p ${SSH_PORT}:2222 \ | |
| --dns 192.168.100.51 \ | |
| --add-host dockerhost:172.17.0.1 \ | |
| ${DOCKER_TLS_ARGS} \ | |
| "${REPO_ADDR}/satlab_remote_access:${LABEL}" | |
| end script |