Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
71 lines (51 sloc) 2.13 KB

Sample Ansible Playbook to provision a DigitalOcean droplet

Build Status

This is a sample playbook that illustrates how to create and provision a DigitalOcean droplet with Ansible; you can spin up and provision a droplet using the command line via this playbook.

Playbook Demo Image

This playbook does the following:

  • Spins up a DigitalOcean droplet
  • Adds the droplet's IP address to the ansible inventory file
  • Setup the swap file
  • Installs and setup fail2ban
  • Setup Uncomplicated firewall
  • Setup the timezone
  • Adds a new user account with sudo access
  • Adds a public ssh key for the new user account
  • Disables password authentication to the droplet
  • Deny root login to the droplet
  • Installs the UnattendedUpgrades package for automatic security updates
  • (Optional) Installs the LEMP stack
  • (Optional) Installs Docker


Ansible >=


  1. Clone this repo:
git clone
cd ansible-digitalocean-sample-playbooks
  1. Rename the group_vars/all/secret.yml.example file to group_vars/all/secret.yml and change the secret variables to your appropriate values.

  2. Modify the values in group_vars/all/main.yml with your desired values.

  3. Run the following:

ansible-galaxy install -r requirements.yml
ansible-playbook -i hosts main.yml


Testing is done via Kitchen CI and Kitchen Ansible. Testing of the droplet setup is done via Kitchen Vagrant:

gem install bundler
bundle install
bundle exec kitchen test

Testing of the LEMP stack and Docker installation / setup is done via Kitchen Docker:

gem install bundler
bundle install
KITCHEN_YAML=".kitchen.travis.yml" bundle exec kitchen test

Refer to the travis.yml file and Travis build logs for details on the test build process and expected outputs.



You can’t perform that action at this time.