forj 0.0.29 → 0.0.30

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 (5) hide show
  1. data/README.md +47 -2
  2. data/bin/forj +12 -9
  3. data/lib/boot.rb +13 -8
  4. data/lib/security.rb +5 -0
  5. metadata +13 -13
data/README.md CHANGED
@@ -2,8 +2,53 @@ Forj cli
2
2
  =====================
3
3
 
4
4
 
5
- How to use it
5
+ Installation
6
6
  =====================
7
+ For ruby 1.9
8
+
9
+ sudo apt-get install ruby-dev build-essential libopenssl-ruby1.9.1 libssl-dev zlib1g-dev -y
10
+ sudo gem install forj
11
+
12
+ For ruby 1.8
13
+
14
+ sudo apt-get install ruby1.8-dev ruby1.8 ri1.8 rdoc1.8 irb1.8 -y
15
+ sudo apt-get install libreadline-ruby1.8 libruby1.8 libopenssl-ruby -y
16
+ sudo apt-get install libxslt-dev libxml2-dev -y
17
+ sudo gem install nokogiri
18
+ sudo apt-get install ruby-bundler -y
19
+ sudo gem install mime-types -v 1.25.1
20
+ sudo gem install hpcloud
21
+ sudo gem install forj
22
+
23
+
24
+ How to use forj cli
25
+ =====================
26
+ Setup forj
27
+
28
+ forj setup # follow the instructions
29
+
30
+ Boot a forge
31
+
32
+ forj boot <blueprint> on <cloud_provider> as <name>
33
+ e.g. forj boot redstone on hpcloud as maestro_01
34
+
35
+ Optional arguments
36
+
37
+ -u --build #Replace the default build.sh.
38
+ -d --build_config_dir # Defines the build configuration directory to load the build configuration file.
39
+ -c --build_config # The build config file to load <confdir>/<BoxName>.<Config>.env.
40
+ -b --branch # The build will extract from git branch name.
41
+ -t --test_box # Create test-box meta from the repository path provided.
42
+ -r --git_repo # The box built will use a different git repository sent out to <user_data>.
43
+ -h --boothook # By default, boothook file used is build/bin/build-tools/boothook.sh.
44
+ -x --box_name # Defines the name of the box or box image to build.
45
+ -k --key_name # Key pair name to import.
46
+ -p --key_path # Public key pair data.
47
+
48
+ To ssh into a server
49
+
50
+ forj ssh <name> <node>
51
+ e.g. forj ssh maestro_01 [maestro, ci, util, review] # the nodes from your blueprint
7
52
 
8
53
 
9
54
  Contributing to Forj
@@ -14,4 +59,4 @@ your development today!
14
59
 
15
60
  License
16
61
  =====================
17
- forj cli is licensed under the Apache License, Version 2.0. See LICENSE for full license text.
62
+ Forj Cli is licensed under the Apache License, Version 2.0. See LICENSE for full license text.
data/bin/forj CHANGED
@@ -74,21 +74,24 @@ class Forj < Thor
74
74
 
75
75
  desc 'boot', 'boot a Maestro box and instruct it to provision the blueprint'
76
76
 
77
- method_option :build, :aliases => '-b', :desc => 'Replace the default build.sh'
78
- method_option :build_config_dir, :aliases => '-bcd', :desc => 'Defines the build configuration directory to load the build configuration file. You can set FORJ_BLD_CONF_DIR. By default, it will look in your current directory.'
79
- method_option :build_config, :aliases => '-bc', :desc => 'The build config file to load <confdir>/<BoxName>.<Config>.env. By default, uses "master" as Config.'
80
- method_option :branch, :aliases => '-gb', :desc => 'The build will extract from git branch name. It sets the configuration build <config> to the branch name <branch>.'
81
- method_option :test_box, :aliases => '-tb', :desc => 'Create test-box meta from the repository path provided.'
82
- method_option :git_repo, :aliases => '-gr', :desc => 'The box built will use a different git repository sent out to <user_data>. This repository needs to be read only. No keys are sent.'
83
- method_option :boothook, :aliases => '-bh', :desc => 'By default, boothook file used is build/bin/build-tools/boothook.sh. Use this option to set another one.'
84
- method_option :box_name, :aliases => '-bn', :desc => 'Defines the name of the box or box image to build.'
77
+ method_option :build, :aliases => '-u', :desc => 'Replace the default build.sh'
78
+ method_option :build_config_dir, :aliases => '-d', :desc => 'Defines the build configuration directory to load the build configuration file. You can set FORJ_BLD_CONF_DIR. By default, it will look in your current directory.'
79
+ method_option :build_config, :aliases => '-c', :desc => 'The build config file to load <confdir>/<BoxName>.<Config>.env. By default, uses "master" as Config.'
80
+ method_option :branch, :aliases => '-b', :desc => 'The build will extract from git branch name. It sets the configuration build <config> to the branch name <branch>.'
81
+ method_option :test_box, :aliases => '-t', :desc => 'Create test-box meta from the repository path provided.'
82
+ method_option :git_repo, :aliases => '-r', :desc => 'The box built will use a different git repository sent out to <user_data>. This repository needs to be read only. No keys are sent.'
83
+ method_option :boothook, :aliases => '-h', :desc => 'By default, boothook file used is build/bin/build-tools/boothook.sh. Use this option to set another one.'
84
+ method_option :box_name, :aliases => '-x', :desc => 'Defines the name of the box or box image to build.'
85
+ method_option :key_name, :aliases => '-k', :desc => 'Import a key pair.'
86
+ method_option :key_path, :aliases => '-p', :desc => 'Public key data'
85
87
 
