mccloud 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,18 +3,17 @@ module Mccloud
3
3
  module Util
4
4
  def on_selected_machines(selection=nil)
5
5
  if selection.nil? || selection == "all"
6
- puts "no selection - all machines"
6
+ #puts "no selection - all machines"
7
7
  @session.config.vms.each do |name,vm|
8
8
  id=@all_servers["#{name}"]
9
9
  vm=@session.config.vms[name]
10
- yield id,vm
11
-
10
+ yield id,vm
12
11
  end
13
12
  else
14
13
  name=selection
15
14
  id=@all_servers["#{name}"]
16
15
  vm=@session.config.vms[name]
17
- yield id,vm
16
+ yield id,vm
18
17
  end
19
18
  end
20
19
  end
@@ -0,0 +1,74 @@
1
+ #Shameless copy of https://github.com/bensie/sshkey/raw/master/lib/sshkey.rb
2
+ # Make it 1.8 compatbible
3
+
4
+ require 'openssl'
5
+ require 'base64'
6
+ require 'digest/md5'
7
+
8
+ module Mccloud
9
+ module Util
10
+
11
+ class SSHKey
12
+
13
+ def self.generate(options = {})
14
+ SSHKey.new(OpenSSL::PKey::RSA.generate(2048).to_pem, options)
15
+ end
16
+
17
+ attr_reader :key_object, :comment, :rsa_private_key, :rsa_public_key, :ssh_public_key, :fingerprint
18
+
19
+ def initialize(private_key, options = {})
20
+ @key_object = OpenSSL::PKey::RSA.new(private_key)
21
+ @comment = options[:comment] || ""
22
+ @rsa_private_key = @key_object.to_pem
23
+ @rsa_public_key = @key_object.public_key.to_pem
24
+ raw_ssh_public_key = ssh_public_key_conversion
25
+
26
+ # @ssh_public_key = ["ssh-rsa", Base64.strict_encode64(raw_ssh_public_key), @comment].join(" ").strip
27
+
28
+ @ssh_public_key = ["ssh-rsa", [raw_ssh_public_key].pack("m0").gsub(/\n/,''), @comment].join(" ").strip
29
+ @fingerprint = Digest::MD5.hexdigest(raw_ssh_public_key).gsub(/(.{2})(?=.)/, '\1:\2')
30
+ end
31
+
32
+ private
33
+
34
+ # All data type encoding is defined in the section #5 of RFC #4251.
35
+ # String and mpint (multiple precision integer) types are encoded this way :
36
+ # 4-bytes word: data length (unsigned big-endian 32 bits integer)
37
+ # n bytes : binary representation of the data
38
+
39
+ # For instance, the "stringsh-rsa" string is encoded as the following byte array
40
+ # [0, 0, 0, 7, 's', 's', 'h', '-', 'r', 's', 'a']
41
+ def ssh_public_key_conversion
42
+ e = @key_object.public_key.e.to_i
43
+ n = @key_object.public_key.n.to_i
44
+
45
+ out = [0,0,0,7].pack("c*")
46
+ out += "ssh-rsa"
47
+ out += encode_unsigned_int_32(to_byte_array(e).length).pack("c*")
48
+ out += to_byte_array(e).pack("c*")
49
+ out += encode_unsigned_int_32(to_byte_array(n).length).pack("c*")
50
+ out += to_byte_array(n).pack("c*")
51
+
52
+ return out
53
+ end
54
+
55
+ def encode_unsigned_int_32(value)
56
+ out = []
57
+ out[0] = value >> 24 & 0xff
58
+ out[1] = value >> 16 & 0xff
59
+ out[2] = value >> 8 & 0xff
60
+ out[3] = value & 0xff
61
+ return out
62
+ end
63
+
64
+ def to_byte_array(num)
65
+ result = []
66
+ begin
67
+ result << (num & 0xff)
68
+ num >>= 8
69
+ end until (num == 0 || num == -1) && (result.last[7] == num[7])
70
+ result.reverse
71
+ end
72
+ end
73
+ end
74
+ end
@@ -1,3 +1,3 @@
1
1
  module Mccloud
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.rubyforge_project = "mccloud"
16
16
 
17
17
  s.add_dependency "net-ssh", "~> 2.1.0"
18
+ #s.add_dependency "sshkey"
18
19
  s.add_dependency "net-scp"
19
20
  s.add_dependency "fog"
20
21
  s.add_dependency "json"
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mccloud
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Patrick Debois
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-06 00:00:00 +02:00
18
+ date: 2011-04-08 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -245,7 +245,14 @@ files:
245
245
  - lib/mccloud/provisioner/vagrant/puppet_server.rb
246
246
  - lib/mccloud/provisioner/vagrant/shell.rb
247
247
  - lib/mccloud/session.rb
