DigitalOcean is a public cloud host that specializes in Linux instances.
Using Salt for DigitalOcean requires a
and at least one SSH key name in
ssh_key_names can be added
by separating each key with a comma. The
personal_access_token can be found in the
DigitalOcean web interface in the "Apps & API" section. The SSH key name can be found
under the "SSH Keys" section.
# Note: This example is for /etc/salt/cloud.providers or any file in the # /etc/salt/cloud.providers.d/ directory. my-digitalocean-config: driver: digital_ocean personal_access_token: xxx ssh_key_file: /path/to/ssh/key/file ssh_key_names: my-key-name,my-key-name-2 location: New York 1
Changed in version 2015.8.0.
provider parameter in cloud provider definitions was renamed to
change was made to avoid confusion with the
provider parameter that is used in cloud profile
definitions. Cloud provider definitions now use
driver to refer to the Salt cloud module that
provides the underlying functionality to connect to a cloud host, while cloud profiles continue
provider to refer to provider configurations that you define.
Set up an initial profile at
/etc/salt/cloud.profiles or in the
digitalocean-ubuntu: provider: my-digitalocean-config image: 14.04 x64 size: 512MB location: New York 1 private_networking: True backups_enabled: True ipv6: True create_dns_record: True userdata_file: /etc/salt/cloud.userdata.d/setup
Locations can be obtained using the
--list-locations option for the
# salt-cloud --list-locations my-digitalocean-config my-digitalocean-config: ---------- digital_ocean: ---------- Amsterdam 1: ---------- available: False features: [u'backups'] name: Amsterdam 1 sizes:  slug: ams1 ...SNIP...
Sizes can be obtained using the
--list-sizes option for the
# salt-cloud --list-sizes my-digitalocean-config my-digitalocean-config: ---------- digital_ocean: ---------- 512MB: ---------- cost_per_hour: 0.00744 cost_per_month: 5.0 cpu: 1 disk: 20 id: 66 memory: 512 name: 512MB slug: None ...SNIP...
Images can be obtained using the
--list-images option for the
# salt-cloud --list-images my-digitalocean-config my-digitalocean-config: ---------- digital_ocean: ---------- 10.1: ---------- created_at: 2015-01-20T20:04:34Z distribution: FreeBSD id: 10144573 min_disk_size: 20 name: 10.1 public: True ...SNIP...
If using a FreeBSD image from Digital Ocean, you'll need to set the
freebsd in your profile configuration.
digitalocean-freebsd: provider: my-digitalocean-config image: 10.2 size: 512MB ssh_username: freebsd
New in version 2016.11.6.
Use userdata_file to specify the userdata file to upload for use with cloud-init if available.
my-openstack-config: # Pass userdata to the instance to be created userdata_file: /etc/salt/cloud-init/packages.yml
my-do-config: # Pass userdata to the instance to be created userdata_file: /etc/salt/cloud-init/packages.yml userdata_template: jinja
userdata_template is set in the cloud profile, then the master
configuration will be checked for a
If this is not set, then no templating will be performed on the
To disable templating in a cloud profile when a
userdata_template has been set in the master configuration
file, simply set
False in the cloud profile:
my-do-config: # Pass userdata to the instance to be created userdata_file: /etc/salt/cloud-init/packages.yml userdata_template: False
DigitalOcean's concept of
Applications is nothing more than a
pre-configured instance (same as a normal Droplet). You will find examples
Docker 0.7 Ubuntu 13.04 x64 and
Wordpress on Ubuntu 12.10
when using the
--list-images option. These names can be used just like
the rest of the standard instances when specifying an image in the cloud
If your domain's DNS is managed with DigitalOcean, and your minion name
matches your DigitalOcean managed DNS domain, you can automatically create
A and AAA records for newly created droplets. Use
in your config to enable this. Adding
delete_dns_record: True to also
delete records when a droplet is destroyed is optional. Due to limitations
in salt-cloud design, the destroy code does not have access to the VM config
data. WHETHER YOU ADD
create_dns_record: True OR NOT, salt-cloud WILL
attempt to delete your DNS records if the minion name matches. This will
prevent advertising any recycled IP addresses for destroyed minions.
If you need to perform the bootstrap using the local interface for droplets,
this can be done by setting
ssh_interface: private in your config. By
default the salt-cloud script would run on the public interface however if firewall
is preventing the connection to the Droplet over the public interface you might need
to set this option to connect via private interface. Also, to use this feature
private_networking: True must be set in the config.
Additional documentation is available from DigitalOcean.