forj 0.0.29 → 0.0.30
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +47 -2
- data/bin/forj +12 -9
- data/lib/boot.rb +13 -8
- data/lib/security.rb +5 -0
- metadata +13 -13
data/README.md
CHANGED
@@ -2,8 +2,53 @@ Forj cli
|
|
2
2
|
=====================
|
3
3
|
|
4
4
|
|
5
|
-
|
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
|
-
|
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 => '-
|
78
|
-
method_option :build_config_dir, :aliases => '-
|
79
|
-
method_option :build_config, :aliases => '-
|
80
|
-
method_option :branch, :aliases => '-
|
81
|
-
method_option :test_box, :aliases => '-
|
82
|
-
method_option :git_repo, :aliases => '-
|
83
|
-
method_option :boothook, :aliases => '-
|
84
|
-
method_option :box_name, :aliases => '-
|
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],
|
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
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
72
|
-
|
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
|
-
|
102
|
-
|
103
|
-
|
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
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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *14971980
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
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: *
|
35
|
+
version_requirements: *14971040
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: fog
|
38
|
-
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: *
|
46
|
+
version_requirements: *14969800
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: hpcloud
|
49
|
-
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: *
|
57
|
+
version_requirements: *14966500
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: git
|
60
|
-
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: *
|
68
|
+
version_requirements: *14965860
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rbx-require-relative
|
71
|
-
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: *
|
79
|
+
version_requirements: *14965120
|
80
80
|
description: forj command line
|
81
81
|
email:
|
82
82
|
- forj@forj.io
|