248
- - lib/mccloud/templates/Mccloudfilet
248
+ - lib/mccloud/templates/Mccloudfile.erb
249
+ - lib/mccloud/templates/bootstrap-centos-rubysource-1.8.7.sh
250
+ - lib/mccloud/templates/bootstrap-centos-rvm-1.8.7.sh
251
+ - lib/mccloud/templates/bootstrap-centos-rvm-1.9.2.sh
252
+ - lib/mccloud/templates/bootstrap-centos-rvm-ree-1.8.7.sh
253
+ - lib/mccloud/templates/bootstrap-custom.sh
254
+ - lib/mccloud/templates/bootstrap-ubuntu-rvm-1.8.7.sh
255
+ - lib/mccloud/templates/bootstrap-ubuntu-system.sh
249
256
  - lib/mccloud/type/forwarding.rb
250
257
  - lib/mccloud/type/lb.rb
251
258
  - lib/mccloud/type/vm.rb
@@ -253,10 +260,9 @@ files:
253
260
  - lib/mccloud/util/platform.rb
254
261
  - lib/mccloud/util/rsync.rb
255
262
  - lib/mccloud/util/ssh.rb
263
+ - lib/mccloud/util/sshkey.rb
256
264
  - lib/mccloud/version.rb
257
265
  - mccloud.gemspec
258
- - ruby-bootstrap.sh
259
- - ruby-bootstrap2.sh
260
266
  has_rdoc: true
261
267
  homepage: http://github.com/jedi4ever/mccloud/
262
268
  licenses: []
@@ -1,44 +0,0 @@
1
- Mccloud::Config.run do |config|
2
- # All Mccloud configuration is done here. For a detailed explanation
3
- # and listing of configuration options, please view the documentation
4
- # online.
5
-
6
- config.mccloud.prefix="mccloud"
7
-
8
- config.vm.define :web do |web_config|
9
- web_config.vm.ami = "ami-cef405a7"
10
- web_config.vm.provider="AWS"
11
-
12
- #web_config.vm.provisioner=:chef_solo
13
- #web_config.vm.provisioner=:puppet
14
-
15
- web_config.vm.provider_options={
16
- # ID = "ami-cef405a7" = x64 Ubuntu 10.10
17
- :image_id => 'ami-cef405a7',
18
- # Flavors
19
- :flavor_id => 't1.micro',
20
- #:flavor_id => 'm1.large',
21
- :groups => %w(ec2securitygroup), :key_name => "ec2-keyname",
22
- :availability_zone => "us-east-1b"
23
- }
24
- web_config.vm.forward_port("http", 80, 8080)
25
- web_config.vm.user="ubuntu"
26
- web_config.vm.bootstrap="ruby-bootstrap.sh"
27
- web_config.vm.private_key="my-ec2-key.pem"
28
- end
29
-
30
- ### Provisioners
31
- config.vm.provision :puppet do |puppet|
32
- puppet.pp_path = "/tmp/vagrant-puppet"
33
- #puppet.manifests_path = "puppet/manifests"
34
- #puppet.module_path = "puppet/modules"
35
- puppet.manifest_file = "newbox.pp"
36
- end
37
-
38
- config.vm.provision :chef_solo do |chef|
39
- chef.cookbooks_path = ["<your cookboopath>"]
40
- chef.add_recipe("<some recipe>")
41
- # You may also specify custom JSON attributes:
42
- chef.json.merge!({})
43
- end
44
- end
@@ -1,39 +0,0 @@
1
- #!/bin/bash -ex
2
-
3
- # redirecting output
4
- # http://alestic.com/2010/12/ec2-user-data-output
5
- #exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
6
-
7
- apt-get -y update
8
- apt-get -y upgrade
9
- apt-get -y dist-upgrade
10
-
11
- apt-get -y install git
12
-
13
- # For CC compiler of ruby
14
- apt-get -y install build-essential
15
-
16
- # no such file to load -- zlib (LoadError)
17
- # http://stackoverflow.com/questions/2441248/rvm-ruby-1-9-1-troubles
18
- apt-get install -y zlib1g-dev libssl-dev libreadline5-dev libxml2-dev libsqlite3-dev
19
-
20
- > /tmp/base-finished
21
-
22
- #/.rvm/src/rvm/scripts/install: line 243: HOME: unbound variable
23
- HOME="/root"
24
- export HOME
25
-
26
- # RVM
27
- # http://rvm.beginrescueend.com/
28
- #bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
29
- bash < <( curl -L http://bit.ly/rvm-install-system-wide )
30
-
31
- echo ". /usr/local/rvm" >> /etc/profile.d/rvm-system-wide
32
-
33
- #
34
- #[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
35
- . /usr/local/rvm/scripts/rvm
36
-
37
- rvm install 1.9.2
38
- rvm use 1.9.2 --default
39
-