vagrant-1cloud 1.1.1 → 1.1.2

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. metadata +3 -46
  3. data/Gemfile +0 -8
  4. data/LICENSE +0 -373
  5. data/README.md +0 -117
  6. data/Rakefile +0 -21
  7. data/build.sh +0 -32
  8. data/lib/vagrant-1cloud.rb +0 -20
  9. data/lib/vagrant-1cloud/actions.rb +0 -183
  10. data/lib/vagrant-1cloud/actions/check_state.rb +0 -19
  11. data/lib/vagrant-1cloud/actions/create.rb +0 -93
  12. data/lib/vagrant-1cloud/actions/destroy.rb +0 -31
  13. data/lib/vagrant-1cloud/actions/modify_provision_path.rb +0 -38
  14. data/lib/vagrant-1cloud/actions/power_off.rb +0 -35
  15. data/lib/vagrant-1cloud/actions/power_on.rb +0 -45
  16. data/lib/vagrant-1cloud/actions/private_network.rb +0 -108
  17. data/lib/vagrant-1cloud/actions/rebuild.rb +0 -78
  18. data/lib/vagrant-1cloud/actions/reload.rb +0 -42
  19. data/lib/vagrant-1cloud/actions/setup_key.rb +0 -60
  20. data/lib/vagrant-1cloud/actions/setup_sudo.rb +0 -43
  21. data/lib/vagrant-1cloud/actions/setup_user.rb +0 -58
  22. data/lib/vagrant-1cloud/actions/shut_down.rb +0 -35
  23. data/lib/vagrant-1cloud/commands/add_network.rb +0 -59
  24. data/lib/vagrant-1cloud/commands/create_network.rb +0 -135
  25. data/lib/vagrant-1cloud/commands/rebuild.rb +0 -29
  26. data/lib/vagrant-1cloud/config.rb +0 -62
  27. data/lib/vagrant-1cloud/errors.rb +0 -33
  28. data/lib/vagrant-1cloud/helpers/client.rb +0 -181
  29. data/lib/vagrant-1cloud/helpers/result.rb +0 -40
  30. data/lib/vagrant-1cloud/plugin.rb +0 -36
  31. data/lib/vagrant-1cloud/provider.rb +0 -106
  32. data/lib/vagrant-1cloud/version.rb +0 -5
  33. data/locales/en.yml +0 -90
  34. data/pom.xml +0 -59
  35. data/test/Vagrantfile +0 -14
  36. data/test/scripts/provision.sh +0 -3
  37. data/test/test.sh +0 -11
  38. data/test/test_id_rsa +0 -27
  39. data/test/test_id_rsa.pub +0 -1
  40. data/vagrant-1cloud.gemspec +0 -21
