blob: 1fcf950fca5eaa2c6bc7ef9e4743eda99e56c994 [file]
# 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.
version: "3"
services:
##############################################################################conf-creator
conf_creator:
container_name: conf-creator
image: ${SFP_REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab-for-partners}/conf_creator:${CONF_CREATOR:-release}
environment:
- DOCKER_GCS_IMAGE_STORAGE_SERVER=${GCS_IMAGE_BUCKET:-chromeos-image-archive}
labels:
- "skip.while.pruning.docker.system=yes"
volumes:
- nginx_configs:/mnt/conf/nginx:rw
##############################################################################drone
drone:
container_name: drone
image: ${SFP_REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab-for-partners}/drone:${SATLAB_DRONE:-release}
environment:
- ADB_CONNECTION_PORT=5555
- DOCKER_DRONE_QUEEN_SERVICE=drone-queen-prod.appspot.com
- DOCKER_DRONE_SWARMING_SERVER_URL=https://chromeos-swarming.appspot.com
- DOCKER_DRONE_ADMIN_SERVICE=chromeos-skylab-bot-fleet.appspot.com
- DOCKER_DRONE_INVENTORY_ENVIRONMENT=prod
- DOCKER_DRONE_AGENT_DUT_CAPACITY=${DRONE_AGENT_DUT_CAPACITY:-10}
- DOCKER_DRONE_INVENTORY_SERVICE=cros-lab-inventory.appspot.com
- DOCKER_DRONE_UFS_SERVICE=ufs.api.cr.dev
- DOCKER_DRONE_AGENT_HIVE=${DRONE_HOSTNAME:-satlab-drone}
- DOCKER_DRONE_LABPACK_DIR=/usr/local/labpack
- DOCKER_DRONE_CACHESERVER_IP=192.168.100.1
- DOCKER_DRONE_SUBNET=192.168.231.0/24
- SERVOD_CONTAINER_LABEL=${SERVOD_CONTAINER_LABEL:-release}
- DOCKER_SERVOD_DEBUG_MODE=0
- DOCKER_DEFAULT_NETWORK=default_satlab
- DOCKER_DRONE_SERVER_NAME=${SATLAB_HOST_IP:-satlab-drone}
- DOCKER_DNS_SERVER=192.168.100.51
- DOCKER_DRONE_PRIVATE_SSH_KEYS_PATH=/creds/ssh_keys/partner_testing_rsa
- DOCKER_DRONE_AGENT_BOT_PREFIX=${BOT_PREFIX:-crossk-}
- DOCKER_DRONE_AGENT_TSMON_CREDENTIAL_PATH=${TSMON_CREDENTIAL_PATH:-}
- DOCKER_DRONE_AGENT_TSMON_ENDPOINT=${TSMON_END_POINT:-}
- DOCKER_SHIVAS_NAMESPACE=${UFS_NAMESPACE:-os}
- DOCKER_GCS_IMAGE_STORAGE_SERVER=${GCS_IMAGE_BUCKET:-}
- DOCKER_DRONE_RECOVERY_VERSIONS_DIR=/creds/service_accounts/recovery_versions/
- DOCKER_CERT_PATH=${DOCKER_CERT_PATH:-}
- DOCKER_DRONE_CERT_PATH=${DOCKER_DRONE_CERT_PATH:-}
- DOCKER_HOST=${DOCKER_HOST:-}
- DOCKER_TLS_VERIFY=${DOCKER_TLS_VERIFY:-}
- DOCKER_RPM_PASSWORD=${DOCKER_RPM_PASSWORD:-/creds/rpm/password.json}
privileged: true
hostname: ${DRONE_HOSTNAME:-satlab-drone}
restart: always
volumes:
- ssp:/usr/local/autotest/containers/ssp_volume:rw
- satlab_keys:/creds/service_accounts:rw
- rpm_keys:/creds/rpm:ro
- servod_profile:/var/servod/profile/:rw
- containers:/var/lib/containers:rw
- partner_testing_rsa:/creds/ssh_keys:rw
- docker_tls:${DOCKER_COMPOSE_CERT_PATH}:ro
- /dev:/dev
# TODO (prasadv): Make static ip addresses higher numbers
# so that the lower number are available for dhcp to assign it
# to dynamically created containers such as servod container
networks:
satlab:
ipv4_address: 192.168.100.10
dns:
- 192.168.100.51
depends_on:
- dns
- partner_testing_rsa
- labservice
- passport
##############################################################################dns
dns:
container_name: dns
image: ${REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab}/satlab-dns:${DNS:-release}
restart: unless-stopped
volumes:
- logs:/var/log/
- dut_hosts:/etc/dut_hosts:rw
networks:
satlab:
ipv4_address: 192.168.100.51
##############################################################################downloader
downloader:
container_name: downloader
image: ${SFP_REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab-for-partners}/downloader:${DOWNLOADER:-release}
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
- images:/home/chromeos-test/images
- satlab_keys:/creds/service_accounts
command:
[
'--credential-file',
'/creds/service_accounts/pubsub-key-do-not-delete.json',
'--address',
':8887',
'--cache-server-url',
'http://192.168.100.3:8082',
'--android-build',
'https://androidbuild-pa.googleapis.com/v4',
'--auth-scopes',
'https://www.googleapis.com/auth/androidbuild.internal,https://www.googleapis.com/auth/devstorage.read_only'
]
networks:
satlab:
ipv4_address: 192.168.100.2
dns:
- 192.168.100.51
depends_on:
- dns
##############################################################################ngix
nginx:
container_name: nginx
image: ${SFP_REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab-for-partners}/nginx:${NGINX:-release}
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock:rw
- nginx_logs:/var/log/nginx
- cache:/var/cache/nginx
- nginx_configs:/mnt/conf/nginx:ro
ports:
- "8082:8082"
command:
[
'nginx',
'-g',
'daemon off;',
'-c',
'/mnt/conf/nginx/nginx.conf'
]
networks:
satlab:
ipv4_address: 192.168.100.3
dns:
- 192.168.100.51
extra_hosts:
- "cacheserver:192.168.100.1"
depends_on:
- conf_creator
- dns
- downloader
##############################################################################openssh_server
openssh_server:
container_name: openssh_server
image: ${SFP_REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab-for-partners}/openssh_server:${OPENSSH_SERVER:-release}
network_mode: host
cap_add:
- NET_ADMIN
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- SUDO_ACCESS=false
- USER_NAME=chromeos-test
ports:
- "2222:2222"
dns:
- 192.168.100.51
##############################################################################dut_key
partner_testing_rsa:
container_name: partner_testing_rsa
image: us-docker.pkg.dev/chromeos-partner-moblab/satlab-for-partners/partner_testing_rsa:${PARTNER_TESTING_RSA:-release}
labels:
- "skip.while.pruning.docker.system=yes"
volumes:
- partner_testing_rsa:/creds/ssh_keys:rw
##############################################################################rpc_server
satlab_rpcserver:
container_name: satlab_rpcserver
image: ${REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab}/satlab-rpcserver:${SATLAB_RPCSERVER:-release}
hostname: satlab-rpcserver
restart: unless-stopped
networks:
satlab:
ipv4_address: 192.168.100.4
dns:
- 192.168.100.51
ports:
- "6003:6003"
environment:
- PUID=246
- PGID=246
- TZ=Etc/UTC
- SUDO_ACCESS=true
- USER_NAME=moblab
- SERVOD_CONTAINER_LABEL=${SERVOD_CONTAINER_LABEL:-release}
- DOCKER_MODS=linuxserver/mods:openssh-server-ssh-tunnel
- GCS_IMAGE_BUCKET=${GCS_IMAGE_BUCKET:-}
# gcs_partner_bucket is same as gcs_image_bucket for all partners
# These buckets differ only for internal users
- GCS_PARTNER_BUCKET=${GCS_IMAGE_BUCKET:-}
- SERVICE_ACCOUNT_KEY_PATH=/home/satlab/keys/pubsub-key-do-not-delete.json
- UFS_NAMESPACE=${UFS_NAMESPACE:-os}
- UFS_ZONE=${UFS_ZONE:-}
- SERIVCE_ACCOUNT=${SERIVCE_ACCOUNT:-}
- CTP_BUILDER_BUCKET=${CTP_BUILDER_BUCKET:-}
- DEPLOY_BUILDER_BUCKET=${DEPLOY_BUILDER_BUCKET:-}
- SATLAB_RPCSERVER_LOGFILE=${SATLAB_RPCSERVER_LOGFILE:-/var/log/satlab/satlab_rpcserver.log}
- BOTO_PATH=/home/satlab/keys/boto_config
- BOT_PREFIX=${BOT_PREFIX:-}
- TEST_RUNNER_SWARMING_POOL=${TEST_RUNNER_SWARMING_POOL:-}
- CTP_SWARMING_POOL=${CTP_SWARMING_POOL:-}
- CPCON_ACCOUNT_ID=${CPCON_ACCOUNT_ID:-}
- DOCKER_CERT_PATH=${DOCKER_CERT_PATH:-}
- DOCKER_HOST=${DOCKER_HOST:-}
- DOCKER_TLS_VERIFY=${DOCKER_TLS_VERIFY:-}
- ACCOUNT_ID=${ACCOUNT_ID:-}
- ATS_ENABLED=${ATS_ENABLED:-false}
volumes:
- logs:/var/log/satlab
- /var/run/docker.sock:/var/run/docker.sock:rw
- /var/log/bootup:/var/log/bootup
- satlab_keys:/home/satlab/keys
- leases:/leases:ro
- docker_tls:${DOCKER_COMPOSE_CERT_PATH}:ro
extra_hosts:
- "dockerhost:192.168.100.1"
##############################################################################envoy-proxy
envoy-proxy:
container_name: envoy-proxy
image: ${REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab}/envoy-proxy:${ENVOY_PROXY:-release}
user: moblab
restart: unless-stopped
environment:
- ENVOY_UID=0
hostname: envoy-proxy
volumes:
- logs:/var/log/satlab
networks:
satlab:
ipv4_address: 192.168.100.5
ports:
- "80:6001"
- "6011:6011"
###########################################################################logrotate
logrotate:
container_name: logrotate
image: ${REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab}/logrotate:${LOGROTATE:-release}
environment:
# Rotate logs regardless of the extension.
- LOGS_DIRECTORIES=/var/log/satlab
# The file endings that we want to watch at (filtering).
- LOG_FILE_ENDINGS=log
# The number of rotations.
# Further rotations will delete old logfiles.
- LOGROTATE_COPIES=5
# Moves the rotated log files.
# Default value is copytruncate
# - LOGROTATE_MODE=
# Rotate log files that are 20M or over.
- LOGROTATE_SIZE=20M
# Rotate log files if they are older than 5 days.
- LOGROTATE_MAXAGE=5
# Cronjob scheduled once per day.
- LOGROTATE_INTERVAL=daily
# Naming of the rotated files
- LOGROTATE_DATEFORMAT=-%Y%m%d
# compress the rotated files
- LOGROTATE_COMPRESSION=compress
volumes:
- logs:/var/log/satlab
##############################################################################satlab-ui
satlab-ui:
container_name: satlab-ui
image: ${REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab}/satlab-ui:${SATLAB_UI:-release}
hostname: satlab-ui
restart: unless-stopped
networks:
satlab:
ipv4_address: 192.168.100.6
volumes:
- logs:/var/log/ui
depends_on:
- dns
- envoy-proxy
- satlab_rpcserver
###########################################################################opentelemetry-collector
opentelemetry-collector:
container_name: opentelemetry-collector
image: ${REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab}/opentelemetry-collector:${OPENTELEMETRY_COLLECTOR:-release}
environment:
- GOOGLE_APPLICATION_CREDENTIALS=/data/keys/pubsub-key-do-not-delete.json
- HOST_IDENTIFIER=${DRONE_HOSTNAME}
- SATLAB_VERSION=${BUILD_VERSION}
- OS_VERSION=${OS_VERSION}
- TRACK=${TRACK}
networks:
satlab:
ipv4_address: 192.168.100.7
dns:
- 192.168.100.51
volumes:
- /:/hostfs:ro
- /var/run/docker.sock:/var/run/docker.sock:rw
- satlab_keys:/data/keys
ports:
- "9000:9000"
###########################################################################bols
bols:
container_name: bols
image: ${REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab}/satlab-bols:${BOLS:-release}
restart: unless-stopped
environment:
- SERVOD_REGISTRY_URI=${SERVOD_REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/common-core}
- SERVOD_CONTAINER_LABEL=${SERVOD_CONTAINER_LABEL:-release}
- DOCKER_CERT_PATH=${DOCKER_CERT_PATH:-}
- DOCKER_HOST=${DOCKER_HOST:-}
- DOCKER_TLS_VERIFY=${DOCKER_TLS_VERIFY:-}
entrypoint: /usr/bin/bols_satlab
command:
[
'server',
'-port',
'9100'
]
networks:
satlab:
ipv4_address: 192.168.100.8
dns:
- 192.168.100.51
volumes:
- logs:/tmp/bols
- /var/run/docker.sock:/var/run/docker.sock:rw
- satlab_keys:/home/satlab/keys
- leases:/leases:ro
- docker_tls:${DOCKER_COMPOSE_CERT_PATH}:ro
ports:
- "9100:9100"
###########################################################################dualconduit
dualconduit:
container_name: dualconduit
image: ${SFP_REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab-for-partners}/dualconduit:${DUALCONDUIT:-release}
restart: unless-stopped
networks:
satlab:
ipv4_address: 192.168.100.11
dns:
- 192.168.100.51
volumes:
- satlab_keys:/creds/service_accounts:rw
command:
[
'--acceptor_target=wss://dcon-acceptor.testing.endpoints.${GCP_PROJECT}.cloud.goog',
'--debug',
'-sa_key_file=/creds/service_accounts/skylab-drone.json',
'--forward_address=0.0.0.0',
'--use_sa_token',
'--keep_alive_tick_period=20s',
'-L', '8000:mtt:8000',
'-L', '8006:mtt:8006',
'-L', '8008:mtt:8008',
'-L', '7031:mtt:7031',
'-L', '8081:mtt:8081'
]
###########################################################################ats
ats:
container_name: ats
image: ${ATS_REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab-for-partners}/ats:${ATS:-release}
hostname: ${DRONE_HOSTNAME}
restart: unless-stopped
privileged: true
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
volumes:
- /dev:/dev
- satlab_keys:/creds/service_accounts:rw
devices:
- /dev/fuse:/dev/fuse
networks:
satlab:
ipv4_address: 192.168.100.12
dns:
- 192.168.100.51
environment:
- CLOUD_FILE_TRANSFER_BUCKET=${CLOUD_FILE_TRANSFER_BUCKET}
- GCP_PROJECT=${GCP_PROJECT}
- UFS_NAMESPACE=${UFS_NAMESPACE:-os}
depends_on:
- dualconduit
- dns
- labservice
- passport
###########################################################################labservice
labservice:
container_name: labservice
image: ${REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab}/labservice:${LABSERVICE:-release}
command:
- -addr
- 0.0.0.0:1485
- -service-account-json
- /creds/service_accounts/skylab-drone.json
- -preferred-caching-services
- http://192.168.100.1:8082
- -ufs-service
- ufs.api.cr.dev
- -version-server-addr
- chromeos-skylab-bot-fleet.appspot.com
- -recovery-versions-dir
- /creds/service_accounts/recovery_versions/
environment:
GOOGLE_APPLICATION_CREDENTIALS: /creds/service_accounts/skylab-drone.json
networks:
satlab:
ipv4_address: 192.168.100.13
ports:
- "1485:1485"
dns:
- 192.168.100.51
volumes:
- satlab_keys:/creds/service_accounts:rw
depends_on:
- dns
###########################################################################drone-proxy
drone-proxy:
container_name: drone-proxy
image: ${REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab}/satlab-helper:${SATLAB_HELPER:-release}
network_mode: "service:drone"
restart: always
command: "socat TCP4-LISTEN:1485,fork TCP4:labservice:1485"
depends_on:
- drone
- labservice
###########################################################################passport
passport:
container_name: passport
image: ${SFP_REGISTRY_URI:-us-docker.pkg.dev/chromeos-partner-moblab/satlab-for-partners}/passport:${PASSPORT:-release}
restart: unless-stopped
networks:
satlab:
ipv4_address: 192.168.100.14
ports:
- "8300:8300"
privileged: true
dns:
- 192.168.100.51
volumes:
- /dev:/dev
depends_on:
- dns
##############################################################################volumes
volumes:
logs: {}
leases: {}
images: {}
cache: {}
dut_hosts: {}
nginx_configs: {}
servod_profile: {}
rpm_keys:
external: True
satlab_keys:
external: True
ssp: {}
containers: {}
nginx_logs: {}
partner_testing_rsa: {}
docker_tls:
external: True
bridge_ssh: {}
##############################################################################networks
networks:
satlab:
ipam:
driver: default
config:
- subnet: "192.168.100.0/24"