86
88
  def boot(blueprint, on, cloud_provider, as, name, test = false)
87
89
  Boot.boot(blueprint, cloud_provider, name,
88
90
  options[:build], options[:build_config_dir],
89
91
  options[:build_config], options[:branch],
90
92
  options[:git_repo], options[:boothook],
91
- options[:box_name], test)
93
+ options[:box_name], options[:key_name],
94
+ options[:key_path], test)
92
95
  end
93
96
 
94
97
  desc 'down', 'delete the Maestro box and all systems installed by the blueprint'
data/lib/boot.rb CHANGED
@@ -36,9 +36,10 @@ include Helpers
36
36
  #
37
37
  module Boot
38
38
  def boot(blueprint, cloud_provider, name,
39
- build, build_config_dir, build_config,
40
- branch, git_repo, boothook, box_name,
41
- test = false)
39
+ build, build_config_dir, build_config,
40
+ branch, git_repo, boothook, box_name,
41
+ key_name, key_path,
42
+ test = false)
42
43
  begin
43
44
  initial_msg = 'booting %s on %s' % [blueprint , cloud_provider]
44
45
 
@@ -60,6 +61,10 @@ module Boot
60
61
 
61
62
  security_group = SecurityGroup.create_security_group(blueprint)
62
63
 
64
+ key_name = 'nova' unless key_name
65
+ key_path = '~/.ssh/nova' unless key_path
66
+ SecurityGroup.upload_existing_key(key_name, key_path)
67
+
63
68
  ports = definitions['redstone']['ports']
64
69
 
65
70
  ports.each do|port|
@@ -68,8 +73,8 @@ module Boot
68
73
 
69
74
  ENV['FORJ_HPC_NETID'] = network.id
70
75
  ENV['FORJ_SECURITY_GROUP'] = security_group.name
71
- #ENV['FORJ_KEYPAIR'] = definitions[blueprint]['keypair']
72
- #ENV['FORJ_HPC_NOVA_KEYPUB'] = definitions[blueprint]['keypair']
76
+ ENV['FORJ_KEYPAIR'] = key_name
77
+ ENV['FORJ_HPC_NOVA_KEYPUB'] = key_name
73
78
 
74
79
  # run build.sh to boot maestro
75
80
  current_dir = Dir.pwd
@@ -98,9 +103,9 @@ module Boot
98
103
 
99
104
  if test
100
105
  puts 'test flag is on, deleting objects'
101
- Network.delete_router_interface(subnet.id, router)
102
- Network.delete_subnet(subnet.id)
103
- Network.delete_network(network.name)
106
+ Network.delete_router_interface(subnet.id, router)
107
+ Network.delete_subnet(subnet.id)
108
+ Network.delete_network(network.name)
104
109
  end
105
110
 
106
111
  rescue SystemExit, Interrupt
data/lib/security.rb CHANGED
@@ -89,4 +89,9 @@ module SecurityGroup
89
89
  Logging.error(e.message)
90
90
  end
91
91
  end
92
+
93
+ def upload_existing_key(key_name, key_path)
94
+ command = 'hpcloud keypairs:import %s %s' % [key_name, key_path]
95
+ Kernel.system(command)
96
+ end
92
97
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forj
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.29
4
+ version: 0.0.30
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2014-06-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &12934080 !ruby/object:Gem::Requirement
16
+ requirement: &14971980 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.16.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *12934080
24
+ version_requirements: *14971980
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &12933440 !ruby/object:Gem::Requirement
27
+ requirement: &14971040 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.5.11
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *12933440
35
+ version_requirements: *14971040
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: fog
38
- requirement: &12932840 !ruby/object:Gem::Requirement
38
+ requirement: &14969800 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.19.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *12932840
46
+ version_requirements: *14969800
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: hpcloud
49
- requirement: &12932140 !ruby/object:Gem::Requirement
49
+ requirement: &14966500 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.0.8
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *12932140
57
+ version_requirements: *14966500
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: git
60
- requirement: &12931320 !ruby/object:Gem::Requirement
60
+ requirement: &14965860 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.2.7
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *12931320
68
+ version_requirements: *14965860
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rbx-require-relative
71
- requirement: &12930460 !ruby/object:Gem::Requirement
71
+ requirement: &14965120 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: 0.0.7
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *12930460
79
+ version_requirements: *14965120
80
80
  description: forj command line
81
81
  email:
82
82
  - forj@forj.io