Digital Ocean

Note

I followed the instructions in Salt-Cloud to Spin Up DigitalOcean Resources which uses salt-cloud on the master. This works very nicely.

These are the commands I ran on the master to install salt-cloud, set-up the configuration and create a new server (copies of the configuration files are in our private repository):

apt-get install salt-cloud

vim /etc/salt/cloud

salt-cloud --list-providers

mkdir -p /etc/salt/pki/cloud
cat ~/.ssh/id_rsa > /etc/salt/pki/cloud/do.pem
chmod 700 /etc/salt/pki/cloud
chmod 600 /etc/salt/pki/cloud/do.pem

vim /etc/salt/cloud.providers.d/do.conf
mkdir -p /etc/salt/cloud.profiles.d
vim /etc/salt/cloud.profiles.d/dev-profiles.conf

salt-cloud --list-locations do
salt-cloud --list-profiles do

# I don't think we use 'dev-environment.map'
mkdir /etc/salt/cloud.maps.d
vim /etc/salt/cloud.maps.d/dev-environment.map

# update the bootstrap script
salt-cloud -u

# create a server called ``kb-c`` using the ``web`` profile.
salt-cloud -p web kb-c
salt '*' test.ping
salt 'kb-c' state.highstate > /tmp/xx 2>&1

Warning

The following notes are the old instructions.

Important

These instructions are for version 2015.8.3 (Beryllium)

Configuration

Note

Upload the public key for your root user to https://cloud.digitalocean.com/settings/security

Give the key a Name (e.g. name-of-my-key.pub) and add to ssh_key_name in cloud.providers (see below).

It took me a while to understand this. Thank you to Russell Ballestrini for this article: http://russell.ballestrini.net/create-your-own-fleet-of-servers-with-digital-ocean-and-salt-cloud/

Profile

Note

Replace yb with your Company Abbreviation (Checklist)

vim ~/repo/dev/module/deploy/salt-cloud/yb.profiles.conf
droplet_512:
  provider: digitalocean
  size: 1GB
  image: ubuntu-14-04-x32
  location: London 1

Providers

Note

Replace yb with your Company Abbreviation (Checklist)

Log into your Digital Ocean Control Panel and Generate new token in the API section. The Personal Access Token is used in the personal_access_token field (see below):

vim ~/repo/dev/module/deploy/salt-cloud/yb.providers.conf
digitalocean:
  driver: digital_ocean
  personal_access_token: your-personal-access-token
  location: London 1
  ssh_key_file: /root/.ssh/id_rsa.pub
  ssh_key_name: name-of-my-key.pub
  minion:
    master: master.yourbiz.co.uk

The name-of-my-key.pub is the same name as you entered in the Digital Ocean Control Panel (see above).

Warning

The actual name must match… so if the name of the key in the Digital Ocean Control Panel is name-of-my-key.pub, then this must match the value contained in ssh_key_name in yb.providers.conf.

Usage

To create a server called drop-temp:

sudo -i
salt-cloud -p droplet_512 drop-temp

Tip

For logging, add --log-level=debug to the salt-cloud command.

Note

Take a note of the IP address of the newly created server

To log into the server:

sudo -i
ssh the.server.ip.address

Provision

You will now want to set-up your server: Salt - Provision

Utility

Locations

To list all locations for a provider (in this example for digitalocean):

sudo -i
salt-cloud --list-location digitalocean

Note

You can also use --list-images and --list-sizes