nephele 0.1.0 → 0.1.1

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 (8) hide show
  1. data/README.md +14 -4
  2. data/Rakefile +0 -68
  3. data/TODO +2 -0
  4. data/VERSION +1 -1
  5. data/bin/neph +91 -0
  6. data/bin/nephele +2 -1
  7. data/nephele.gemspec +7 -5
  8. metadata +9 -5
data/README.md CHANGED
@@ -1,15 +1,25 @@
1
1
  Nephele
2
2
  ========
3
-
4
- Nephele is a thin abstraction layer around major cloud service API's.
5
-
6
- Its main goals are simplicity and the unification of common tasks for the sake of working with a set of services.
3
+ Nephele is a thin administration layer around major cloud service API's.
4
+ Its main goals are simplicity and a unified command line interface for common tasks.
7
5
 
8
6
  Planned support:
9
7
 
10
8
  * Rackspace
11
9
  * EC2
12
10
 
11
+ Setting Your Credentials
12
+ ------------------------
13
+ Currently, Nephele expects environment variables to set your service keys.
14
+
15
+ RACKSPACE_KEY=your_api_key
16
+ RACKSPACE_USER=your_user_name
17
+ NEPHELE_SERVICE_DEFAULT=rackspace
18
+
19
+ LICENSE
20
+ -------
21
+ SEE LICENSE
22
+
13
23
  Other Interesting Projects
14
24
  --------------------------
15
25
  * Fog - https://github.com/geemus/fog
data/Rakefile CHANGED
@@ -24,7 +24,6 @@ Jeweler::Tasks.new do |gem|
24
24
  gem.description = %-Light administration utility for popular cloud services-
25
25
  gem.email = 'jeffrey.odell@gmail.com'
26
26
  gem.authors = ["Jeffrey O'Dell"]
27
- gem.executables = ['nephele']
28
27
  gem.homepage = 'https://github.com/jodell/nephele'
29
28
  end
30
29
 
@@ -40,32 +39,6 @@ Rake::TestTask.new('test:unit') do |t|
40
39
  t.verbose = true
41
40
  end
42
41
 
43
- def default
44
- @@default ||= Nephele.new :service => :default
45
- end
46
-
47
- desc 'List available servers'
48
- task :servers do
49
- ap default.servers.map { |i| i[:name] }
50
- end
51
-
52
- task :list => :servers
53
-
54
- desc 'List available images'
55
- task :images do
56
- ap default.images.map { |i| i[:name] }
57
- end
58
-
59
- desc 'List available flavors'
60
- task :flavors do
61
- ap default.flavors.map { |i| i[:name] }
62
- end
63
-
64
- desc 'Show node statuses'
65
- task :status do
66
- puts default.status
67
- end
68
-
69
42
  desc 'Key a host'
70
43
  task :key, [:host] do |t, args|
71
44
  host = args[:host] =~ /(.*)@(.*)/ ? args[:host] : "root@#{args[:host]}"
@@ -79,47 +52,6 @@ EoC
79
52
  sh cmd
80
53
  end
81
54
 
