mccloud 0.0.2 → 0.0.3

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.
@@ -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
-