Testbed parameters#
Per-testbed configuration parameters for Vagrant, FABRIC, and Chameleon.
Vagrant (kind: vagrant)#
sites:
- kind: vagrant
backend: libvirt # Optional — libvirt (default) or virtualbox
box: generic/debian11 # Optional — base VM image (default: generic/debian11)
user: root # Optional — SSH user (default: root)
name_prefix: enos # Optional — prefix for VM names (default: enos)
config_extra: "" # Optional — extra Vagrant DSL config for all VMs
resources:
machines:
- labels: [compute]
flavour: small
number: 1
backend: virtualbox # Optional — per-machine backend override
box: generic/debian11 # Optional — per-machine box override
user: root # Optional — per-machine SSH user override
name_prefix: myvm # Optional — per-machine name prefix override
config_extra_vm: "" # Optional — extra Vagrant DSL config for this VM only
networks:
- cidr: 172.16.42.0/16
labels: [net1]
Site-level parameters#
Key |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
string |
No |
|
VM hypervisor: |
|
string |
No |
|
Base Vagrant box (OS image) for all machines |
|
string |
No |
|
SSH user for all machines |
|
string |
No |
|
Prefix applied to all VM names |
|
string |
No |
— |
Extra configuration in Vagrant DSL applied to all VMs |
Machine parameters#
Key |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
list[string] |
Yes |
— |
One or more labels. Must match |
|
string |
Yes* |
— |
Predefined VM size. See flavour table below. *Required unless |
|
object |
Yes* |
— |
Custom resource profile: |
|
integer |
No |
|
Number of VMs to provision with these labels |
|
string |
No |
site-level default |
Per-machine backend override: |
|
string |
No |
site-level default |
Per-machine Vagrant box override |
|
string |
No |
site-level default |
Per-machine SSH user override |
|
string |
No |
site-level default |
Per-machine VM name prefix override |
|
string |
No |
— |
Extra Vagrant DSL config applied to this VM only |
Vagrant machine flavours#
Flavour |
vCPUs |
RAM |
|---|---|---|
|
1 |
512 MB |
|
1 |
1024 MB |
|
2 |
2048 MB |
|
3 |
3072 MB |
|
4 |
4096 MB |
|
6 |
6144 MB |
Network parameters#
Key |
Type |
Required |
Description |
|---|---|---|---|
|
string |
Yes |
Subnet in CIDR notation (e.g. |
|
list[string] |
Yes |
Labels for this network |
FABRIC (kind: fabric)#
sites:
- kind: fabric
rc_file: ~/fabric-rc.sh # Required
walltime: "24:00:00" # Optional — HH:MM:SS format
site: UCSD # Optional — default site for all resources
image: default_rocky_8 # Optional — default OS image
name_prefix: fabric # Optional — prefix for resource names
resources:
machines:
- labels: [compute]
flavour: small
number: 1
site: UCSD # Optional — per-machine site override
image: default_rocky_8 # Optional — per-machine image override
networks:
- labels: [net1]
kind: FABNetv4
site: UCSD
Site-level parameters#
Key |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
string |
Yes |
— |
Path to the FABRIC RC credentials file downloaded from the portal |
|
string |
No |
|
Lease duration in |
|
string |
No |
|
Default FABRIC site for all resources in this site entry |
|
string |
No |
|
Default OS image for all machines |
|
string |
No |
|
Prefix applied to all provisioned resource names |
Machine parameters#
Key |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
list[string] |
Yes |
— |
One or more labels to assign |
|
string |
Yes* |
— |
Predefined resource size. See flavour table below. *Required unless |
|
object |
Yes* |
— |
Custom resource profile: |
|
integer |
No |
|
Number of nodes to provision |
|
string |
No |
site-level default |
Per-machine site override |
|
string |
No |
site-level default |
Per-machine OS image override |
|
list |
No |
— |
GPU components to attach. Each item: |
|
list |
No |
— |
Storage components to attach (NVME or NAS) |
FABRIC machine flavours#
Flavour |
vCPUs |
RAM |
|---|---|---|
|
1 |
0.5 GB |
|
1 |
1 GB |
|
2 |
2 GB |
|
2 |
3 GB |
|
4 |
4 GB |
|
6 |
6 GB |
Network parameters#
All network entries require labels and kind. Additional required fields depend on the network type.
Key |
Type |
Required |
Description |
|---|---|---|---|
|
list[string] |
Yes |
Labels for this network |
|
string |
Yes |
Network type. See network types table below. |
|
string |
See table |
FABRIC site where the network is created |
|
string |
L2STS only |
First site for L2STS spanning network |
|
string |
L2STS only |
Second site for L2STS spanning network |
|
string |
No |
Subnet in CIDR notation (L2Bridge and L2STS only) |
Network types#
Kind |
Description |
|
Required permission |
|---|---|---|---|
|
IPv4 network (private) |
Yes |
— |
|
IPv6 network (private) |
Yes |
— |
|
IPv4 network with public internet access |
Yes |
|
|
IPv6 network with public internet access |
Yes |
|
|
Layer 2 bridge network |
Yes |
— |
|
Layer 2 network spanning two sites ( |
No |
— |
Use FABNetv4Ext or FABNetv6Ext for nodes that require public IP addresses (e.g. HTCondor submit and central manager nodes in multi-testbed deployments).
Permission requirements#
Some features require a permission tag to be enabled on your FABRIC project. Kiso checks these during kiso up.
Feature |
Required permission |
|---|---|
Machines spanning multiple FABRIC sites |
|
|
|
|
|
GPU components ( |
|
NVME storage (P4510 model) |
|
NVME storage (other models) |
|
NAS storage |
|
ConnectX-5 SmartNIC |
|
ConnectX-6 SmartNIC |
|
Chameleon#
Kiso supports two Chameleon site types: chameleon (bare metal) and chameleon-edge (edge devices).
Chameleon bare metal (kind: chameleon)#
sites:
- kind: chameleon
rc_file: ~/openrc-chameleon.sh # Required
key_name: my-keypair # Required
lease_name: my-lease # Optional (default: enos-lease)
walltime: "02:00:00" # Optional (default: 02:00:00)
image: CC-Ubuntu22.04 # Optional (default: CC-Ubuntu18.04)
user: cc # Optional (default: cc)
resources:
machines:
- labels: [compute]
flavour: baremetal
number: 1
image: CC-Ubuntu22.04 # Optional — per-machine override
user: cc # Optional — per-machine override
networks:
- sharednet1
Site-level parameters:
Key |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
string |
Yes |
— |
Path to OpenRC credentials file (v3) |
|
string |
Yes |
— |
Name of an SSH keypair registered in your Chameleon project |
|
string |
No |
|
Name for the Chameleon reservation lease |
|
string |
No |
|
Lease duration in |
|
string |
No |
|
Default OS image for all machines |
|
string |
No |
|
Default SSH user for all machines |
|
boolean |
No |
|
Whether to configure networking |
|
string |
No |
|
OpenStack network name |
|
string |
No |
— |
OpenStack subnet name |
|
list[string] |
No |
— |
DNS servers |
|
boolean |
No |
|
Provision a gateway node |
|
string |
No |
— |
Prefix for resource names |
Machine parameters:
Key |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
list[string] |
Yes |
— |
Labels to assign |
|
string |
Yes |
— |
OpenStack flavour name (e.g. |
|
integer |
Yes |
— |
Number of nodes |
|
string |
No |
site default |
Per-machine OS image override |
|
string |
No |
site default |
Per-machine SSH user override |
Network parameters:
Networks are specified as a list of OpenStack network name strings:
networks:
- sharednet1
Chameleon Edge (kind: chameleon-edge)#
sites:
- kind: chameleon-edge
rc_file: ~/openrc-chameleon.sh # Required
lease_name: my-edge-lease # Optional (default: EnOSlib)
walltime: "02:00" # Optional (default: 02:00)
resources:
machines:
# DeviceCluster — select devices by board/model name
- labels: [edge]
machine_name: raspberrypi4
count: 2
device_model: rpi4b-8gb # Optional
container:
name: my-container
image: ubuntu:22.04
# Device — select a specific device by name
- labels: [specific-device]
device_name: iot-jetson04
container:
name: jetson-container
image: nvcr.io/nvidia/l4t-base:r32.6.1
networks:
- labels: [net1]
id: containernet1
type: prod
site: CHI@Edge
Site-level parameters:
Key |
Type |
Required |
Default |
Description |
|---|---|---|---|---|
|
string |
Yes |
— |
Path to OpenRC credentials file |
|
string |
No |
|
Name for the edge lease |
|
string |
No |
|
Lease duration in |
Machine types:
DeviceCluster — selects devices by board type:
Key |
Type |
Required |
Description |
|---|---|---|---|
|
list[string] |
Yes |
Labels to assign |
|
string |
Yes |
Board/machine type name |
|
integer |
Yes |
Number of devices to provision |
|
string |
No |
Specific device model filter |
|
object |
No |
Container to deploy on the devices |
Device — selects a specific named device:
Key |
Type |
Required |
Description |
|---|---|---|---|
|
list[string] |
Yes |
Labels to assign |
|
string |
Yes |
Specific device hostname (e.g. |
|
string |
No |
Device model |
|
object |
No |
Container to deploy |
Container parameters:
Key |
Type |
Required |
Description |
|---|---|---|---|
|
string |
Yes |
Container name |
|
string |
Yes |
Container image |
|
list[string] |
No |
Ports to expose (e.g. |
|
boolean |
No |
Whether to start the container immediately |
|
integer |
No |
Seconds to wait for container to start |
|
list[string] |
No |
Device profiles to apply (e.g. GPU access) |
Label naming rules#
Applies to all testbeds:
Allowed characters:
a-z,A-Z,0-9,.,_,-Must not start with
kiso.(reserved prefix)Labels are case-sensitive
A machine can have multiple labels
See also#
Config file reference — all configuration keys