Labs
Creating a Lab
To turn the current directory into a Koble lab:
koble lab init
or to create a new directory for the lab:
koble lab init --name newlab
To see more options, check out the manpage.
lab.yml
The lab config is stored in lab.yml,
in the root of the lab directory.
An example config could be:
authors:
- John Doe
created_at: 15-12-2021
driver:
  name: uml
koble_version: 0.0.1
machines:
  a:
    networks:
    - ar
- 
created_at - date in the format DD-MM-YYYY
 - 
koble_version - version of Koble that the lab was created with
 - 
description - a short description of the lab
 - 
authors - a list of lab authors
 - 
emails - a list of lab authors' email addresses
 - 
web - a list of URIs associated with the lab (e.g. git repo / documentation page)
 - 
machines - a map of lab machines. All machines in the lab must be declared in lab.yml.
 - 
networks - a map of lab networks. If a network is attached to a machine but does not have an entry in networks it will be a simple network with no external access, no set subnet / gateway etc.
 
machines:
  m1:
    networks:
    - ext
    hosthome: false
    hostlab: true
    depends_on:
    - m2
- 
networks - a list of network names to join machine to.
 - 
hosthome - whether to mount $HOME on the host to /hosthome in the virtual machine.
 - 
hostlab - whether to mount the lab directory on the host to /hostlab in the virtual machine. If this is false then startup scripts and machine directories won’t be available inside the VM.
 - 
depends_on - machines that need to finish booting before this machine starts.
 
networks:
  ext:
    external: true
    gateway: 10.16.55.254
    subnet: 10.16.55.0/24
- 
external - whether this machine should have external network access. If the host machine has internet access then setting external to true will give the VM internet access.
 - 
gateway - the gateway address to use for the network
 - 
subnet the subnet to use for the network
 
Lab Commands
You can perform some of the commands that can be used for single machines against a whole lab. These include:
- 
start
 - 
stop
 - 
remove
 - 
destroy
 
For example in a lab with machines a and b:
koble lab stop
Is equivalent to doing
koble stop a
koble stop b
Advanced Configuration
driver:
  name: uml
Additional configuration in lab.yml can be used to override global
Koble settings.
For example we can use the driver option to override the driver used for
the lab.
| You should only run trusted labs where you have read the code and configuration. Arbitrary code can be run using some of the overrides, such as a lab adding an additional terminal with a reverse shell in the command 😎 |