Configuration File

Introduction

To use TFROBOT, the user needs to create a YAML or a JSON configuration file that will contain the mass deployment information, such as the groups information, number of VMs to deploy how, the compute, storage and network resources needed, as well as the user's credentials, such as the SSH public key, the network (main, test, dev, qa) and the TFChain mnemonics.

Examples

We present here a configuration file example that deploys 3 nodes with 2 vcores, 16GB of RAM, 150GB of SSD, 50GB of HDD and a Mycelium address. The same deployment is shown with a YAML file and with a JSON file. Parsing is based on file extension, TFROBOT will use JSON format if the file has a JSON extension and YAML format otherwise.

You can use this example for guidance, and make sure to replace placeholders and adapt the groups based on your actual project details. To the minimum, ssh_key1 should be replaced by the user SSH public key and example-mnemonic should be replaced by the user mnemonics.

Note that if no IPs are specified as true (IPv4 or IPv6), an Yggdrasil IP address will automatically be assigned to the VM, as at least one IP should be set to allow an SSH connection to the VM.

YAML Example

node_groups:
  - name: group_a
    nodes_count: 3 # amount of nodes to be found
    free_cpu: 2 # number of logical cores
    free_mru: 16 # amount of memory in GB
    free_ssd: 150 # amount of ssd storage in GB
    free_hdd: 50 # amount of hdd storage in GB
    dedicated: false # are nodes dedicated
    public_ip4: false # should the nodes have free ip v4
    public_ip6: false # should the nodes have free ip v6
    certified: false # should the nodes be certified(if false the nodes could be certified or DIY) 
    region: "europe" # region could be the name of the continents the nodes are located in (africa, americas, antarctic, antarctic ocean, asia, europe, oceania, polar)
vms:
  - name: examplevm
    vms_count: 5 # amount of vms with the same configurations
    node_group: group_a # the name of the predefined group of nodes
    cpu: 1 # number of logical cores, min 1, max 32
    mem: 2 # amount of memory in GB, min 0.25 GB, max 256 GB
    ssd: # list of ssd storage needed to be mounted to the vm
      - size: 15 # size in GB, min 15 GB
        mount_point: /mnt/ssd
    volume: # list of volume storage needed to be mounted to the vm
      - size: 15 # size in GB, min 15 GB
        mount_point: /mnt/vol
    public_ip4: false
    public_ip6: false
    mycelium_ip: true
    flist: https://hub.grid.tf/tf-official-apps/base:latest.flist
    entry_point: /sbin/zinit init
    root_size: 0 # root size in GB, 0 for default root size, max 10TB
    ssh_key: example1 # the name of the predefined ssh key
    env_vars: # env vars are passed to the newly created vms
      user: user1
      pwd: 1234
    wireguard: false

ssh_keys: # map of ssh keys with key=name and value=the actual ssh key
  example1: ssh_key1
mnemonic: example-mnemonic # mnemonic of the user
network: dev # eg: main, test, qa, dev
max_retries: 5 # max retries for each node group (default 5)

JSON Example

{
  "node_groups": [
    {
      "name": "group_a",
      "nodes_count": 3,
      "free_cpu": 2,
      "free_mru": 16,
      "free_ssd": 100,
      "free_hdd": 50,
      "dedicated": false,
      "public_ip4": false,
      "public_ip6": false,
      "certified": false,
      "region": "europe"
    }
  ],
  "vms": [
    {
      "name": "examplevm123",
      "vms_count": 1,
      "node_group": "group_a",
      "cpu": 1,
      "mem": 2,
      "ssd": [
        {
          "size": 15,
          "mount_point": "/mnt/ssd"
        }
      ],
      "public_ip4": false,
      "public_ip6": false,
      "mycelium_ip": true,
      "flist": "https://hub.grid.tf/tf-official-apps/base:latest.flist",
      "entry_point": "/sbin/zinit init",
      "root_size": 0,
      "ssh_key": "example1",
      "env_vars": {
        "user": "user1",
        "pwd": "1234"
      },
      "wireguard": false
    }
  ],
  "ssh_keys": {
    "example1": "ssh_key1"
  },
  "mnemonic": "example-mnemonic",
  "network": "dev",
  "max_retries": 5
}

Create a Configuration File

You can start with the example above and adjust for your specific deployment needs.

  • Create directory
    mkdir tfrobot_deployments && cd $_
    
  • Create configuration file and adjust with the provided example above
    nano config.yaml
    

Once you've set your configuration file, all that's left is to deploy on the TFGrid. Read the next section for more information on how to deploy with TFROBOT.

Last change: 2024-11-05