Pyrax
From Christoph's Personal Wiki
NOTE: This article was written in 2014 and is no longer maintained.
pyrax
is the official Python SDK for OpenStack/Rackspace APIs.
Example
Note: See my gist of this script.
# NAME: pyrax_create_cloud_server # AUTHOR: Christoph Champ # DESCRIPTION: This script creates a Cloud Server in your Rackspace account. # It then creates an image of that server, and, finally, creates a new server # from that saved image. # # NOTES: Within each of the created VMs, the generated credentials are in # master_server.adminPass and clone_server.adminPass. To access the box, use # master_server.accessIPv4 and clone_server.accessIPv4. # However, it is _much_ better/safer/wiser to use SSH keypairs. # # SEE: https://github.com/rackspace/pyrax # SOURCE: https://gist.github.com/christophchamp/8450845 import os import pyrax USERNAME = "" # This is your Rackspace account username API_KEY = "" REGION = "" # E.g., DFW, HKG, IAD, LON, ORD, SYD # Authenticate with Rackspace pyrax.set_setting('identity_type', 'rackspace') pyrax.set_credentials(USERNAME, API_KEY, region=REGION) cs = pyrax.connect_to_cloudservers() # NOTE: You could use the API to get an image ID instead image_id = u'f70ed7c7-b42e-4d77-83d8-40fa29825b85' # CentOS 6.4 flavor = u'performance1-1' # Create the master server print "Creating master_server...\n" master_server = cs.servers.create("master_server", image_id, flavor) # It takes time to create the server, so poll it until it completes master_server = pyrax.utils.wait_for_build(master_server, verbose=True) # Create an image of the master server print "\nCreating image of master_server...\n" im = master_server.create_image("master_image") image = cs.images.get(im) # Wait for image creation to finish before moving on to clone image = pyrax.utils.wait_until(image, "status", ["ACTIVE","ERROR"], attempts=0) # NOTE: This clone can be a larger flavor (VM size), if needed/wanted # Here we use the same flavor of the master server print "Creating clone_server from master_image...\n" clone_server = cs.servers.create(name="clone_server", image=image.id, flavor=master_server.flavor['id']) clone_server = pyrax.utils.wait_for_build(clone_server, verbose=True) print "Master_root_password: %s" % master_server.adminPass print "Master_public_IPv4: %s" % master_server.accessIPv4 print "Clone_root_password: %s" % clone_server.adminPass print "Clone_public_IPv4: %s" % clone_server.accessIPv4
External links
- pyrax on GitHub