blob: bc47d433d7bba27b861587d84440508f59a17036 [file]
import os
from libcloud.compute.providers import get_driver
from libcloud.compute.base import NodeSize
from libcloud.compute.type import Provider
from libcloud.compute.deployment import ScriptDeployment
cls = get_driver(Provider.GRIDSCALE)
driver = cls('USER-UUID', 'API-TOKEN')
# We don't feature packages containing a fix size so you will have to
# built your own size object. Make sure to use a multiple of 1024MB when
# asigning RAM
size_name = 'my-node-size'
ram = 1024 # amout of ram In MB
disk = 10 # disk size in GB
cores = 1 # numer of cores node should have
size = NodeSize(id=0, bandwidth=0, price=0, name=size_name, ram=ram, disk=disk,
driver=driver, extra={'cores': cores})
ssh_key = driver.list_key_pairs()[0]
ssh_key_uuid = ssh_key.fingerprint
node_name = 'MyServer'
images = driver.list_images()
image = [i for i in images if i.name == 'Ubuntu 18.04 LTS'][0]
locations = driver.list_locations()
location = [l for l in locations if l.name == 'de/fra'][0]
# Check if a key pair object with the provided name already exists
# If it already exists, using an existing key, otherwise import a new one
key_pair_name = 'libcloud-key-pair'
key_pairs = driver.list_key_pairs()
key_pairs = [kp for kp in key_pairs if kp.name == key_pair_name]
public_key_file_path = os.path.expanduser('~/.ssh/id_rsa_gridscale.pub')
private_key_file_path = os.path.expanduser('~/.ssh/id_rsa_gridscale')
if key_pairs:
print('Re-using existing SSH Key')
key_pair = key_pairs[0]
else:
print('Importing / creating new SSH Key')
key_pair = driver.import_key_pair_from_file(name=key_pair_name,
key_file_path=public_key_file_path) # NOQA
step = ScriptDeployment("echo whoami ; date ; ls -la")
node = driver.deploy_node(name=node_name, size=size, image=image,
location=location,
ex_ssh_key_ids=[key_pair.fingerprint],
deploy=step,
ssh_key=private_key_file_path)
print(node)