vagrant-ganeti 0.0.1 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +78 -44
- data/example_box/Vagrantfile +1 -1
- data/example_box/ganeti.box +0 -0
- data/example_box/ganeti1.box +0 -0
- data/lib/{vagrant-plugin-ganeti.rb → vagrant-ganeti.rb} +3 -3
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/connect_ganeti.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/is_created.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/is_reachable.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/message_already_created.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/message_not_created.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/message_not_reachable.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/message_will_not_destroy.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/read_ssh_info.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/read_state.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/remove_instance.rb +18 -2
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/run_instance.rb +2 -2
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/sync_folders.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/timed_provision.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/unlink_server.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/action/warn_networks.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/config.rb +0 -1
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/errors.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/plugin.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/provider.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/util/ganeti_client.rb +1 -1
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/util/timer.rb +0 -0
- data/lib/{vagrant-plugin-ganeti → vagrant-ganeti}/version.rb +1 -1
- data/{vagrant-plugin-ganeti.gemspec → vagrant-ganeti.gemspec} +3 -3
- metadata +32 -31
data/README.md
CHANGED
@@ -2,20 +2,20 @@
|
|
2
2
|
This is a Vagrant 1.2+ plugin that adds an Ganeti provider to Vagrant, allowing Vagrant to control and provision
|
3
3
|
machines in Ganeti.
|
4
4
|
|
5
|
-
NOTE
|
6
|
-
NOTE: This project is work in progress, there are lot of things which might not work yet.
|
5
|
+
**NOTE:** This plugin requires **Vagrant 1.2**
|
7
6
|
|
8
|
-
|
7
|
+
**NOTE:** This project is work in progress, there are lot of things which might not work yet.
|
9
8
|
|
10
|
-
|
9
|
+
## Installation
|
11
10
|
|
12
|
-
|
11
|
+
Building the Gem from source:
|
13
12
|
|
13
|
+
$ gem build 'vagrant-ganeti.gemspec'
|
14
14
|
|
15
15
|
|
16
|
-
Install using standard Vagrant 1.1+ plugin installation methods. After installing, vagrant up and specify the ganeti provider. An example is shown below.
|
16
|
+
Alternatively you could, Install using standard Vagrant 1.1+ plugin installation methods. After installing, vagrant up and specify the ganeti provider. An example is shown below.
|
17
17
|
|
18
|
-
$ vagrant plugin install vagrant-
|
18
|
+
$ vagrant plugin install vagrant-ganeti
|
19
19
|
|
20
20
|
## Usage
|
21
21
|
|
@@ -41,25 +41,28 @@ And then make a Vagrantfile that looks like the following, filling in your infor
|
|
41
41
|
ganeti.os_type = "image+debian-squeeze"
|
42
42
|
ganeti.instance_name = "gimager3.organisation.org"
|
43
43
|
ganeti.pnode = "gnode.organisation.org"
|
44
|
-
ganeti.nics = [{"ip"=>"10.10.10.100"}]
|
45
44
|
ganeti.disks =[{"size"=>"8000"}]
|
46
45
|
ganeti.disk_template = "plain"
|
47
|
-
override.ssh.username = "
|
48
|
-
override.ssh.private_key_path = "Path to your private key"
|
46
|
+
override.ssh.username = "root"
|
49
47
|
end
|
50
48
|
end
|
51
49
|
|
52
50
|
|
53
51
|
And then run vagrant up --provider=ganeti.
|
52
|
+
|
53
|
+
This will start an instance in the Ganeti Cluster.
|
54
54
|
|
55
|
-
|
55
|
+
Other overridable settings include
|
56
|
+
|
57
|
+
override.ssh.username = "User Name"
|
58
|
+
override.ssh.private_key_path = "Path to your private key"
|
56
59
|
|
57
60
|
If you have issues with SSH connecting, make sure that the instances are being launched with a security group that allows SSH access.
|
58
61
|
|
59
62
|
## Box Format
|
60
63
|
|
61
64
|
Every provider in Vagrant must introduce a custom box format. This
|
62
|
-
provider introduces `
|
65
|
+
provider introduces `ganeti` boxes. You can view an example box in
|
63
66
|
the [example_box/ directory](https://github.com/osuosl/vagrant-plugin-ganeti/master/example_box/).
|
64
67
|
That directory also contains instructions on how to build a box.
|
65
68
|
|
@@ -70,38 +73,44 @@ provider-specific configuration for this provider.
|
|
70
73
|
## Configuration
|
71
74
|
|
72
75
|
This provider exposes quite a few provider-specific configuration options:
|
73
|
-
|
74
|
-
* `rapi_user` - The username for accessing the RAPI.
|
75
|
-
* `rapi_pass` - The password for the corrensponding user.
|
76
|
-
* `cluster` - The host address of the master Ganeti Node.
|
77
|
-
* `
|
78
|
-
|
79
|
-
|
80
|
-
* `
|
81
|
-
* `
|
82
|
-
* `
|
83
|
-
* `
|
84
|
-
* `
|
85
|
-
*
|
86
|
-
* `
|
87
|
-
*
|
88
|
-
* `
|
89
|
-
* `
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
* `
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
* `
|
99
|
-
* `
|
100
|
-
* `
|
101
|
-
* `
|
102
|
-
* `
|
103
|
-
* `
|
104
|
-
|
76
|
+
### Required Parameters
|
77
|
+
* `rapi_user` - The username for accessing the RAPI.
|
78
|
+
* `rapi_pass` - The password for the corrensponding user.
|
79
|
+
* `cluster` - The host address of the master Ganeti Node.
|
80
|
+
* `instance_name` - The name of the instance.
|
81
|
+
|
82
|
+
### Optional Parameters
|
83
|
+
* `os_type` - The OS that needs to be booted up. **Note :** This will override the default box .
|
84
|
+
* `mode` - Mode of creation. Defaults to create.
|
85
|
+
* `pnode` - The primary node where instance needs to be created. Defaults to None.
|
86
|
+
* `snode` - The Secondary node in case of drbd is used. Defaults to None.
|
87
|
+
* `nics` - Network configuration.
|
88
|
+
* List of (Dictionary with keys of (OneOf bridge, name, ip, vlan, mac, link, mode, network) and values of (None or String)
|
89
|
+
* `disks` - The Size of the Disks . Defaults to 8 G .
|
90
|
+
* List of (Dictionary with keys of (OneOf name, vg, adopt, spindles, mode, provider, metavg, size) and values of (NonEmptyString or Integer)
|
91
|
+
* `disk_template` - The type of the disk template. Defaults to plain .
|
92
|
+
* `iallocator` - The name of the iallocator policy. Defaults to cluster default .
|
93
|
+
* `memory` - The size of the memory. Defaults to plain .
|
94
|
+
* `vcpus` - The No of VCPUS . Defaults to None .
|
95
|
+
* `ip_check` - Either 'true' or 'false' (Without quotes). Defaults to true .
|
96
|
+
* `name_check` - Either 'true' or 'false' (Without quotes) . Defaults to true .
|
97
|
+
|
98
|
+
More about Ganeti Instance parameters can be found [here](http://docs.ganeti.org/ganeti/current/html/rapi.html#id138)
|
99
|
+
|
100
|
+
####hvparams settings
|
101
|
+
* `boot_order` - Defaults to None .
|
102
|
+
* `cdrom_image_path` - Defaults to None .
|
103
|
+
* `nic_type` - Defaults to None .
|
104
|
+
* `disk_type` - Defaults to None .
|
105
|
+
* `cpu_type` - Defaults to None .
|
106
|
+
* `kernel_path` - Defaults to None .
|
107
|
+
* `kernel_args` - Defaults to None .
|
108
|
+
* `initrd_path` - Defaults to None .
|
109
|
+
* `root_path` - Defaults to None .
|
110
|
+
* `serial_console` - Defaults to None .
|
111
|
+
* `kvm_flag` - Defaults to None .
|
112
|
+
|
113
|
+
More about hvparam settings can be found [here](http://docs.ganeti.org/ganeti/current/man/gnt-instance.html)
|
105
114
|
|
106
115
|
## Networks
|
107
116
|
|
@@ -119,6 +128,31 @@ the remote machine over SSH.
|
|
119
128
|
This is good enough for all built-in Vagrant provisioners (shell,
|
120
129
|
chef, and puppet) to work!
|
121
130
|
|
131
|
+
## Advanced Examples
|
132
|
+
#### Having Multiple Disks
|
133
|
+
|
134
|
+
Vagrant.configure("2") do |config|
|
135
|
+
config.vm.box = "ganeti"
|
136
|
+
config.vm.provider :ganeti do |ganeti, override|
|
137
|
+
.....
|
138
|
+
ganeti.disks =[{"size"=>"8000"},{"size"=>"16000"}]
|
139
|
+
.....
|
140
|
+
end
|
141
|
+
end
|
142
|
+
This creates two disks in the instance one of 8G and another of 16G.
|
143
|
+
|
144
|
+
#### Having Multiple Nics
|
145
|
+
|
146
|
+
Vagrant.configure("2") do |config|
|
147
|
+
config.vm.box = "ganeti"
|
148
|
+
config.vm.provider :ganeti do |ganeti, override|
|
149
|
+
.....
|
150
|
+
ganeti.nics =[{"ip"=> "198.51.100.4"}, {"link"=> "br0" ,"ip"=> "10.10.100.4"}, {"ip"=> "10.11.100.4"}]
|
151
|
+
.....
|
152
|
+
end
|
153
|
+
end
|
154
|
+
This creates 3 nic interfaces having ip addresses **198.51.100.4** , **10.10.100.4** and **10.11.100.4** .
|
155
|
+
Configuration parameter **nics** must be List of - Dictionary with keys of (OneOf bridge, name, ip, vlan, mac, link, mode, network)
|
122
156
|
|
123
157
|
## TODO
|
124
158
|
|
data/example_box/Vagrantfile
CHANGED
data/example_box/ganeti.box
CHANGED
Binary file
|
Binary file
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require "pathname"
|
2
2
|
|
3
|
-
require "vagrant-
|
4
|
-
require "vagrant-
|
3
|
+
require "vagrant-ganeti/plugin"
|
4
|
+
require "vagrant-ganeti/util/ganeti_client"
|
5
5
|
|
6
6
|
module VagrantPlugins
|
7
7
|
module GANETI
|
8
|
-
lib_path = Pathname.new(File.expand_path("../vagrant-
|
8
|
+
lib_path = Pathname.new(File.expand_path("../vagrant-ganeti", __FILE__))
|
9
9
|
autoload :Action, lib_path.join("action")
|
10
10
|
autoload :Errors, lib_path.join("errors")
|
11
11
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -13,11 +13,27 @@ module VagrantPlugins
|
|
13
13
|
|
14
14
|
def call(env)
|
15
15
|
server = env[:ganeti_compute]
|
16
|
-
|
17
|
-
server.instance_terminate
|
16
|
+
createjob = server.instance_terminate
|
18
17
|
# set machine id to nil
|
19
18
|
env[:machine].id = nil
|
20
19
|
|
20
|
+
env[:ui].info("Removing the instance #{server.info['instance_name']}")
|
21
|
+
while true
|
22
|
+
status = server.is_job_ready(createjob)
|
23
|
+
|
24
|
+
if status == "error"
|
25
|
+
env[:ui].info("Error Removing instance")
|
26
|
+
break
|
27
|
+
elsif status == "running"
|
28
|
+
#Waiting for the message to succeed
|
29
|
+
sleep(15)
|
30
|
+
elsif status == "success"
|
31
|
+
env[:ui].info("Instance #{server.info['instance_name']} Sucessfully Removed")
|
32
|
+
break
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
21
37
|
@app.call(env)
|
22
38
|
end
|
23
39
|
end
|
@@ -53,7 +53,7 @@ module VagrantPlugins
|
|
53
53
|
bootinstancejob = client.start_instance()
|
54
54
|
sleep(3)
|
55
55
|
if client.is_job_ready(bootinstancejob) == "success"
|
56
|
-
env[:machine].id = client.info['
|
56
|
+
env[:machine].id = client.info['instance_name']
|
57
57
|
env[:ui].info( "#{ env[:machine].id}")
|
58
58
|
env[:ui].info("Instance Started Successfully")
|
59
59
|
else
|
@@ -62,7 +62,7 @@ module VagrantPlugins
|
|
62
62
|
break
|
63
63
|
elsif status == "already_exists"
|
64
64
|
env[:ui].info( "Instance already Exists. Use Vagrant SSH to login .\nUse 'vagrant destroy' and 'vagrant up' again to create instance afresh")
|
65
|
-
env[:machine].id = client.info['
|
65
|
+
env[:machine].id = client.info['instance_name']
|
66
66
|
break
|
67
67
|
end
|
68
68
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -290,7 +290,6 @@ module VagrantPlugins
|
|
290
290
|
errors << I18n.t("vagrant_ganeti.config.disks_required") if @disks == nil
|
291
291
|
errors << I18n.t("vagrant_ganeti.config.instance_name_required") if @instance_name.nil?
|
292
292
|
errors << I18n.t("vagrant_ganeti.config.mode_required") if @mode.nil?
|
293
|
-
errors << I18n.t("vagrant_ganeti.config.nics_required") if @nics.nil?
|
294
293
|
errors << I18n.t("vagrant_ganeti.config.pnode_required") if @pnode.nil? and @iallocator.nil?
|
295
294
|
errors << I18n.t("vagrant_ganeti.config.snode_required") if @snode.nil? and @disk_template == "drbd" and @iallocator.nil?
|
296
295
|
{ "GANETI Provider" => errors }
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,18 +1,18 @@
|
|
1
1
|
$:.unshift File.expand_path("../lib", __FILE__)
|
2
|
-
require "vagrant-
|
2
|
+
require "vagrant-ganeti/version"
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "vagrant-ganeti"
|
6
6
|
s.version = VagrantPlugins::GANETI::VERSION
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
|
-
s.authors = "
|
8
|
+
s.authors = "AHMED Shabib"
|
9
9
|
s.email = "reachshabib@gmail.com"
|
10
10
|
s.homepage = "http://www.vagrantup.com"
|
11
11
|
s.summary = "Enables Vagrant to manage machines in Ganeti"
|
12
12
|
s.description = "Enables Vagrant to manage machines in Ganeti."
|
13
13
|
|
14
14
|
s.required_rubygems_version = ">= 1.3.6"
|
15
|
-
s.rubyforge_project = "vagrant-
|
15
|
+
s.rubyforge_project = "vagrant-ganeti"
|
16
16
|
|
17
17
|
s.add_development_dependency "rake"
|
18
18
|
s.add_development_dependency "rspec-core", "~> 2.12.2"
|
metadata
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-ganeti
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 0
|
9
8
|
- 1
|
10
|
-
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
|
-
-
|
13
|
+
- AHMED Shabib
|
14
14
|
autorequire:
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-
|
18
|
+
date: 2013-09-23 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rake
|
@@ -89,40 +89,41 @@ extra_rdoc_files: []
|
|
89
89
|
|
90
90
|
files:
|
91
91
|
- README.md
|
92
|
-
- lib/vagrant-
|
93
|
-
- lib/vagrant-
|
94
|
-
- lib/vagrant-
|
95
|
-
- lib/vagrant-
|
96
|
-
- lib/vagrant-
|
97
|
-
- lib/vagrant-
|
98
|
-
- lib/vagrant-
|
99
|
-
- lib/vagrant-
|
100
|
-
- lib/vagrant-
|
101
|
-
- lib/vagrant-
|
102
|
-
- lib/vagrant-
|
103
|
-
- lib/vagrant-
|
104
|
-
- lib/vagrant-
|
105
|
-
- lib/vagrant-
|
106
|
-
- lib/vagrant-
|
107
|
-
- lib/vagrant-
|
108
|
-
- lib/vagrant-
|
109
|
-
- lib/vagrant-
|
110
|
-
- lib/vagrant-
|
111
|
-
- lib/vagrant-
|
112
|
-
- lib/vagrant-
|
113
|
-
- lib/vagrant-
|
114
|
-
- lib/vagrant-
|
115
|
-
- lib/vagrant-plugin
|
92
|
+
- lib/vagrant-ganeti.rb
|
93
|
+
- lib/vagrant-ganeti/util/timer.rb
|
94
|
+
- lib/vagrant-ganeti/util/ganeti_client.rb
|
95
|
+
- lib/vagrant-ganeti/action/message_already_created.rb
|
96
|
+
- lib/vagrant-ganeti/action/message_will_not_destroy.rb
|
97
|
+
- lib/vagrant-ganeti/action/connect_ganeti.rb
|
98
|
+
- lib/vagrant-ganeti/action/unlink_server.rb
|
99
|
+
- lib/vagrant-ganeti/action/remove_instance.rb
|
100
|
+
- lib/vagrant-ganeti/action/is_created.rb
|
101
|
+
- lib/vagrant-ganeti/action/warn_networks.rb
|
102
|
+
- lib/vagrant-ganeti/action/read_state.rb
|
103
|
+
- lib/vagrant-ganeti/action/timed_provision.rb
|
104
|
+
- lib/vagrant-ganeti/action/run_instance.rb
|
105
|
+
- lib/vagrant-ganeti/action/message_not_created.rb
|
106
|
+
- lib/vagrant-ganeti/action/read_ssh_info.rb
|
107
|
+
- lib/vagrant-ganeti/action/is_reachable.rb
|
108
|
+
- lib/vagrant-ganeti/action/sync_folders.rb
|
109
|
+
- lib/vagrant-ganeti/action/message_not_reachable.rb
|
110
|
+
- lib/vagrant-ganeti/config.rb
|
111
|
+
- lib/vagrant-ganeti/version.rb
|
112
|
+
- lib/vagrant-ganeti/action.rb
|
113
|
+
- lib/vagrant-ganeti/errors.rb
|
114
|
+
- lib/vagrant-ganeti/provider.rb
|
115
|
+
- lib/vagrant-ganeti/plugin.rb
|
116
116
|
- Gemfile
|
117
117
|
- LICENSE
|
118
118
|
- LICENSE.txt
|
119
|
+
- example_box/ganeti1.box
|
119
120
|
- example_box/README.md
|
120
121
|
- example_box/Vagrantfile
|
121
122
|
- example_box/metadata.json
|
122
123
|
- example_box/ganeti.box
|
123
124
|
- Rakefile
|
124
125
|
- locales/en.yml
|
125
|
-
- vagrant-
|
126
|
+
- vagrant-ganeti.gemspec
|
126
127
|
- .gitignore
|
127
128
|
homepage: http://www.vagrantup.com
|
128
129
|
licenses: []
|
@@ -154,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
154
155
|
version: 1.3.6
|
155
156
|
requirements: []
|
156
157
|
|
157
|
-
rubyforge_project: vagrant-
|
158
|
+
rubyforge_project: vagrant-ganeti
|
158
159
|
rubygems_version: 1.8.15
|
159
160
|
signing_key:
|
160
161
|
specification_version: 3
|