data/README.md DELETED
@@ -1,117 +0,0 @@
1
- 1cloud Vagrant Provider
2
- ==============================
3
-
4
- [![Gem](https://img.shields.io/gem/v/vagrant-1cloud.svg)](https://rubygems.org/gems/vagrant-1cloud)
5
-
6
- `vagrant-1cloud` is a Vagrant provider plugin that supports the management of [1cloud](https://1cloud.ru) VPS.
7
-
8
- Features include:
9
- - Create and destroy VPS
10
- - Power on and off VPS
11
- - Provision a VPS with shell
12
- - Setup a SSH public key for authentication
13
- - Create a new user account during VPS creation
14
- - Create private network
15
- - Add VPS to private network
16
- - Rebuild VPS
17
-
18
-
19
- Install
20
- -------
21
- Install the provider plugin using the Vagrant command-line interface:
22
-
23
- `vagrant plugin install vagrant-1cloud`
24
-
25
-
26
- Configure
27
- ---------
28
- Once 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 1cloud VPS:
29
-
30
- ```ruby
31
- Vagrant.configure('2') do |config|
32
-
33
- config.vm.define "vps1" do |config|
34
- config.vm.provider :onecloud do |provider, override|
35
- override.ssh.private_key_path = '~/.ssh/id_rsa'
36
- override.vm.box = 'onecloud'
37
- provider.token = 'YOUR TOKEN'
38
- end
39
- end
40
-
41
- config.vm.define "vps2" do |config|
42
- config.vm.provider :onecloud do |provider, override|
43
- override.ssh.private_key_path = '~/.ssh/id_rsa'
44
- override.vm.box = 'onecloud'
45
- provider.token = 'YOUR TOKEN'
46
- end
47
- end
48
-
49
- end
50
- ```
51
-
52
- **Configuration Requirements**
53
- - You *must* specify the `override.ssh.private_key_path` to enable authentication with the VPS.
54
- - You *must* specify your 1cloud Personal Access Token at `provider.token`.
55
-
56
- **Supported Configuration Attributes**
57
- The following attributes are available to further configure the provider:
58
- - `provider.image`
59
- * A string representing the image ID to use when creating a new VPS. It defaults to `7` (ubuntu-14-04-x64).
60
- - `provider.region`
61
- * A string representing the region to create the new VPS in. It defaults to `SdnSpb`.
62
- - `provider.hdd`
63
- * A number representing the disk space (in GB) to use when creating a new VPS (e.g. 50). It defaults to 10.
64
- - `provider.hdd_type`
65
- * A string representing the disk type to use when creating a new VPS (e.g. `SSD`). It defaults to `SAS`.
66
- - `provider.cpu`
67
- * A number representing the amount of cores to use when creating a new VPS (e.g. 2). It defaults to 1.
68
- - `provider.ram`
69
- * A number representing the RAM (in MB) to use when creating a new VPS (e.g. 1024). It defaults to 512.
70
- - `provider.hi_perf`
71
- * A boolean flag indicating whether to use high performance pool or not. It defaults to `false`.
72
- - `provider.private_net`
73
- * A hash representing the pair that indicates the private network name and IP address of a new VPS (e.g. {"testnet" => "192.168.1.10"} or {"testnet" => nil} to set IP address automatically). VPS isn't added to private network by default.
74
- - `config.vm.synced_folder`
75
- * 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/"]`.
76
-
77
- The provider will create a new user account with the specified SSH key for authorization if `config.ssh.username` is set.
78
-
79
-
80
- Run
81
- ---
82
- After creating your project's `Vagrantfile` with the required configuration
83
- attributes described above, you may create a new VPS with the following
84
- command:
85
-
86
- $ vagrant up --provider=onecloud
87
-
88
- This command will create a new VPS, setup your SSH key for authentication,
89
- create a new user account, and run the provisioners you have configured.
90
-
91
- **Supported Commands**
92
-
93
- The provider supports the following Vagrant sub-commands:
94
- - `vagrant destroy` - Destroys the VPS instance.
95
- - `vagrant ssh` - Logs into the VPS instance using the configured user account.
96
- - `vagrant halt` - Powers off the VPS instance.
97
- - `vagrant provision` - Runs the configured provisioners and rsyncs any specified `config.vm.synced_folder`.
98
- - `vagrant reload` - Reboots the VPS instance.
99
- - `vagrant status` - Outputs the status (active, off, not created) for the VPS instance.
100
- - `vagrant create-network` - Creates private network.
101
- - `vagrant add-network` - Adds VPS to specified private network.
102
- - `vagrant rebuild` - Rebuilds the VPS.
103
-
104
- Troubleshooting
105
- ---------------
106
- Before submitting a GitHub issue, please ensure both Vagrant and vagrant-onecloud are fully up-to-date.
107
- * For the latest Vagrant version, please visit the [Vagrant](https://www.vagrantup.com/) website
108
- * To update Vagrant plugins, run the following command: `vagrant plugin update`
109
-
110
- * `vagrant plugin install vagrant-onecloud`
111
- * 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`.
112
-
113
-
114
- FAQ
115
- ---
116
-
117
- * The Chef provisioner is no longer supported by default. 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.
data/Rakefile DELETED
@@ -1,21 +0,0 @@
1
- require 'bundler/gem_helper'
2
-
3
- namespace :gem do
4
- Bundler::GemHelper.install_tasks
5
- end
6
-
7
- task :test do
8
- result = sh 'bash test/test.sh'
9
- if result
10
- puts 'Success!'
11
- else
12
- puts 'Failure!'
13
- exit 1
14
- end
15
- end
16
-
17
- def env
18
- ['OC_CLIENT_ID', 'OC_API_KEY', 'VAGRANT_LOG'].inject('') do |acc, key|
19
- acc += "#{key}=#{ENV[key] || 'error'} "
20
- end
21
- end
data/build.sh DELETED
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4
- PLUGIN_NAME="vagrant-1cloud"
5
- PLUGIN_VERSION=$(cat ${DIR}/lib/${PLUGIN_NAME}/version.rb | grep VERSION | awk -F= '{gsub(" ","");gsub("'\''","");print $2}')
6
-
7
- docker stop $(docker ps -a -q --filter label=${PLUGIN_NAME})
8
-
9
- docker pull docker.avtodoria.dev:5043/test/vagrant
10
- BUILDER_ID=$(docker run -it -d --rm --label ${PLUGIN_NAME} docker.avtodoria.dev:5043/test/vagrant)
11
-
12
- docker cp ${DIR}/../${PLUGIN_NAME} ${BUILDER_ID}:/tmp/
13
-
14
- docker exec -i ${BUILDER_ID} bash -c "cd /tmp/${PLUGIN_NAME} && \
15
- git init && \
16
- bundle config git.allow_insecure true && \
17
- bundle install && \
18
- bundle exec rake gem:build && \
19
- bundle exec rake gem:install && \
20
- bundle exec rake test"
21
- if [ $? -ne 0 ]; then
22
- echo "${PLUGIN_NAME} plugin was not built successfully!"
23
- docker stop $(docker ps -a -q --filter label=${PLUGIN_NAME})
24
- exit 1
25
- fi
26
-
27
- mkdir -p ${DIR}/package
28
- docker cp ${BUILDER_ID}:/tmp/${PLUGIN_NAME}/pkg/${PLUGIN_NAME}-${PLUGIN_VERSION}.gem ${DIR}/package/${PLUGIN_NAME}.gem
29
-
30
- echo "${PLUGIN_NAME} plugin was built successfully."
31
- docker stop $(docker ps -a -q --filter label=${PLUGIN_NAME})
32
- exit 0
@@ -1,20 +0,0 @@
1
- require 'vagrant-1cloud/version'
2
- require 'vagrant-1cloud/plugin'
3
- require 'vagrant-1cloud/errors'
4
-
5
- module VagrantPlugins
6
- module OneCloud
7
- def self.source_root
8
- @source_root ||= Pathname.new(File.expand_path('../../', __FILE__))
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!
19
- end
20
- end
@@ -1,183 +0,0 @@
1
- require 'vagrant-1cloud/actions/check_state'
2
- require 'vagrant-1cloud/actions/create'
3
- require 'vagrant-1cloud/actions/destroy'
4
- require 'vagrant-1cloud/actions/shut_down'
5
- require 'vagrant-1cloud/actions/power_off'
6
- require 'vagrant-1cloud/actions/power_on'
7
- require 'vagrant-1cloud/actions/reload'
8
- require 'vagrant-1cloud/actions/setup_user'
9
- require 'vagrant-1cloud/actions/modify_provision_path'
10
- require 'vagrant-1cloud/actions/private_network'
11
- require 'vagrant-1cloud/actions/rebuild'
12
- require 'vagrant-1cloud/actions/setup_sudo'
13
- require 'vagrant-1cloud/actions/setup_key'
14
-
15
- module VagrantPlugins
16
- module OneCloud
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_1cloud.info.not_created')
27
- else
28
- b.use Call, DestroyConfirm do |env2, b2|
29
- if env2[:result]
30
- b2.use Destroy
31
- b2.use ProvisionerCleanup if defined?(ProvisionerCleanup)
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
38
-
39
- def self.ssh
40
- return Vagrant::Action::Builder.new.tap do |builder|
41
- builder.use ConfigValidate
42
- builder.use Call, CheckState do |env, b|
43
- case env[:machine_state]
44
- when :Active
45
- b.use SSHExec
46
- when :off
47
- env[:ui].info I18n.t('vagrant_1cloud.info.off')
48
- when :not_created
49
- env[:ui].info I18n.t('vagrant_1cloud.info.not_created')
50
- end
51
- end
52
- end
53
- end
54
-
55
- def self.ssh_run
56
- return Vagrant::Action::Builder.new.tap do |builder|
57
- builder.use ConfigValidate
58
- builder.use Call, CheckState do |env, b|
59
- case env[:machine_state]
60
- when :Active
61
- b.use SSHRun
62
- when :off
63
- env[:ui].info I18n.t('vagrant_1cloud.info.off')
64
- when :not_created
65
- env[:ui].info I18n.t('vagrant_1cloud.info.not_created')
66
- end
67
- end
68
- end
69
- end
70
-
71
- def self.provision
72
- return Vagrant::Action::Builder.new.tap do |builder|
73
- builder.use ConfigValidate
74
- builder.use Call, CheckState do |env, b|
75
- case env[:machine_state]
76
- when :Active
77
- b.use Provision
78
- b.use ModifyProvisionPath
79
- b.use SyncedFolders
80
- when :off
81
- env[:ui].info I18n.t('vagrant_1cloud.info.off')
82
- when :not_created
83
- env[:ui].info I18n.t('vagrant_1cloud.info.not_created')
84
- end
85
- end
86
- end
87
- end
88
-
89
- def self.addnet
90
- return Vagrant::Action::Builder.new.tap do |builder|
91
- builder.use ConfigValidate
92
- builder.use Call, CheckState do |env, b|
93
- case env[:machine_state]
94
- when :Active
95
- b.use PrivateNetwork
96
- when :off
97
- env[:ui].info I18n.t('vagrant_1cloud.info.off')
98
- when :not_created
99
- env[:ui].info I18n.t('vagrant_1cloud.info.not_created')
100
- end
101
- end
102
- end
103
- end
104
-
105
- def self.up
106
- return Vagrant::Action::Builder.new.tap do |builder|
107
- builder.use ConfigValidate
108
- builder.use Call, CheckState do |env, b|
109
- case env[:machine_state]
110
- when :Active
111
- env[:ui].info I18n.t('vagrant_1cloud.info.already_active')
112
- when :off
113
- b.use PowerOn
114
- b.use provision
115
- when :not_created
116
- b.use SetupKey
117
- b.use Create
118
- b.use PrivateNetwork
119
- b.use SetupSudo
120
- b.use SetupUser
121
- b.use provision
122
- end
123
- end
124
- end
125
- end
126
-
127
- def self.halt
128
- return Vagrant::Action::Builder.new.tap do |builder|
129
- builder.use ConfigValidate
130
- builder.use Call, CheckState do |env, b|
131
- case env[:machine_state]
132
- when :Active
133
- if env[:force_halt]
134
- b.use PowerOff
135
- else
136
- b.use ShutDown
137
- end
138
- when :off
139
- env[:ui].info I18n.t('vagrant_1cloud.info.already_off')
140
- when :not_created
141
- env[:ui].info I18n.t('vagrant_1cloud.info.not_created')
142
- end
143
- end
144
- end
145
- end
146
-
147
- def self.reload
148
- return Vagrant::Action::Builder.new.tap do |builder|
149
- builder.use ConfigValidate
150
- builder.use Call, CheckState do |env, b|
151
- case env[:machine_state]
152
- when :Active
153
- b.use Reload
154
- b.use provision
155
- when :off
156
- env[:ui].info I18n.t('vagrant_1cloud.info.off')
157
- when :not_created
158
- env[:ui].info I18n.t('vagrant_1cloud.info.not_created')
159
- end
160
- end
161
- end
162
- end
163
-
164
- def self.rebuild
165
- return Vagrant::Action::Builder.new.tap do |builder|
166
- builder.use ConfigValidate
167
- builder.use Call, CheckState do |env, b|
168
- case env[:machine_state]
169
- when :Active, :off
170
- b.use Rebuild
171
- b.use PrivateNetwork
172
- b.use SetupSudo
173
- b.use SetupUser
174
- b.use provision
175
- when :not_created
176
- env[:ui].info I18n.t('vagrant_1cloud.info.not_created')
177
- end
178
- end
179
- end
180
- end
181
- end
182
- end
183
- end
@@ -1,19 +0,0 @@
1
- module VagrantPlugins
2
- module OneCloud
3
- module Actions
4
- class CheckState
5
- def initialize(app, env)
6
- @app = app
7
- @machine = env[:machine]
8
- @logger = Log4r::Logger.new('vagrant::onecloud::check_state')
9
- end
10
-
11
- def call(env)
12
- env[:machine_state] = @machine.state.id
13
- @logger.info "Machine state is '#{@machine.state.id}'"
14
- @app.call(env)
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,93 +0,0 @@
1
- require 'vagrant-1cloud/helpers/client'
2
-
3
- module VagrantPlugins
4
- module OneCloud
5
- module Actions
6
- class Create
7
- include Helpers::Client
8
-
9
- def initialize(app, env)
10
- @app = app
11
- @machine = env[:machine]
12
- @client = client
13
- @logger = Log4r::Logger.new('vagrant::onecloud::create')
14
- end
15
-
16
- def call(env)
17
- ssh_key_id = [env[:ssh_key_id]]
18
-
19
- # submit new droplet request
20
- result = @client.post('/server', {
21
- :HDD => @machine.provider_config.hdd,
22
- :HDDType => @machine.provider_config.hdd_type,
23
- :CPU => @machine.provider_config.cpu,
24
- :RAM => @machine.provider_config.ram,
25
- :DCLocation => @machine.provider_config.region,
26
- :ImageID => @machine.provider_config.image,
27
- :Name => @machine.name,
28
- :SshKeys => ssh_key_id,
29
- :isHighPerformance => @machine.provider_config.hi_perf
30
- }.delete_if { |k, v| v.nil? })
31
-
32
- # assign the machine id for reference in other commands
33
- @machine.id = result['body']['ID'].to_s
34
-
35
- # wait for request to complete
36
- result = @client.request("/server/#{@machine.id}/action")
37
- env[:ui].info I18n.t('vagrant_1cloud.info.creating')
38
- @client.wait_for_event(env, @machine.id, result['body'].first['ID'])
39
-
40
- # refresh droplet state with provider
41
- droplet = Provider.droplet(@machine, :refresh => true)
42
-
43
- user = @machine.config.ssh.username
44
- @machine.config.ssh.username = 'root'
45
-
46
- # wait for ssh to be ready
47
- env[:ui].info I18n.t('vagrant_1cloud.info.ssh')
48
- @client.wait_for_ssh(env, 3, 30)
49
-
50
- # change authorized_keys file permissions, host name and set public network rules
51
- @machine.communicate.execute(<<-BASH)
52
- chmod 600 ~/.ssh/authorized_keys
53
-
54
- sed -i -e "s/127.0.1.1.*/127.0.1.1\t#{@machine.config.vm.hostname}/" /etc/hosts
55
- sed -i -e "s/#{droplet['IP']}.*/#{droplet['IP']}\t#{@machine.config.vm.hostname}/" /etc/hosts
56
- echo #{@machine.config.vm.hostname} > /etc/hostname
57
- hostname #{@machine.config.vm.hostname}
58
-
59
- ifdown -a
60
- export INTERFACE=eth0
61
- export MATCHADDR=$(ifconfig eth0 | awk 'NR==1{print $NF}')
62
- export MATCHID=$(udevadm info /sys/class/net/eth0 | grep P: | awk -F/ '{print $(NF-2)}')
63
- /lib/udev/write_net_rules
64
- udevadm control --reload-rules && udevadm trigger
65
- ifup -a
66
- BASH
67
-
68
- @machine.config.ssh.username = user
69
-
70
- @app.call(env)
71
- end
72
-
73
- # Both the recover and terminate are stolen almost verbatim from
74
- # the Vagrant AWS provider up action
75
- def recover(env)
76
- return if env['vagrant.error'].is_a?(Vagrant::Errors::VagrantError)
77
-
78
- if @machine.state.id != :not_created
79
- terminate(env)
80
- end
81
- end
82
-
83
- def terminate(env)
84
- destroy_env = env.dup
85
- destroy_env.delete(:interrupted)
86
- destroy_env[:config_validate] = false
87
- destroy_env[:force_confirm_destroy] = true
88
- env[:action_runner].run(Actions.destroy, destroy_env)
89
- end
90
- end
91
- end
92
- end
93
- end