{"id":13572452,"url":"https://github.com/devopsgroup-io/vagrant-digitalocean","last_synced_at":"2025-05-15T13:05:05.425Z","repository":{"id":39898276,"uuid":"8449386","full_name":"devopsgroup-io/vagrant-digitalocean","owner":"devopsgroup-io","description":":droplet: A Vagrant provider plugin that manages DigitalOcean droplets.","archived":false,"fork":false,"pushed_at":"2023-09-07T12:54:42.000Z","size":310,"stargazers_count":1714,"open_issues_count":42,"forks_count":181,"subscribers_count":46,"default_branch":"master","last_synced_at":"2025-05-12T15:30:21.725Z","etag":null,"topics":["devops","digitalocean-droplets","vagrant-plugin"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devopsgroup-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2013-02-27T05:33:06.000Z","updated_at":"2025-05-05T09:56:50.000Z","dependencies_parsed_at":"2023-07-14T08:03:39.651Z","dependency_job_id":"712625c1-6092-4197-8652-be0f51f3f3ac","html_url":"https://github.com/devopsgroup-io/vagrant-digitalocean","commit_stats":null,"previous_names":["smdahlen/vagrant-digitalocean"],"tags_count":43,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsgroup-io%2Fvagrant-digitalocean","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsgroup-io%2Fvagrant-digitalocean/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsgroup-io%2Fvagrant-digitalocean/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devopsgroup-io%2Fvagrant-digitalocean/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devopsgroup-io","download_url":"https://codeload.github.com/devopsgroup-io/vagrant-digitalocean/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254346624,"owners_count":22055808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops","digitalocean-droplets","vagrant-plugin"],"created_at":"2024-08-01T14:01:23.522Z","updated_at":"2025-05-15T13:05:05.358Z","avatar_url":"https://github.com/devopsgroup-io.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"DigitalOcean Vagrant Provider\n==============================\n\n[![Gem](https://img.shields.io/gem/v/vagrant-digitalocean.svg)](https://rubygems.org/gems/vagrant-digitalocean)\n[![Gem](https://img.shields.io/gem/dt/vagrant-digitalocean.svg)](https://rubygems.org/gems/vagrant-digitalocean)\n[![Gem](https://img.shields.io/gem/dtv/vagrant-digitalocean.svg)](https://rubygems.org/gems/vagrant-digitalocean)\n[![Twitter](https://img.shields.io/twitter/url/https/github.com/devopsgroup-io/vagrant-digitalocean.svg?style=social)](https://twitter.com/intent/tweet?text=Check%20out%20this%20awesome%20Vagrant%20plugin%21\u0026url=https%3A%2F%2Fgithub.com%2Fdevopsgroup-io%2Fvagrant-digitalocean\u0026hashtags=vagrant%2Cdigitalocean\u0026original_referer=)\n\n`vagrant-digitalocean` is a Vagrant provider plugin that supports the management of [DigitalOcean](https://www.digitalocean.com/) Droplets (virtual machines).\n\nFeatures include:\n- Create and destroy Droplets\n- Power on and off Droplets\n- Rebuild a Droplet (destroys and ups with same IP address)\n- Provision a Droplet with shell\n- Setup a SSH public key for authentication\n- Create a new user account during Droplet creation\n\n\nInstall\n-------\nInstall the provider plugin using the Vagrant command-line interface:\n\n`vagrant plugin install vagrant-digitalocean`\n\n\nConfigure\n---------\nOnce the provider has been installed, you will need to configure your project to use it. See the following example for a basic multi-machine `Vagrantfile` implementation that manages two DigitalOcean Droplets running Ubuntu 18.04 using a single CPU Droplet with 1GB of memory:\n\n```ruby\nVagrant.configure('2') do |config|\n\n  config.vm.define \"droplet1\" do |config|\n      config.vm.provider :digital_ocean do |provider, override|\n        override.ssh.private_key_path = '~/.ssh/id_rsa'\n        override.vm.box = 'digital_ocean'\n        override.vm.box_url = \"https://github.com/devopsgroup-io/vagrant-digitalocean/raw/master/box/digital_ocean.box\"\n        override.nfs.functional = false\n        override.vm.allowed_synced_folder_types = :rsync\n        provider.token = 'YOUR TOKEN'\n        provider.image = 'ubuntu-18-04-x64'\n        provider.region = 'nyc1'\n        provider.size = 's-1vcpu-1gb'\n        provider.backups_enabled = false\n        provider.private_networking = false\n        provider.ipv6 = false\n        provider.monitoring = false\n      end\n  end\n\n  config.vm.define \"droplet2\" do |config|\n\n      config.vm.provider :digital_ocean do |provider, override|\n        override.ssh.private_key_path = '~/.ssh/id_rsa'\n        override.vm.box = 'digital_ocean'\n        override.vm.box_url = \"https://github.com/devopsgroup-io/vagrant-digitalocean/raw/master/box/digital_ocean.box\"\n        override.nfs.functional = false\n        override.vm.allowed_synced_folder_types = :rsync\n        provider.token = 'YOUR TOKEN'\n        provider.image = 'ubuntu-18-04-x64'\n        provider.region = 'nyc3'\n        provider.size = 's-1vcpu-1gb'\n        provider.backups_enabled = false\n        provider.private_networking = false\n        provider.ipv6 = false\n        provider.monitoring = false\n      end\n  end\n\nend\n```\n\n**Configuration Requirements**\n- You *must* specify the `override.ssh.private_key_path` to enable authentication with the Droplet. The provider will create a new DigitalOcean SSH key using your public key which is assumed to be the `private_key_path` with a *.pub* extension.\n- You *must* specify your DigitalOcean Personal Access Token at `provider.token`. This may be found on the control panel within the *Apps \u0026amp; API* section.\n\n**Supported Configuration Attributes**\n\nThe following attributes are available to further configure the provider:\n- `provider.image`\n    * A string representing the image to use when creating a new Droplet. It defaults to `ubuntu-18-04-x64`.\n    List available images with the `vagrant digitalocean-list images $DIGITAL_OCEAN_TOKEN` command. Like when using the DigitalOcean API directly, [it can be an image ID or slug](https://developers.digitalocean.com/documentation/v2/#create-a-new-droplet).\n- `provider.ipv6`\n    * A boolean flag indicating whether to enable IPv6\n- `provider.region`\n    * A string representing the region to create the new Droplet in. It defaults to `nyc2`. List available regions with the `vagrant digitalocean-list regions $DIGITAL_OCEAN_TOKEN` command.\n- `provider.size`\n    * A string representing the size to use when creating a new Droplet (e.g. `s-1vcpu-1gb`). It defaults to `s-1vcpu-1gb`. List available sizes with the `vagrant digitalocean-list sizes $DIGITAL_OCEAN_TOKEN` command.\n- `provider.private_networking`\n    * A boolean flag indicating whether to enable a private network interface (if the region supports private networking). It defaults to `false`.\n- `provider.backups_enabled`\n    * A boolean flag indicating whether to enable backups for the Droplet. It defaults to `false`.\n- `provider.ssh_key_name`\n    * A string representing the name to use when creating a DigitalOcean SSH key for Droplet authentication. It defaults to `Vagrant`.\n- `provider.setup`\n    * 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](https://packer.io) to create reusable snapshots with user accounts already provisioned, set to `false`.\n- `provider.monitoring`\n    * A boolean indicating whether to install the DigitalOcean agent for monitoring. It defaults to `false`.\n- `provider.tags`\n    * A flat array of tag names as strings to apply to the Droplet after it is created. Tag names can either be existing or new tags.\n- `provider.volumes`\n    * A flat array including the unique identifier for each Block Storage volume attached to the Droplet.\n- `config.vm.synced_folder`\n    * Supports both rsync__args and rsync__exclude, see the [Vagrant Docs](http://docs.vagrantup.com/v2/synced-folders/rsync.html) for more information. rsync__args default to `[\"--verbose\", \"--archive\", \"--delete\", \"-z\", \"--copy-links\"]` and rsync__exclude defaults to `[\".vagrant/\"]`.\n\nThe 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`.\n\n\nRun\n---\nAfter creating your project's `Vagrantfile` with the required configuration\nattributes described above, you may create a new Droplet with the following\ncommand:\n\n    $ vagrant up --provider=digital_ocean\n\nThis command will create a new Droplet, setup your SSH key for authentication,\ncreate a new user account, and run the provisioners you have configured.\n\n**Supported Commands**\n\nThe provider supports the following Vagrant sub-commands:\n- `vagrant destroy` - Destroys the Droplet instance.\n- `vagrant ssh` - Logs into the Droplet instance using the configured user account.\n- `vagrant halt` - Powers off the Droplet instance.\n- `vagrant provision` - Runs the configured provisioners and rsyncs any specified `config.vm.synced_folder`.\n- `vagrant reload` - Reboots the Droplet instance.\n- `vagrant rebuild` - Destroys the Droplet instance and recreates it with the same IP address which was previously assigned.\n- `vagrant status` - Outputs the status (active, off, not created) for the Droplet instance.\n\nCompatibility\n-------------\nThis [DigitalOcean API](https://developers.digitalocean.com/documentation/changelog/) provider plugin for Vagrant has been tested with the following technology.\n\nDate Tested | Vagrant Version | vagrant-digitalocean Version | Host (Workstation) Operating System | Guest (DigitalOcean) Operating System\n------------|-----------------|------------------------------|-----------------------|--------------------------------------\n03/12/2020  | 2.2.7           | 0.9.4                        | OS X 10.14.6          | Ubuntu 18.04, Debian 10, Debian 9, Debian 8, CentOS 7\n03/22/2016  | 1.8.1           | 0.7.10                       | OS X 10.11.4          | CentOS 7.0\n04/03/2013  | 1.1.5           | 0.1.0                        | Ubuntu 12.04          | CentOS 6.3\n\n\nTroubleshooting\n---------------\nBefore submitting a GitHub issue, please ensure both Vagrant and vagrant-digitalocean are fully up-to-date.\n* For the latest Vagrant version, please visit the [Vagrant](https://www.vagrantup.com/) website\n* To update Vagrant plugins, run the following command: `vagrant plugin update`\n\n* `vagrant plugin install vagrant-digitalocean`\n    * Installation on OS X may not working due to a SSL certificate problem, and you may need to specify a certificate path explicitly. To do so, run `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`.\n\n\nFAQ\n---\n\n* 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.\n\n\nContribute\n----------\nTo contribute, fork then clone the repository, and then the following:\n\n**Developing**\n\n1. Install [RVM](https://rvm.io/rvm/install)\n2. If using MacOS, follow these [OpenSSL instructions](https://github.com/rvm/rvm/issues/5252#issuecomment-1298835941)\n3. Use Ruby v3.0.0 `rvm use 3.0.0`\n4. Run `bundle install`\n\n**Testing**\n\n1. Build and package your newly developed code:\n    * `rake gem:build`\n2. Then install the packaged plugin:\n    * `vagrant plugin install pkg/vagrant-digitalocean-*.gem`\n3. Once you're done testing, roll-back to the latest released version:\n    * `vagrant plugin uninstall vagrant-digitalocean`\n    * `vagrant plugin install vagrant-digitalocean`\n4. Once you're satisfied developing and testing your new code, please submit a pull request for review.\n\n**Releasing**\n\nTo release a new version of vagrant-digitalocean you will need to do the following:\n\n*(only contributors of the GitHub repo and owners of the project at RubyGems will have rights to do this)*\n\n1. First, bump, commit, and push the version in ~/lib/vagrant-digitalocean/version.rb:\n    * Follow [Semantic Versioning](http://semver.org/).\n2. Then, create a matching GitHub Release (this will also create a tag):\n    * Preface the version number with a `v`.\n    * https://github.com/devopsgroup-io/vagrant-digitalocean/releases\n3. You will then need to build and push the new gem to RubyGems:\n    * `rake gem:build`\n    * `gem push pkg/vagrant-digitalocean-0.7.6.gem`\n4. Then, when John Doe runs the following, they will receive the updated vagrant-digitalocean plugin:\n    * `vagrant plugin update`\n    * `vagrant plugin update vagrant-digitalocean`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevopsgroup-io%2Fvagrant-digitalocean","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevopsgroup-io%2Fvagrant-digitalocean","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevopsgroup-io%2Fvagrant-digitalocean/lists"}