Quick start guide

The page provides a walk through guide for provisioning a server using the Raspberry Pi Provisioning API.

  • Create an API key using the customer control panel.

  • Set some evironment variables. Use the key details from the control panel, choose your own server name, and path to your own SSH public key if different.

API_USER="abcd1234"
API_PASS="efgh5678"
SERVER_NAME="test-pi-$$" 
SSH_KEY=~/.ssh/id_rsa.pub
  • Get an access token from the auth server:
TOKEN=`curl -s -d 'grant_type=client_credentials' -u "$API_USER:$API_PASS" https://auth.mythic-beasts.com/login | jq -r .access_token`
  • Create a server:
$ curl -D- -H "Authorization: Bearer $TOKEN"  -X POST https://api.mythic-beasts.com/beta/servers/pi/$SERVER_NAME
HTTP/1.1 202 Accepted
Location: https://api.mythic-beasts.com/beta/queue/pi/8
Content-Type: application/json

{}
  • Poll the URL provided in the Location header.
$ curl -D- -H "Authorization: Bearer $TOKEN" https://api.mythic-beasts.com/beta/queue/pi/8
HTTP/1.1 200 OK
Content-Type: application/json

{"status":"Installing operating system"}
  • Poll again (after a minute or so):
$ curl -D- -H "Authorization: Bearer $TOKEN" https://api.mythic-beasts.com/beta/queue/pi/8
HTTP/1.1 303 See other
Location: https://api.mythic-beasts.com/beta/servers/pi/test-pi-14535
Content-Type: application/json

{}
  • Get server details from the indicated URL:
$ curl -s -H "Authorization: Bearer $TOKEN" https://api.mythic-beasts.com/beta/servers/pi/test-pi-14535 | jq
{
  "disk_size": "10.00",
  "status": "live",
  "location": "MER",
  "initialised_keys": false,
  "power": true,
  "model": 3,
  "ip": "2a00:1098:0008:0099:0000:0000:0000:0001",
  "ssh_port": 5153
}
  • Set an SSH key (this can also be done in the initial POST to create the server)
$ curl -D- -d "{\"ssh_key\": \"$(cat $SSH_KEY)\"}" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN"  -X PUT https://api.mythic-beasts.com/beta/servers/pi/$SERVER_NAME/ssh-key
HTTP/1.1 200 OK
  • If you have an IPv6 connection, you can login now:
$ ssh root@$SERVER_NAME.hostedpi.com
  • Otherwise, we can grab the port number from the server details response above:
$ PORT=`curl -s -H "Authorization: Bearer $TOKEN" https://api.mythic-beasts.com/beta/servers/pi/test-pi-14535 | jq -r .ssh_port`
  • And use that to login via the IPv4 proxy:
$ ssh -p $PORT root@ssh.$SERVER_NAME.hostedpi.com
The authenticity of host '[ssh.test-pi-14535.hostedpi.com]:5153 ([93.93.134.53]:5153)' can't be established.
ECDSA key fingerprint is SHA256:2reFdstKrXN21QtrvoSSbI+ymmvPgzWMbyl+fpVIjz4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[ssh.test-pi-14535.hostedpi.com]:5153,[93.93.134.53]:5153' (ECDSA) to the list of known hosts.
Linux raspberrypi 4.19.50-v7+ #896 SMP Thu Jun 20 16:11:44 BST 2019 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Jul  1 14:58:15 2019 from 92.40.248.176
root@raspberrypi:~# 

For more information, please see the full API docs.