Using the CLI
This tool allows the manipulation of all Metal Cloud elements via the command line.

Installation
Section titled “Installation”To install on Mac OS X:
brew tap metalsoft-io/homebrew-repobrew install metalcloud-cliTo install on any CentOS/Redhat Linux distribution use the latest release for your platform: https://github.com/metalsoft-io/metalcloud-cli/releases/latest
$ sudo rpm -i https://github.com/metalsoft-io/metalcloud-cli/releases/download/v2.5.13/metalcloud-cli_2.5.13_linux_amd64.rpmTo install on any Debian/Ubuntu distributions:
curl -sLO https://github.com/metalsoft-io/metalcloud-cli/releases/download/v2.5.13/metalcloud-cli_2.5.13_linux_amd64.deb && sudo dpkg -i metalcloud-cli_2.5.13_linux_amd64.debTo install on Windows: Binaries are available here: Download and unzip the executable and simply execute.
To install using go get:
go get github.com/metalsoft-io/metalcloud-cliGetting the API key
Section titled “Getting the API key”In the Metalsoft Web UI click on the user icon at the top right corner. Then go to API credentials > APY key
Copy the api key. Its format should be <number>:<letters>.
Copy the endpoint. Its format should be https://api.environment.hostname.
Configure credentials as environment variables:
export METALCLOUD_API_KEY="<your key>" # example value: "1:e5fa44f2b31c1fb553b6021e7360d07d5d91ff5e"export METALCLOUD_ENDPOINT="<your api endpoint>" # example value: "https://api.demo.metalsoft.io"export METALCLOUD_USER_EMAIL="<your email>" # example value: "user@metalsoft.io"export METALCLOUD_INSECURE_SKIP_VERIFY=false #defaults to falseexport METALCLOUD_TIMEOUT_SECONDS=300 #defaults to 300 if not setGetting a list of supported commands
Section titled “Getting a list of supported commands”Use metalcloud-cli help for a list of supported commands.
Getting started
Section titled “Getting started”To create an infrastructure, in the default site, configured via the METALCLOUD_SITE environment variable):
metalcloud-cli infrastructure create --label test --return-idmetalcloud-cli infrastructure list+-------+-----------------------------------------+-------------------------------+-----------+-----------+---------------------+---------------------+| ID | LABEL | OWNER | REL. | STATUS | CREATED | UPDATED |+-------+-----------------------------------------+-------------------------------+-----------+-----------+---------------------+---------------------+| 12345 | complex-demo | d.d@sdd.com | OWNER | active | 2019-03-28T15:23:08Z| 2019-03-28T15:23:08Z|+-------+-----------------------------------------+-------------------------------+-----------+-----------+---------------------+---------------------+To create an instance array in that infrastructure, get the ID of the infrastructure from above (12345):
metalcloud-cli instance-array create --infra 12345 --label master --proc 1 --proc-core-count 8 --ram 16To view the id of the previously created drive array:
metalcloud-cli instance-array list --infra 12345+-------+---------------------+---------------------+-----------+| ID | LABEL | STATUS | INST_CNT |+-------+---------------------+---------------------+-----------+| 54321 | master | ordered | 1 |+-------+---------------------+---------------------+-----------+Total: 1 Instance ArraysTo create a drive array and attach it to the previous instance array:
metalcloud-cli drive-array create --infra 12345 --label master-da --ia 54321To view the current status of the infrastructure
metalcloud-cli infrastructure get --id 12345Infrastructures I have access to (as test@test.com)+-------+----------------+-------------------------------+-----------------------------------------------------------------------+-----------+| ID | OBJECT_TYPE | LABEL | DETAILS | STATUS |+-------+----------------+-------------------------------+-----------------------------------------------------------------------+-----------+| 36791 | InstanceArray | master | 1 instances (16 RAM, 8 cores, 1 disks) | ordered || 47398 | DriveArray | master-da | 1 drives - 40.0 GB iscsi_ssd (volume_template:0) attached to: 36791 | ordered |+-------+----------------+-------------------------------+-----------------------------------------------------------------------+-----------+Total: 2 elementsKubernetes-style Apply support
Section titled “Kubernetes-style Apply support”Apply creates or updates a resource from a file. The supported format is yaml.
metalcloud-cli apply -f resources.yamlThe type of the requested resource needs to be specified using the field kind.
cat resources.yaml
kind: InstanceArrayapiVersion: 1.0label: my-instance-array
---
kind: SecretapiVersion: 1.0name: my-secretThe objects and their fields can be found in the SDK documentation. The fields will be in the format specified in the yaml tag. For example SubnetPool object has a field named subnet_pool_prefix_human_readable in JSON format. In the YAML file used as input for this command, the field should be called prefix.
Condensed format
Section titled “Condensed format”The CLI also provides a “condensed format” for most of it’s commands:
- instance=array = ia
- drive-array = da
- infrastructure = infra
- list = ls
- delete = rm …
This allows commands such as:
metalcloud-cli infra lsUsing label instead of IDs
Section titled “Using label instead of IDs”Most commands also take a label instead of an id as a parameter. For example:
metalcloud-cli infra show --id complex-demoPermissions
Section titled “Permissions”Some commands depend on various permissions. For instance you cannot access another user’s infrastructure unless you are a delegate of it.