Resource Definitions
Resource definitions are used to manage the types of cloud compute instances that Fuzzball can provision in response to users’ requests.
Administrators create resource definitions by filling in the appropriate information in the Admin UI, or using the appropriate CLI commands. Creating initial resource definitions is made easier by using the automatic workflow that populates values based on the initial configuration in the CloudFormation (CFN) template. But the manual workflow offers more fine-grained control to configure resource definitions according to specific requirements.
The instructions in this document are intended for cloud Fuzzball installations.
Allocating resources allows users to incur costs. For reference, see this EC2 pricing guide and the substrate pricing information on the Fuzzball AWS Marketplace listing. Admins should review pricing information and be aware of the potential implications of running workflows before configuring new resource definitions.
The Fuzzball Admin UI presents an option to automatically create an initial set of resource definitions based on the default values present in the CFN template during the installation procedure.
To use this feature, first navigate to the Admin UI URL for your Fuzzball cluster. (This URL can be
found at https://ui-admin.<domain>
) Now you can select the “Provision” option on the left. You
will be presented with a screen like the following, informing you that you don’t have any resource
definitions and asking if you’d like to create a default set.
If you don’t know how to access your admin console review the section on Accessing your Cluster.
Selecting the blue “Create Default Provision Definitions” option will cause Fuzzball to create resource definitions based on the default parameters in the CFN template during the deployment process.
If your newly created resource definitions are not immediately visible, try pressing the UI refresh button toward the upper right of the dashboard.
If you encounter an error when creating default resource definitions, you may need to edit the values provided during installation in the CFN template.
In this example, two new resource definitions labeled default_standard
and
default_advanced
are created.
If you want to review the initial resource definition configurations and potentially make adjustments, you can click the vertical ellipsis (kebob) menu to the right of a resource definition and inspect/change values like so:
Finally, you can also create new resource definitions in the UI from scratch by clicking on the blue “Add Resource Definition” button in the upper right of the dashboard view.
There are a large number of configuration parameters available. Creating a set of default resource definitions and inspecting the initial configurations can give you hints about the values that you should enter to configure your new resource definitions from scratch.
Resource definitions can be specified using the fuzzball admin definition
command group. Be sure
to create and log into your admin context before issuing these commands like so. You will need to
install the Fuzzball CLI binary to issue these commands.
$ fuzzball admin context create <context_name> <api_url>
$ fuzzball admin context login -u <admin_username> -p '<admin_password>'
If you don’t know how to access your admin console review the section on Accessing your Cluster.
Usage:
fuzzball admin definition [command]
Aliases:
definition, def
Available Commands:
create Create a new provision definition
delete Delete a definition by id
get Get details on a definition
list List definitions
setup Setup a new default definition
update Update a definition
The --help
option will give detailed up-to-date information about the usage of each of these
commands. For instance, fuzzball admin definition create --help
will give you information on
creating a resource definition via the CLI.
For convenience, information about managing resource definitions in the CLI with the available subcommands is summarized below.
The CLI--help
docs have the most up-to-date information regarding sub-commands.
Similar to the push-button workflow described in the web-UI documentation on this page, you can
automatically create an initial set of resource definitions based on the values entered in the CFN
template during the installation procedure using the CLI. This is accomplished via the setup
subcommand like so:
$ fuzzball admin definition setup
{
"definitions": [
{
"id": "8c6ef672-f600-4e73-ab32-92b50389ca4b",
"memory": "32768MiB",
"cpus": 4,
"devices": {
"@cpu/x86": 1
},
"cpu_type": "x86_64",
"tags": {
"ciq.co/cluster": "fuzzball-aws",
"fuzzball.io/provider.aws.image_id": "ami-0c0a59e9e75d480e7",
"fuzzball.io/provider.aws.instance_type": "t3a.2xlarge",
"fuzzball.io/provision.namespace": "fuzzball",
"global.cluster.name": "fuzzball-aws"
},
"provider": 1,
"topology_zones": [
"us-east-1a",
"us-east-1b",
"us-east-1c"
],
"create_time": {
"seconds": 1740597418,
"nanos": 622586000
},
"update_time": {
"seconds": 1740597418,
"nanos": 622586000
},
"name": "default_standard",
"cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
},
{
"id": "dc2730eb-f24a-4b60-b2fb-4bdccf7c3089",
"memory": "62464MiB",
"cpus": 4,
"devices": {
"@cpu/x86": 1,
"multinode": 1,
"nvidia.com/gpu": 1
},
"cpu_type": "x86_64",
"tags": {
"ciq.co/cluster": "fuzzball-aws",
"fuzzball.io/provider.aws.image_id": "ami-0b6cf226eb2d3a3dc",
"fuzzball.io/provider.aws.instance_type": "p3.2xlarge",
"fuzzball.io/provision.namespace": "fuzzball",
"global.cluster.name": "fuzzball-aws"
},
"provider": 1,
"topology_zones": [
"us-east-1b",
"us-east-1c"
],
"create_time": {
"seconds": 1740597420,
"nanos": 449662000
},
"update_time": {
"seconds": 1740597420,
"nanos": 449662000
},
"name": "default_advanced",
"cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
}
]
}
You can create a new resource definition with the create
subcommand. This command works primarily
by specifying values for tags to configure the new definition. For example, to create a new
resource definition based on a t2.2xlarge
instance, you could use the following syntax.
$ fuzzball admin definition create \
--tag fuzzball.io/provider.aws.image_id=ami-0b6cf226eb2d3a3dc \
--tag fuzzball.io/provider.aws.instance_type=t2.2xlarge \
--device @cpu/x86=1 \
--device @io.fuzzball/multinode=1 \
aws
{
"id": "94781fe6-1cf2-4b10-8a18-0921f10ecfdd",
"memory": "32768MiB",
"cpus": 8,
"devices": {
"@cpu/x86": 1,
"@io.fuzzball/multinode": 1
},
"cpu_type": "x86_64",
"tags": {
"ciq.co/cluster": "fuzzball-aws",
"fuzzball.io/provider.aws.image_id": "ami-0c0a59e9e75d480e7",
"fuzzball.io/provider.aws.instance_type": "t2.2xlarge",
"fuzzball.io/provision.namespace": "fuzzball",
"global.cluster.name": "fuzzball-aws"
},
"provider": 1,
"topology_zones": [
"us-east-1a",
"us-east-1b",
"us-east-1c"
],
"create_time": {
"seconds": 1740596365,
"nanos": 91761000
},
"update_time": {
"seconds": 1740596365,
"nanos": 91761000
},
"cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
}
Or to create a resource definition based on Kubernetes pods, you could use syntax like so:
$ fuzzball admin definition create \
--tag fuzzball.io/provider.kubernetes.memory=1Gb \
--tag fuzzball.io/provider.kubernetes.cpus=1 \
--tag fuzzball.io/provider.kubernetes.cpu_type=x86_64 kubernetes default
{
"id": "a02624b5-4bfb-4ad9-9042-174f9baac9d8",
"memory": "1Gb",
"cpus": 1,
"devices": {
"@cpu/x86": 1
},
"cpu_type": "x86_64",
"tags": {
"ciq.co/cluster": "fuzzball-aws",
"fuzzball.io/provider.kubernetes.cpu_type": "x86_64",
"fuzzball.io/provider.kubernetes.cpus": "1",
"fuzzball.io/provider.kubernetes.memory": "1Gb",
"fuzzball.io/provision.namespace": "fuzzball",
"global.cluster.name": "fuzzball-aws"
},
"provider": 4,
"create_time": {
"seconds": 1740596463,
"nanos": 437726000
},
"update_time": {
"seconds": 1740596463,
"nanos": 437726000
},
"name": "default",
"cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
}
You can list the existing resource definitions in your cluster like so:
$ fuzzball admin definition list
ID | NAME | PROVIDER | CPUS | CPUTYPE | MEMORY | DEVICES | TAGS | INACTIVE | CLUSTER
8cf74435-a91a-4c9c-aea4-c5837075588b | default_standard | aws | 4 | x86_64 | 32768MiB | None | 5 | false | fuzzball-aws
094e8aea-8f2a-4377-9180-3b1762888ce4 | default_advanced | aws | 4 | x86_64 | 62464MiB | 2 | 5 | false | fuzzball-aws
You can get detailed information about an existing resource definition by querying it with the get
subcommand. You need to reference the resource by its ID like so:
$ fuzzball admin definition get 094e8aea-8f2a-4377-9180-3b1762888ce4
{
"id": "094e8aea-8f2a-4377-9180-3b1762888ce4",
"memory": "62464MiB",
"cpus": 4,
"devices": {
"@cpu/x86": 1,
"multinode": 1,
"nvidia.com/gpu": 1
},
"cpu_type": "x86_64",
"tags": {
"ciq.co/cluster": "fuzzball-aws",
"fuzzball.io/provider.aws.image_id": "ami-0b6cf226eb2d3a3dc",
"fuzzball.io/provider.aws.instance_type": "p3.2xlarge",
"fuzzball.io/provision.namespace": "fuzzball",
"global.cluster.name": "fuzzball-aws"
},
"provider": 1,
"topology_zones": [
"us-east-1b",
"us-east-1c"
],
"create_time": {
"seconds": 1740593100,
"nanos": 759447000
},
"update_time": {
"seconds": 1740593100,
"nanos": 759447000
},
"name": "default_advanced",
"cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
}
You can update a resource definition after it has been created or inactivate/reactivate it by using
the update
subcommand. In addition to the --device
and --tag
options that are available in
the create
subcommand, there is a --provider
option to change the resource provider and a
--inactive
option to set the status of the resource definition (with the arguments true
or
false
). For example, to set a definition as inactive you could use the following command:
$ fuzzball admin definition update --inactive a02624b5-4bfb-4ad9-9042-174f9baac9d8
{
"id": "a02624b5-4bfb-4ad9-9042-174f9baac9d8",
"memory": "1Gb",
"cpus": 1,
"devices": {
"@cpu/x86": 1
},
"cpu_type": "x86_64",
"tags": {
"ciq.co/cluster": "fuzzball-aws",
"fuzzball.io/provider.kubernetes.cpu_type": "x86_64",
"fuzzball.io/provider.kubernetes.cpus": "1",
"fuzzball.io/provider.kubernetes.memory": "1Gb",
"fuzzball.io/provision.namespace": "fuzzball",
"global.cluster.name": "fuzzball-aws"
},
"inactive": true,
"provider": 4,
"create_time": {
"seconds": 1740596463,
"nanos": 437726000
},
"update_time": {
"seconds": 1740596704,
"nanos": 718488000
},
"name": "default",
"cluster_id": "de16290e-11b0-dd3e-6ec1-5c72b2ccc45e"
}
$ fuzzball admin definition list --inactive
ID | NAME | PROVIDER | CPUS | CPUTYPE | MEMORY | DEVICES | TAGS | INACTIVE | CLUSTER
a02624b5-4bfb-4ad9-9042-174f9baac9d8 | default | kubernetes | 1 | x86_64 | 1Gb | None | 6 | true | fuzzball-aws
To delete a resource definition use the delete
subcommand in combination with the resource ID like
so:
This action will take effect immediately. The resource definition will be deleted without any additional prompt and may affect running workflows. It is a best practice to set resource definitions toinactive
before deleting them.
$ fuzzball admin definition delete a02624b5-4bfb-4ad9-9042-174f9baac9d8
Deleted definition id: a02624b5-4bfb-4ad9-9042-174f9baac9d8