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 😎 |