salt-cloud & RackConnect

The development versions of salt-cloud and the libcloud project from the Apache Foundation recently added support for deploying RackConnected instances on the Rackspace Public Cloud. Here's how to get it up and running on Ubuntu 12.04 LTS.

NOTE: These instructions assume that you already have a salt-master server configured and are deploying from it. Since we're also deploying into a virtualenv its safe to do this on your current salt-cloud server as well.

  1. Ensure all of the depencies are installed:
apt-get install python-pip python-virtualenv python-setuptools swig libssl-dev python-dev libzmq-dev libyaml-dev build-essential libgmp-dev git sshpass python-m2crypto
  1. Set up your virtualenv for salt-cloud and activate it:
virtualenv --system-site-packages ~/salt-cloud-dev
source ~/salt-cloud-dev/bin/activate
  1. Install any missing salt-cloud dependcies in the virtualenv:
pip install pyzmq PyYAML pycrypto msgpack-python jinja2 psutil salt
  1. Install Apache Libcloud and salt-cloud from git:
pip install git+https://github.com/apache/libcloud.git@trunk#egg_name=apache-libcloud
pip install git+https://github.com/saltstack/salt-cloud.git@develop#egg_name=salt-cloud

Once its installed run salt-cloud --versions-report and make sure everything looks kosher.

Once salt-cloud is installed you'll need to set up the cloud providers and cloud profiles; samples for Rackspace with RackConnect can be found below. You might also need to create the needed folders if they're not already there.

mkdir /etc/salt/cloud.profiles.d
mkdir  /etc/salt/cloud.providers.d

/etc/salt/cloud.providers.d/rackspace.conf:

rackspace:
  compute_name: cloudServersOpenStack
  protocol: ipv4
  provider: openstack
  minion:
    master: <IP or FQDN of salt-master>
  compute_region: <DFW, ORD, IAD, LON, or SYD>
  identity_url: 'https://identity.api.rackspacecloud.com/v2.0/tokens' for DFW, ORD, IAD & SYD;  'https://lon.identity.api.rackspacecloud.com/v2.0/tokens' for LON
  user: <username>
  tenant: <cloud account number>
  apikey: <apikey>

/etc/salt/cloud.profiles.d/rackspace.conf:

precise-512:
    provider: rackspace
    size: 512MB Standard Instance
    image: Ubuntu 12.04 LTS (Precise Pangolin)
    rackconnect: True

The rackconnect: True portion is what makes salt-cloud wait long enough to allow the RackConnect magic to happen.