readme
This commit is contained in:
parent
0c4861fae5
commit
6132739a39
113
README.md
Normal file
113
README.md
Normal file
@ -0,0 +1,113 @@
|
||||
# Setting up a LAVA instance
|
||||
|
||||
This repository contains ansible scripts that help set up a LAVA instance on a Debian 9.4 (stretch) machine.
|
||||
|
||||
## Installation
|
||||
```bash
|
||||
# Get the repository
|
||||
git clone http://git.k-space.ee/madislutter/ansible-lava.git
|
||||
cd ansible-lava
|
||||
|
||||
# Put the IP address of your machine into the hosts file.
|
||||
vim hosts
|
||||
|
||||
# Run the lava-install playbook. This will install the necessary packages
|
||||
# from stretch-backports. Not using the stretch-backports would result in
|
||||
# installing a deprecated version. It will also configure the apache
|
||||
# server to serve the LAVA website.
|
||||
ansible-playbook lava-install.yml
|
||||
|
||||
# Create a superuser account with the help of lava-create-user playbook
|
||||
ansible-playbook lava-create-user.yml
|
||||
```
|
||||
* The next commands need to be run in the target machine.
|
||||
* If your server doesn't have HTTPS then you need to add these two lines into /etc/lava-server/settings.conf.
|
||||
```
|
||||
"CSRF_COOKIE_SECURE": false,
|
||||
"SESSION_COOKIE_SECURE": false
|
||||
```
|
||||
After editing the file, restart the django service for the changes to take effect.
|
||||
```bash
|
||||
service lava-server-gunicorn restart
|
||||
```
|
||||
* Now log in through the web interface and create a token at http://\<ip-address>/api/tokens/.
|
||||
|
||||
```bash
|
||||
lava-tool auth-add http://<username>@<ip-address>/
|
||||
# Paste the token you created
|
||||
|
||||
# The next section will create a shortcut for lava-tool so that we
|
||||
# wouldn't have to type out the server address for each command.
|
||||
lava-tool auth-config --default-user http://<username>@<ip-address>/RPC2/
|
||||
lava-tool auth-config --endpoint-shortcut local http://<username>@<ip-address>/RPC2/
|
||||
```
|
||||
## Testing the setup, adding devices
|
||||
In order to test the setup, let's add a qemu device and a standard test job that should run if everything is set up correctly. The following commands should be run inside the target machine.
|
||||
```bash
|
||||
# Add the qemu device type
|
||||
lava-server manage device-types add qemu
|
||||
# Add the device itself. The last argument is the device name.
|
||||
lava-server manage devices add --device-type qemu --worker $(hostname -f) qemu01
|
||||
```
|
||||
* Test jobs can only be submitted to devices that have a device dictionary. So we need to add a device dictionary to the created device. Create a file with the following contents and name it qemu-dict.jinja2.
|
||||
```jinja2
|
||||
{% extends 'qemu.jinja2' %}
|
||||
{% set mac_addr = '52:54:00:12:34:59' %}
|
||||
{% set memory = '1024' %}
|
||||
```
|
||||
* Now add the device dictionary to the device.
|
||||
```bash
|
||||
lava-tool device-dictionary --update /qemu-dict.jinja2 local qemu01
|
||||
```
|
||||
* Navigate to this address http://\<ip-address>/scheduler/jobsubmit and submit [this standard test job](https://validation.linaro.org/static/docs/v2/examples/test-jobs/qemu-amd64-standard-stretch.yaml).
|
||||
|
||||
If the job runs and succeeds then the setup is successful.
|
||||
|
||||
|
||||
## Debugging
|
||||
### supermin: failed to find a suitable kernel (host_cpu=x86_64)
|
||||
If the test job is not able to boot the device and the output contains this error then make sure you have a kernel installed in /boot directory.
|
||||
|
||||
### Could not access KVM kernel module
|
||||
If the job is not able to boot the device and the output contains:
|
||||
```
|
||||
Could not access KVM kernel module: No such file or directory
|
||||
failed to initialize KVM: No such file or directory
|
||||
Connection closed
|
||||
```
|
||||
then make sure your kernel has the kvm module loaded:
|
||||
```bash
|
||||
lsmod | grep kvm
|
||||
```
|
||||
Sometimes the module is loaded, but the module files themselves aren't mounted in `/lib/modules/$(uname -r)`. This is especially likely if you are running inside a virtual machine. Run this to see if there is a problem with finding the module files:
|
||||
```bash
|
||||
modprobe kvm
|
||||
```
|
||||
A simple solution to bypass the kvm problem is to disable kvm in the test job definition. Just add `no_kvm: true` as seen in [this test job](https://git.k-space.ee/madislutter/lava-tests/src/master/jobs/inline-pwd.yaml).
|
||||
|
||||
## Noteworthy
|
||||
|
||||
### Creating a superuser account
|
||||
If you try to create a superuser account with this command:
|
||||
```bash
|
||||
lava-server manage users add --superuser
|
||||
```
|
||||
then be aware that users created like this don't actually get access to the Django admin area of the site at http://\<ip-address>/admin. A user gets access to that only if the account is created with these commands:
|
||||
```bash
|
||||
lava-server manage createsuperuser --username <username> --email <<e-mail>
|
||||
lava-server manage changepassword <username>
|
||||
```
|
||||
---
|
||||
### Use tmux for long-running processes
|
||||
Installing all the packages for the LAVA setup can take a long time. It's possible you'll get a broken pipe during the installation. For this reason it might make sense to SSH into the machine, start a tmux session there and install the necessary packages inside this session. If you get a broken pipe then you'll be able to reconnect to the machine and attach to the same tmux session.
|
||||
|
||||
If you installed the packages outside a tmux session and there was a configuration prompt and you then got a broken pipe then you'll need to do this:
|
||||
```bash
|
||||
# Find the dpkg job and kill it
|
||||
ps aux | grep dpkg
|
||||
kill <pid>
|
||||
|
||||
# Finish configuring the packages
|
||||
dpkg --configure -a
|
||||
```
|
||||
|
Loading…
Reference in New Issue
Block a user