Skip to content

Instantly share code, notes, and snippets.

Created January 26, 2014 14:26
What would you like to do?
import os
import random
from pprint import pprint
from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
from libcloud.compute.deployment import ScriptDeployment
API_KEY = 'exoscale api key'
API_SECRET_KEY = 'exoscale api secret key'
# Note: This example uses curl and bash installer for demonstration purposes only.
# On production, you should use a more secure method (e.g. directly using signed
# and verified Debian packages).
BOOTSTRAP_SCRIPT = '''#!/usr/bin/env bash
curl -L | sudo bash
PUBLIC_KEY_FILE = os.path.expanduser('~/.ssh/')
cls = get_driver(Provider.EXOSCALE)
driver = cls(API_KEY, API_SECRET_KEY)
size = [size for size in driver.list_sizes() if == 'Micro'][0]
image = [image for image in driver.list_images() if 'Ubuntu 12.04 LTS 64-bit'
# 1. Import an existing public SSH key
key_pair = driver.import_key_pair_from_file(name='test-key-pair',
# 2. Bootstrap a node
name = 'exoscale-node-' + str(random.randint(0, 100))
script = ScriptDeployment(script=BOOTSTRAP_SCRIPT)
node = driver.deploy_node(name=name, image=image, size=size, deploy=script,,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment