GithubHelp home page GithubHelp logo

enriclluelles / vagrant-digitalocean Goto Github PK

View Code? Open in Web Editor NEW

This project forked from devopsgroup-io/vagrant-digitalocean

0.0 2.0 0.0 319 KB

A Vagrant provider plugin that supports the management of Digital Ocean droplets (instances).

License: MIT License

vagrant-digitalocean's Introduction

Digital Ocean Vagrant Provider

vagrant-digitalocean is a provider plugin for Vagrant that supports the management of Digital Ocean droplets (instances).

NOTE: The Chef provisioner is no longer supported by default (as of 0.2.0). Please use the vagrant-omnibus plugin to install Chef on Vagrant-managed machines. This plugin provides control over the specific version of Chef to install.

Current features include:

  • create and destroy droplets
  • power on and off droplets
  • rebuild a droplet
  • provision a droplet with the shell or Chef provisioners
  • setup a SSH public key for authentication
  • create a new user account during droplet creation

The provider has been tested with Vagrant 1.1.5+ using Ubuntu 12.04 and CentOS 6.3 guest operating systems.

Install

Installation of the provider requires two steps:

  1. Install the provider plugin using the Vagrant command-line interface:

     $ vagrant plugin install vagrant-digitalocean
    

NOTE: If you are using a Mac, and this plugin would not work caused by SSL certificate problem, You may need to specify certificate path explicitly.
You can verify actual certificate path by running:

ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE"

Then, add the following environment variable to your .bash_profile script and source it:

export SSL_CERT_FILE=/usr/local/etc/openssl/cert.pem

Configure

Once the provider has been installed, you will need to configure your project to use it. The most basic Vagrantfile to create a droplet on Digital Ocean is shown below:

Vagrant.configure('2') do |config|

  config.vm.provider :digital_ocean do |provider, override|
    override.ssh.private_key_path = '~/.ssh/id_rsa'
    override.vm.box = 'digital_ocean'
    override.vm.box_url = "https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box"

    provider.token = 'YOUR TOKEN'
    provider.image = 'Ubuntu 14.04 x64'
    provider.region = 'nyc2'
    provider.size = '512mb'
  end
end

Please note the following:

  • You must specify the override.ssh.private_key_path to enable authentication with the droplet. The provider will create a new Digital Ocean SSH key using your public key which is assumed to be the private_key_path with a .pub extension.
  • You must specify your Digital Ocean Personal Access Token. This may be found on the control panel within the Apps & API section.

Supported Configuration Attributes

The following attributes are available to further configure the provider:

  • provider.image - A string representing the image to use when creating a new droplet (e.g. Debian 6.0 x64). The available options may be found on Digital Ocean's new droplet form. It defaults to Ubuntu 14.04 x64.
  • provider.region - A string representing the region to create the new droplet in. It defaults to nyc2.
  • provider.size - A string representing the size to use when creating a new droplet (e.g. 1gb). It defaults to 512mb.
  • provider.private_networking - A boolean flag indicating whether to enable a private network interface (if the region supports private networking). It defaults to false.
  • provider.backups_enabled - A boolean flag indicating whether to enable backups for the droplet. It defaults to false.
  • provider.ssh_key_name - A string representing the name to use when creating a Digital Ocean SSH key for droplet authentication. It defaults to Vagrant.
  • provider.setup - A boolean flag indicating whether to setup a new user account and modify sudo to disable tty requirement. It defaults to true. If you are using a tool like packer to create reusable snapshots with user accounts already provisioned, set to false.

The provider will create a new user account with the specified SSH key for authorization if config.ssh.username is set and the provider.setup attribute is true.

provider.region slug

Each region has been specify with slug name.
Current Region-slug table is:

slug Region Name
nyc1 New York 1
ams1 Amsterdam 1
sfo1 San Francisco 1
nyc2 New York 2
ams2 Amsterdam 2
sgp1 Singapore 1
lon1 London 1
nyc3 New York 3

You can find latest region slug name using DigitalOcean API V2 call.

  • example call.
curl -X GET "https://api.digitalocean.com/v2/regions" \
     -H "Authorization: Bearer $DIGITAL_OCEAN_TOKEN" \
     2>/dev/null | jq '.regions [] | .slug,.name'

More detail: DigitalOcean API - Regions

Run

After creating your project's Vagrantfile with the required configuration attributes described above, you may create a new droplet with the following command:

$ vagrant up --provider=digital_ocean

This command will create a new droplet, setup your SSH key for authentication, create a new user account, and run the provisioners you have configured.

Supported Commands

The provider supports the following Vagrant sub-commands:

  • vagrant destroy - Destroys the droplet instance.
  • vagrant ssh - Logs into the droplet instance using the configured user account.
  • vagrant halt - Powers off the droplet instance.
  • vagrant provision - Runs the configured provisioners and rsyncs any specified config.vm.synced_folder.
  • vagrant reload - Reboots the droplet instance.
  • vagrant rebuild - Destroys the droplet instance and recreates it with the same IP address which was previously assigned.
  • vagrant status - Outputs the status (active, off, not created) for the droplet instance.

Contribute

To contribute, clone the repository, and use Bundler to install dependencies:

$ bundle

To run the provider's tests:

$ bundle exec rake test

You can now make modifications. Running vagrant within the Bundler environment will ensure that plugins installed in your Vagrant environment are not loaded.

vagrant-digitalocean's People

Contributors

smdahlen avatar johnbender avatar tmatilai avatar rjsamson avatar simoniong avatar javier-lopez avatar ijin avatar mccahan avatar wnoguchi avatar alappe avatar podollb avatar dmcrodrigues avatar elliotjh avatar mizzy avatar gulinss avatar hamann avatar jeffhertzler avatar lazyguru avatar jfifield avatar mtessar avatar merty avatar nwertzberger avatar fullyint avatar rickw avatar syrusakbary avatar bradisbell avatar jfarrell avatar khromov avatar

Watchers

Enric Lluelles avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.