Skip to content
Docker configuration and documentation for hosting https://lava.therub.org
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dispatcher-docker
dispatcher-overlay/opt/mrv-pdu
documentation
ser2net
server-overlay
squid
.gitignore
Makefile
README.md
docker-compose.yml

README.md

Using LAVA with Docker

This is the repository that stores the configuration for lava.therub.org. The goals for this personal lab are:

  • kernelCI participation
  • lavafed participation
  • Best practice reference for deploying and managing LAVA
  • Personal enjoyment and learning

LAVA board farm with embedded ARM boards mounted in rack

Lab Description

This lab is deployed using Docker and docker-compose on a single physical LAVA server+dispatcher running on the same host, with several physical and virtual devices attached for testing. Over time, it may scale to multiple LAVA hosts and more boards.

Additional information about LAVA, Docker, and this lab can be found at Running LAVA with Docker Compose and Setting up a board farm with LAVA and Docker.

Configuration

The configuration is specific to the boards in this lab. However, the approach to running LAVA may be useful as a reference.

The following specific containers are used in this deployment:

database: Postgresql container for LAVA server. Database stored in a docker volume.

squid: HTTP caching container. Cache stored in a docker volume.

server: LAVA server. job-output stored in a docker volume. Configuration files mounted in from this repository.

dispatcher: LAVA dispatcher. Requires escalated privileges for QEMU jobs as well as Docker jobs. Docker volumes mounted in for tftpd and nfsd.

ser2net: Serial port to telnet interface. Requires exclusive access to the serial devices.

tftpd-hpa: TFTPd container. Uses a docker volume which is also mounted into the dispatcher.

nfsd: NFSd container. Uses a docker volume which is also mounted into the dispatcher.

Usage

docker-compose up -d: Bring up the lab

docker-compose down: Bring down the lab

Upgrades

  1. Stop containers.

  2. Back up pgsql from its docker volume

    sudo tar cvzf $HOME/lava-server-pgdata-$(date +%Y%m%d).tgz /var/lib/docker/volumes/lava-server-pgdata

  3. Change e.g. lavasoftware/lava-server:2019.01 to lavasoftware/lava-server:2019.03 and lavasoftware/lava-dispatcher:2019.01 to lavasoftware/lava-dispatcher:2019.03 in docker-compose.yml.

  4. Change the FROM line if any containers are being rebuilt, such as ./dispatcher-docker/Dockerfile

  5. Start containers.

Useful Commands

Spy on the serial port:

docker-compose exec dispatcher telnet ser2net 5001 # beaglebone-black-01
docker-compose exec dispatcher telnet ser2net 5002 # x15-01

View logs:

docker-compose logs -f # all containers
docker-compose logs -f server # only the server
You can’t perform that action at this time.