vagrant-digitalocean 0.0.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -1
- data/Gemfile +1 -4
- data/LICENSE.txt +2 -1
- data/README.md +114 -96
- data/Rakefile +8 -10
- data/box/digital_ocean.box +0 -0
- data/lib/vagrant-digitalocean.rb +12 -4
- data/lib/vagrant-digitalocean/actions.rb +159 -0
- data/lib/vagrant-digitalocean/actions/check_state.rb +19 -0
- data/lib/vagrant-digitalocean/actions/create.rb +36 -21
- data/lib/vagrant-digitalocean/actions/destroy.rb +10 -8
- data/lib/vagrant-digitalocean/actions/modify_provision_path.rb +15 -17
- data/lib/vagrant-digitalocean/actions/power_off.rb +33 -0
- data/lib/vagrant-digitalocean/actions/power_on.rb +34 -0
- data/lib/vagrant-digitalocean/actions/rebuild.rb +9 -9
- data/lib/vagrant-digitalocean/actions/reload.rb +31 -0
- data/lib/vagrant-digitalocean/actions/setup_key.rb +56 -0
- data/lib/vagrant-digitalocean/actions/setup_provisioner.rb +26 -15
- data/lib/vagrant-digitalocean/actions/setup_sudo.rb +19 -12
- data/lib/vagrant-digitalocean/actions/setup_user.rb +25 -27
- data/lib/vagrant-digitalocean/actions/sync_folders.rb +18 -17
- data/lib/vagrant-digitalocean/commands/rebuild.rb +2 -3
- data/lib/vagrant-digitalocean/config.rb +30 -33
- data/lib/vagrant-digitalocean/errors.rb +0 -2
- data/lib/vagrant-digitalocean/helpers/client.rb +13 -15
- data/lib/vagrant-digitalocean/plugin.rb +5 -14
- data/lib/vagrant-digitalocean/provider.rb +48 -34
- data/lib/vagrant-digitalocean/version.rb +1 -1
- data/locales/en.yml +32 -40
- data/test/Vagrantfile +37 -0
- data/test/cookbooks/test/recipes/default.rb +1 -1
- data/test/scripts/provision.sh +3 -0
- data/test/test.sh +14 -0
- metadata +15 -27
- data/bin/build.sh +0 -39
- data/bin/test_run.sh +0 -15
- data/box/Vagrantfile +0 -20
- data/box/cookbooks/foo/recipes/default.rb +0 -1
- data/lib/vagrant-digitalocean/action.rb +0 -105
- data/lib/vagrant-digitalocean/actions/check_ssh_user.rb +0 -46
- data/lib/vagrant-digitalocean/actions/is_active.rb +0 -16
- data/lib/vagrant-digitalocean/actions/message_is_active.rb +0 -18
- data/lib/vagrant-digitalocean/actions/read_state.rb +0 -33
- data/lib/vagrant-digitalocean/actions/setup_ssh_key.rb +0 -60
- data/lib/vagrant-digitalocean/helpers/file.rb +0 -41
- data/lib/vagrant-digitalocean/helpers/translator.rb +0 -20
- data/scripts/chef/debian.sh +0 -5
- data/scripts/chef/redhat.sh +0 -5
- data/scripts/nfs/debian.sh +0 -4
- data/scripts/nfs/redhat.sh +0 -11
- data/scripts/sudo/redhat.sh +0 -2
- data/test/Vagrantfile.centos +0 -19
- data/test/Vagrantfile.ubuntu +0 -21
- data/test/provision.sh +0 -3
- data/test/scripts/setup_user.sh +0 -18
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -1,7 +1,4 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
|
4
|
-
gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git"
|
5
|
-
|
6
|
-
# Specify your gem's dependencies in vagrant-digitalocean.gemspec
|
3
|
+
gem 'vagrant', :git => 'git://github.com/mitchellh/vagrant.git', :tag => 'v1.1.5'
|
7
4
|
gemspec
|
data/LICENSE.txt
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
Copyright (c) 2013 John Bender
|
2
|
+
Copyright (c) 2013 Shawn Dahlen
|
2
3
|
|
3
4
|
MIT License
|
4
5
|
|
@@ -19,4 +20,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
20
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
21
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
22
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,116 +1,134 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
`vagrant-digitalocean` is a provider plugin for Vagrant that
|
1
|
+
Digital Ocean Vagrant Provider
|
2
|
+
==============================
|
3
|
+
`vagrant-digitalocean` is a provider plugin for Vagrant that supports the
|
4
4
|
management of [Digital Ocean](https://www.digitalocean.com/) droplets
|
5
5
|
(instances).
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
the SSH key using the `ssh_key_name` attribute within the provider config
|
15
|
-
section. This is useful for de-conflict SSH keys used by different
|
16
|
-
individuals when creating machines on Digital Ocean.
|
17
|
-
|
18
|
-
```ruby
|
19
|
-
config.vm.provider :digital_ocean do |provider|
|
20
|
-
provider.ssh_key_name = "My Laptop"
|
21
|
-
provider.ssh_private_key_path = "~/.ssh/id_rsa.pub"
|
22
|
-
|
23
|
-
# additional configuration here
|
24
|
-
end
|
25
|
-
```
|
26
|
-
|
27
|
-
The provider will assume the public key path is identical to the private
|
28
|
-
key path with the *.pub* extention.
|
29
|
-
|
30
|
-
By default, the provider uses the `root` account for SSH access. This is
|
31
|
-
required for initial droplet creation and provisioning. You may specify
|
32
|
-
an account that may be used for subsequent SSH access and provisioning
|
33
|
-
by setting the `ssh_username` attribute within the provider config
|
34
|
-
section.
|
35
|
-
|
36
|
-
## Supported Guests/Hosts
|
37
|
-
|
38
|
-
The project is currently in alpha state and has been tested on the
|
39
|
-
following hosts and guests:
|
40
|
-
|
41
|
-
Hosts:
|
42
|
-
|
43
|
-
* Ubuntu 12.04
|
44
|
-
* Mac OS X
|
7
|
+
Current features include:
|
8
|
+
- create and destroy droplets
|
9
|
+
- power on and off droplets
|
10
|
+
- rebuild a droplet
|
11
|
+
- provision a droplet with the shell or Chef provisioners
|
12
|
+
- setup a SSH public key for authentication
|
13
|
+
- create a new user account during droplet creation
|
45
14
|
|
46
|
-
|
15
|
+
The provider has been tested with Vagrant 1.1.5 using Ubuntu 12.04 and
|
16
|
+
CentOS 6.3 guest operating systems.
|
47
17
|
|
48
|
-
|
49
|
-
|
18
|
+
Install
|
19
|
+
-------
|
20
|
+
Installation of the provider requires two steps:
|
50
21
|
|
51
|
-
|
22
|
+
1. Install the provider plugin using the Vagrant command-line interface:
|
52
23
|
|
53
|
-
|
54
|
-
bootstrapping on the server. Chef is currently the only supported provisioner.
|
55
|
-
Adding support for puppet and others requires adding the install scripts.
|
24
|
+
$ vagrant plugin install vagrant-digitalocean
|
56
25
|
|
57
|
-
|
26
|
+
2. Install the default provider box:
|
58
27
|
|
59
|
-
|
28
|
+
$ vagrant box add digital_ocean https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box
|
60
29
|
|
61
|
-
|
30
|
+
**NOTE:** If you are using a Mac, you may need to install a CA bundle to enable SSL
|
31
|
+
communication with the Digital Ocean API. It is recommended to first install
|
32
|
+
[Homebrew](http://mxcl.github.io/homebrew/). With Homebrew installed, run
|
33
|
+
the following command to install the bundle:
|
62
34
|
|
63
|
-
|
64
|
-
provider needs to be installed.
|
35
|
+
$ brew install curl-ca-bundle
|
65
36
|
|
66
|
-
|
37
|
+
Once the bundle is installed, add the following environment variable to your
|
38
|
+
`.bash_profile` script and `source` it:
|
67
39
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
[API access page](https://www.digitalocean.com/api_access) to retrieve
|
72
|
-
the client identifier and API key associated with your account.
|
73
|
-
|
74
|
-
### Config
|
40
|
+
```bash
|
41
|
+
export SSL_CERT_FILE=/usr/local/opt/curl-ca-bundle/share/ca-bundle.crt
|
42
|
+
```
|
75
43
|
|
76
|
-
|
44
|
+
Configure
|
45
|
+
---------
|
46
|
+
Once the provider has been installed, you will need to configure your project
|
47
|
+
to use it. The most basic `Vagrantfile` to create a droplet on Digital Ocean
|
48
|
+
is shown below:
|
77
49
|
|
78
50
|
```ruby
|
79
|
-
Vagrant.configure(
|
80
|
-
config.
|
81
|
-
|
82
|
-
config.vm.provider :digital_ocean do |
|
83
|
-
|
84
|
-
|
85
|
-
vm.image = "Ubuntu 12.04 x32 Server"
|
86
|
-
vm.region = "New York 1"
|
87
|
-
vm.size = "512MB"
|
88
|
-
vm.ssh_key_name = "My Key"
|
89
|
-
vm.ssh_private_key_path = "~/.ssh/id_rsa"
|
90
|
-
vm.ssh_username = "test"
|
91
|
-
|
92
|
-
# optional config for SSL cert on OSX and others
|
93
|
-
vm.ca_path = "/usr/local/etc/openssl/ca-bundle.crt"
|
51
|
+
Vagrant.configure('2') do
|
52
|
+
config.ssh.private_key_path = '~/.ssh/id_rsa'
|
53
|
+
config.vm.box = 'digital_ocean'
|
54
|
+
config.vm.provider :digital_ocean do |provider|
|
55
|
+
provider.client_id = 'YOUR CLIENT ID'
|
56
|
+
provider.api_key = 'YOUR API KEY'
|
94
57
|
end
|
95
58
|
end
|
96
59
|
```
|
97
60
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
61
|
+
Please note the following:
|
62
|
+
- You *must* specify the `config.ssh.private_key_path` to enable authentication
|
63
|
+
with the droplet. The provider will create a new Digital Ocean SSH key using
|
64
|
+
your public key which is assumed to be the `private_key_path` with a *.pub*
|
65
|
+
extension.
|
66
|
+
- You *must* specify your Digital Ocean Client and API keys. These may be
|
67
|
+
found on the control panel within the *My Settings > API Access* section.
|
68
|
+
|
69
|
+
**Supported Configuration Attributes**
|
70
|
+
|
71
|
+
The following attributes are available to further configure the provider:
|
72
|
+
- `provider.image` - A string representing the image to use when creating a
|
73
|
+
new droplet (e.g. `Debian 6.0 x64`). The available options may
|
74
|
+
be found on Digital Ocean's new droplet [form](https://www.digitalocean.com/droplets/new).
|
75
|
+
It defaults to `Ubuntu 12.04 x64 Server`.
|
76
|
+
- `provider.region` - A string representing the region to create the new
|
77
|
+
droplet in. The available options are `New York 1` and `Amsterdam 1`. It
|
78
|
+
defaults to `New York 1`.
|
79
|
+
- `provider.size` - A string representing the size to use when creating a
|
80
|
+
new droplet (e.g. `1GB`). It defaults to `512MB`.
|
81
|
+
- `provider.ssh_key_name` - A String representing the name to use when creating
|
82
|
+
a Digital Ocean SSH key for droplet authentication. It defaults to `Vagrant`.
|
83
|
+
|
84
|
+
By default, the provider will create a new user account, `vagrant`, and setup
|
85
|
+
the specified SSH key for authentication. To change the user, set
|
86
|
+
`config.ssh.username` to the name of the account to create. When Vagrant 1.2 is
|
87
|
+
released, a new user account will only be created if `config.ssh.username` is
|
88
|
+
set.
|
89
|
+
|
90
|
+
*NOTE:* For those using a 0.0.x version of the provider,
|
91
|
+
`provider.ssh_username` and `provider.ssh_private_key_path` have been removed
|
92
|
+
in favor of the configuration options above. This approach better aligns the
|
93
|
+
provider with upcoming changes in Vagrant 1.2.
|
94
|
+
|
95
|
+
Run
|
96
|
+
---
|
97
|
+
After creating your project's `Vagrantfile` with the required configuration
|
98
|
+
attributes described above, you may create a new droplet with the following
|
99
|
+
command:
|
100
|
+
|
101
|
+
$ vagrant up --provider=digital_ocean
|
102
|
+
|
103
|
+
This command will create a new droplet, setup your SSH key for authentication,
|
104
|
+
create a new user account, and run the provisioners you have configured.
|
105
|
+
|
106
|
+
**Supported Commands**
|
107
|
+
|
108
|
+
The provider supports the following Vagrant sub-commands:
|
109
|
+
- `vagrant destroy` - Destroys the droplet instance.
|
110
|
+
- `vagrant ssh` - Logs into the droplet instance using the configured user
|
111
|
+
account.
|
112
|
+
- `vagrant halt` - Powers off the droplet instance.
|
113
|
+
- `vagrant provision` - Runs the configured provisioners and rsyncs any
|
114
|
+
specified `config.vm.synced_folder`.
|
115
|
+
- `vagrant reload` - Reboots the droplet instance.
|
116
|
+
- `vagrant rebuild` - Destroys the droplet instance and recreates it with the
|
117
|
+
same IP address is was assigned to previously.
|
118
|
+
- `vagrant status` - Outputs the status (active, off, not created) for the
|
119
|
+
droplet instance.
|
120
|
+
|
121
|
+
Contribute
|
122
|
+
----------
|
123
|
+
To contribute, clone the repository, and use [Bundler](http://gembundler.com)
|
124
|
+
to install dependencies:
|
125
|
+
|
126
|
+
$ bundle
|
127
|
+
|
128
|
+
To run the provider's tests:
|
129
|
+
|
130
|
+
$ bundle exec rake test
|
131
|
+
|
132
|
+
You can now make modifications. Running `vagrant` within the Bundler
|
133
|
+
environment will ensure that plugins installed in your Vagrant
|
134
|
+
environment are not loaded.
|
data/Rakefile
CHANGED
@@ -1,24 +1,22 @@
|
|
1
|
-
require
|
1
|
+
require 'bundler/gem_helper'
|
2
2
|
|
3
|
-
namespace
|
4
|
-
|
5
|
-
system "bash bin/build.sh"
|
6
|
-
end
|
3
|
+
namespace :gem do
|
4
|
+
Bundler::GemHelper.install_tasks
|
7
5
|
end
|
8
6
|
|
9
|
-
task
|
10
|
-
result =
|
7
|
+
task :test do
|
8
|
+
result = sh 'bash test/test.sh'
|
11
9
|
|
12
10
|
if result
|
13
|
-
puts
|
11
|
+
puts 'Success!'
|
14
12
|
else
|
15
|
-
puts
|
13
|
+
puts 'Failure!'
|
16
14
|
exit 1
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
20
18
|
def env
|
21
|
-
['DO_CLIENT_ID', 'DO_API_KEY', 'VAGRANT_LOG'].inject(
|
19
|
+
['DO_CLIENT_ID', 'DO_API_KEY', 'VAGRANT_LOG'].inject('') do |acc, key|
|
22
20
|
acc += "#{key}=#{ENV[key] || 'error'} "
|
23
21
|
end
|
24
22
|
end
|
data/box/digital_ocean.box
CHANGED
Binary file
|
data/lib/vagrant-digitalocean.rb
CHANGED
@@ -1,12 +1,20 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require "vagrant-digitalocean/errors"
|
1
|
+
require 'vagrant-digitalocean/version'
|
2
|
+
require 'vagrant-digitalocean/plugin'
|
3
|
+
require 'vagrant-digitalocean/errors'
|
5
4
|
|
6
5
|
module VagrantPlugins
|
7
6
|
module DigitalOcean
|
8
7
|
def self.source_root
|
9
8
|
@source_root ||= Pathname.new(File.expand_path('../../', __FILE__))
|
10
9
|
end
|
10
|
+
|
11
|
+
def self.public_key(private_key_path)
|
12
|
+
File.read("#{private_key_path}.pub")
|
13
|
+
rescue
|
14
|
+
raise Errors::PublicKeyError, :path => "#{private_key_path}.pub"
|
15
|
+
end
|
16
|
+
|
17
|
+
I18n.load_path << File.expand_path('locales/en.yml', source_root)
|
18
|
+
I18n.reload!
|
11
19
|
end
|
12
20
|
end
|
@@ -0,0 +1,159 @@
|
|
1
|
+
require 'vagrant-digitalocean/actions/check_state'
|
2
|
+
require 'vagrant-digitalocean/actions/create'
|
3
|
+
require 'vagrant-digitalocean/actions/destroy'
|
4
|
+
require 'vagrant-digitalocean/actions/power_off'
|
5
|
+
require 'vagrant-digitalocean/actions/power_on'
|
6
|
+
require 'vagrant-digitalocean/actions/rebuild'
|
7
|
+
require 'vagrant-digitalocean/actions/reload'
|
8
|
+
require 'vagrant-digitalocean/actions/setup_user'
|
9
|
+
require 'vagrant-digitalocean/actions/setup_sudo'
|
10
|
+
require 'vagrant-digitalocean/actions/setup_provisioner'
|
11
|
+
require 'vagrant-digitalocean/actions/setup_key'
|
12
|
+
require 'vagrant-digitalocean/actions/sync_folders'
|
13
|
+
require 'vagrant-digitalocean/actions/modify_provision_path'
|
14
|
+
|
15
|
+
module VagrantPlugins
|
16
|
+
module DigitalOcean
|
17
|
+
module Actions
|
18
|
+
include Vagrant::Action::Builtin
|
19
|
+
|
20
|
+
def self.destroy
|
21
|
+
return Vagrant::Action::Builder.new.tap do |builder|
|
22
|
+
builder.use ConfigValidate
|
23
|
+
builder.use Call, CheckState do |env, b|
|
24
|
+
case env[:machine_state]
|
25
|
+
when :not_created
|
26
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.not_created')
|
27
|
+
else
|
28
|
+
b.use Destroy
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.ssh
|
35
|
+
return Vagrant::Action::Builder.new.tap do |builder|
|
36
|
+
builder.use ConfigValidate
|
37
|
+
builder.use Call, CheckState do |env, b|
|
38
|
+
case env[:machine_state]
|
39
|
+
when :active
|
40
|
+
b.use SSHExec
|
41
|
+
when :off
|
42
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.off')
|
43
|
+
when :not_created
|
44
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.not_created')
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.ssh_run
|
51
|
+
return Vagrant::Action::Builder.new.tap do |builder|
|
52
|
+
builder.use ConfigValidate
|
53
|
+
builder.use Call, CheckState do |env, b|
|
54
|
+
case env[:machine_state]
|
55
|
+
when :active
|
56
|
+
b.use SSHRun
|
57
|
+
when :off
|
58
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.off')
|
59
|
+
when :not_created
|
60
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.not_created')
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.provision
|
67
|
+
return Vagrant::Action::Builder.new.tap do |builder|
|
68
|
+
builder.use ConfigValidate
|
69
|
+
builder.use Call, CheckState do |env, b|
|
70
|
+
case env[:machine_state]
|
71
|
+
when :active
|
72
|
+
b.use Provision
|
73
|
+
b.use SetupProvisioner
|
74
|
+
b.use ModifyProvisionPath
|
75
|
+
b.use SyncFolders
|
76
|
+
when :off
|
77
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.off')
|
78
|
+
when :not_created
|
79
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.not_created')
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.up
|
86
|
+
return Vagrant::Action::Builder.new.tap do |builder|
|
87
|
+
builder.use ConfigValidate
|
88
|
+
builder.use Call, CheckState do |env, b|
|
89
|
+
case env[:machine_state]
|
90
|
+
when :active
|
91
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.already_active')
|
92
|
+
when :off
|
93
|
+
b.use PowerOn
|
94
|
+
b.use provision
|
95
|
+
when :not_created
|
96
|
+
b.use SetupKey
|
97
|
+
b.use Create
|
98
|
+
b.use SetupSudo
|
99
|
+
b.use SetupUser
|
100
|
+
b.use provision
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.halt
|
107
|
+
return Vagrant::Action::Builder.new.tap do |builder|
|
108
|
+
builder.use ConfigValidate
|
109
|
+
builder.use Call, CheckState do |env, b|
|
110
|
+
case env[:machine_state]
|
111
|
+
when :active
|
112
|
+
b.use PowerOff
|
113
|
+
when :off
|
114
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.already_off')
|
115
|
+
when :not_created
|
116
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.not_created')
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def self.reload
|
123
|
+
return Vagrant::Action::Builder.new.tap do |builder|
|
124
|
+
builder.use ConfigValidate
|
125
|
+
builder.use Call, CheckState do |env, b|
|
126
|
+
case env[:machine_state]
|
127
|
+
when :active
|
128
|
+
b.use Reload
|
129
|
+
b.use provision
|
130
|
+
when :off
|
131
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.off')
|
132
|
+
when :not_created
|
133
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.not_created')
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
def self.rebuild
|
140
|
+
return Vagrant::Action::Builder.new.tap do |builder|
|
141
|
+
builder.use ConfigValidate
|
142
|
+
builder.use Call, CheckState do |env, b|
|
143
|
+
case env[:machine_state]
|
144
|
+
when :active
|
145
|
+
b.use Rebuild
|
146
|
+
b.use SetupSudo
|
147
|
+
b.use SetupUser
|
148
|
+
b.use provision
|
149
|
+
when :off
|
150
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.off')
|
151
|
+
when :not_created
|
152
|
+
env[:ui].info I18n.t('vagrant_digital_ocean.info.not_created')
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|