82
- desc 'Reset the node password (performs a reoot)'
83
- task :password, [:node, :pass] do |t, args|
84
- default.server_objs.find { |s| s.name == args[:node] }.update(:adminPass => args[:pass])
85
- end
86
-
87
- desc 'Save an image of the node'
88
- task :save, [:node, :name] do |t, args|
89
- default.server_objs.find { |s| s.name == args[:node] }.create_image args[:name]
90
- end
91
-
92
- desc "Creates a node with name, image name, flavor, optional count: `rake create[mybox,oberon,'512 server'] count=4`"
93
- task :create, [:name, :image, :flavor] do |t, args|
94
- (ENV['count'] || 1).to_i.times do |i|
95
- @node = default.create \
96
- :name => args[:name] + "#{ENV['count'] ? i + 1 : ''}",
97
- :image => Nephele::Rackspace.image_lookup(args[:image]),
98
- :flavor => args[:flavor],
99
- :personality => Nephele::Rackspace::Util.personality(ENV['personality'] || :default)
100
- end
101
- end
102
-
103
- JODELL_CHEF_BOOTSTRAPPER = 'https://github.com/jodell/cookbooks/raw/master/bin/bootstrap.sh'
104
-
105
- desc 'Create a VM and run a chef bootstrapper, optional recipe, bootstrap, cookbooks args'
106
- task :bootstrap, [:name, :image, :flavor] => :create do |t, args|
107
- puts "Bootstrapping: #{args[:name]}..."
108
- bootstrapper = ENV['bootstrap'] || JODELL_CHEF_BOOTSTRAPPER
109
- alt = ENV['cookbooks']
110
- sh %-time ssh root@#{@node.addresses[:public]} "curl #{bootstrapper} > boot && chmod +x boot && ./boot #{alt}"-
111
- sh %{time ssh root@#{@node.addresses[:public]} "cd -P /var/chef/cookbooks && rake run[#{ENV['recipe']}]"} if ENV['recipe']
112
- end
113
-
114
- desc 'Destroy, bootstrap'
115
- task :restrap, [:name, :image, :flavor] => [:destroy, :bootstrap]
116
-
117
- desc 'Destroy a node with name `rake destroy[foo]`'
118
- task :destroy, [:name] do |t, args|
119
- puts "Destroying: #{args[:name]}"
120
- default.server_objs.find { |s| s.name == args[:name] }.delete!
121
- end
122
-
123
55
  desc 'Start IRB with the relevant env'
124
56
  task :console do
125
57
  ARGV.clear and IRB.start
data/TODO ADDED
@@ -0,0 +1,2 @@
1
+ * Switch to Fog
2
+ * Support EC2 ASAP
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/bin/neph ADDED
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'optitron'
5
+ begin
6
+ require 'nephele'
7
+ rescue LoadError
8
+ $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
9
+ require 'nephele'
10
+ end
11
+ # awesome_print doesn't seem to play nice with optitron?
12
+ #require 'ap'
13
+
14
+ class Nephele::Runner < Optitron::CLI
15
+ JODELL_CHEF_BOOTSTRAPPER = 'https://github.com/jodell/cookbooks/raw/master/bin/bootstrap.sh'
16
+ class_opt 'cookbooks', "optional cookbooks URI", :type => :string
17
+ class_opt 'personality', 'comma-separated tuple of contents,targetfile to be placed at startup', :type => :string
18
+ class_opt 'bootstrap', "optional bootstrapper URI, defaults to #{JODELL_CHEF_BOOTSTRAPPER}", :type => :string
19
+ class_opt 'recipe', "run this recipe after bootstrapping", :type => :string
20
+
21
+ desc 'Display a list of servers'
22
+ def list
23
+ puts service.servers.map { |i| i[:name] }
24
+ end
25
+
26
+ desc 'Display available images'
27
+ def images
28
+ puts service.images.map { |i| i[:name] }
29
+ end
30
+
31
+ desc 'List available flavors'
32
+ def flavors
33
+ puts service.flavors.map { |i| i[:name] }
34
+ end
35
+
36
+ desc 'Display server status'
37
+ def status
38
+ puts service.status
39
+ end
40
+
41
+ desc 'Change a password on given node'
42
+ def password(node_string, password_string)
43
+ service.server_objs.find { |s| s.name == node_string }.update(:adminPass => password_string)
44
+ end
45
+
46
+ desc 'Save an image of the node'
47
+ def save(node_string, savename_string)
48
+ service.server_objs.find { |s| s.name == node_string }.create_image name_string
49
+ end
50
+
51
+ desc "Creates a node with name, image name, flavor"
52
+ opt 'count', 'create foo, foo2, foo3, ...', :type => :numeric
53
+ def create(name, image, flavor)
54
+ (params['count'] || 1).to_i.times do |i|
55
+ @node = service.create \
56
+ :name => name + "#{params['count'] ? i + 1 : ''}",
57
+ :image => Nephele::Rackspace.image_lookup(image),
58
+ :flavor => flavor,
59
+ :personality => Nephele::Rackspace::Util.personality(params['personality'] || :default)
60
+ end
61
+ end
62
+
63
+ desc 'Create a VM and run a chef bootstrapper, optional recipe, bootstrap, cookbooks args'
64
+ def bootstrap(name, image, flavor)
65
+ puts "Bootstrapping: #{name}..."
66
+ create name, image, flavor
67
+ bootstrap = params['bootstrap'] || JODELL_CHEF_BOOTSTRAPPER
68
+ system %-time ssh root@#{@node.addresses[:public]} "curl #{bootstrap} > boot && chmod +x boot && ./boot #{params['cookbooks'] || ''}"-
69
+ system %{time ssh root@#{@node.addresses[:public]} "cd -P /var/chef/cookbooks && rake run[#{params['recipe']}]"} if params['recipe']
70
+ end
71
+
72
+ desc 'Destroy and bootstrap'
73
+ def restrap(name, image, flavor)
74
+ destroy name
75
+ bootstrap name, image, flavor
76
+ end
77
+
78
+ desc 'Destroy a given node'
79
+ def destroy(name_string)
80
+ if node = service.server_objs.find { |s| s.name == name_string }
81
+ puts "Destroying: #{name_string}"
82
+ node.delete!
83
+ end
84
+ end
85
+
86
+ def service
87
+ @@service ||= Nephele.new(:service => :default)
88
+ end
89
+ end
90
+
91
+ Nephele::Runner.dispatch
data/bin/nephele CHANGED
@@ -8,6 +8,7 @@ rescue LoadError
8
8
  $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
9
9
  require 'nephele'
10
10
  end
11
+ # awesome_print doesn't seem to play nice with optitron?
11
12
  #require 'ap'
12
13
 
13
14
  class Nephele::Runner < Optitron::CLI
@@ -24,7 +25,7 @@ class Nephele::Runner < Optitron::CLI
24
25
 
25
26
  desc 'Display available images'
26
27
  def images
27
- puts default.images.map { |i| i[:name] }
28
+ puts service.images.map { |i| i[:name] }
28
29
  end
29
30
 
30
31
  desc 'List available flavors'
data/nephele.gemspec CHANGED
@@ -5,18 +5,18 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{nephele}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jeffrey O'Dell"]
12
- s.date = %q{2011-04-07}
13
- s.default_executable = %q{nephele}
12
+ s.date = %q{2011-04-11}
14
13
  s.description = %q{Light administration utility for popular cloud services}
15
14
  s.email = %q{jeffrey.odell@gmail.com}
16
- s.executables = ["nephele"]
15
+ s.executables = ["neph", "nephele"]
17
16
  s.extra_rdoc_files = [
18
17
  "LICENSE",
19
- "README.md"
18
+ "README.md",
19
+ "TODO"
20
20
  ]
21
21
  s.files = [
22
22
  ".autotest",
@@ -24,7 +24,9 @@ Gem::Specification.new do |s|
24
24
  "LICENSE",
25
25
  "README.md",
26
26
  "Rakefile",
27
+ "TODO",
27
28
  "VERSION",
29
+ "bin/neph",
28
30
  "bin/nephele",
29
31
  "lib/nephele.rb",
30
32
  "lib/nephele/base.rb",
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nephele
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jeffrey O'Dell
@@ -15,8 +15,8 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-07 00:00:00 -05:00
19
- default_executable: nephele
18
+ date: 2011-04-11 00:00:00 -05:00
19
+ default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: rake
@@ -191,19 +191,23 @@ dependencies:
191
191
  description: Light administration utility for popular cloud services
192
192
  email: jeffrey.odell@gmail.com
193
193
  executables:
194
+ - neph
194
195
  - nephele
195
196
  extensions: []
196
197
 
197
198
  extra_rdoc_files:
198
199
  - LICENSE
199
200
  - README.md
201
+ - TODO
200
202
  files:
201
203
  - .autotest
202
204
  - Gemfile
203
205
  - LICENSE
204
206
  - README.md
205
207
  - Rakefile
208
+ - TODO
206
209
  - VERSION
210
+ - bin/neph
207
211
  - bin/nephele
208
212
  - lib/nephele.rb
209
213
  - lib/nephele/base.rb