claudius 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/claudius.gemspec +5 -4
- data/examples/on_instance.rb +8 -8
- data/examples/ping.rb +41 -0
- data/examples/simple_program.rb +1 -2
- data/examples/specify_instances.rb +11 -11
- data/lib/remote_execution/provider.rb +8 -0
- data/lib/tree_building/execution_node.rb +1 -1
- data/test/execution_test.rb +2 -1
- metadata +29 -12
data/claudius.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "claudius"
|
7
|
-
spec.version = "0.0.
|
7
|
+
spec.version = "0.0.3"
|
8
8
|
spec.authors = ["radk0s", "blost"]
|
9
9
|
spec.email = ["rachamot@gmail.com"]
|
10
10
|
spec.description = "Write a gem description"
|
@@ -18,7 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.add_development_dependency "bundler", "~> 1.3"
|
20
20
|
spec.add_development_dependency "rake"
|
21
|
-
spec.add_runtime_dependency "fog"
|
22
|
-
spec.add_runtime_dependency "net-ssh"
|
23
|
-
spec.add_runtime_dependency "graph"
|
21
|
+
spec.add_runtime_dependency "fog", ">= 1.22.0"
|
22
|
+
spec.add_runtime_dependency "net-ssh", "2.9.1"
|
23
|
+
spec.add_runtime_dependency "graph", "2.7.0"
|
24
|
+
spec.add_runtime_dependency "awesome_print", "1.2.0"
|
24
25
|
end
|
data/examples/on_instance.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
require 'claudius'
|
2
2
|
require "awesome_print"
|
3
3
|
|
4
|
-
experiment_tree = experiment '
|
4
|
+
experiment_tree = experiment 'Test' do
|
5
5
|
define_providers do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
cloud('aws', :provider => config['provider'],
|
7
|
+
:region=>config['region'],
|
8
|
+
:aws_access_key_id => config['aws_access_key_id'],
|
9
|
+
:aws_secret_access_key => config['aws_secret_access_key'])
|
10
|
+
.create_instances(['t1.micro'], 'ubuntu', './Piotr-key-pair-irleand.pem',
|
11
|
+
:key_name => 'Piotr-key-pair-irleand',
|
12
|
+
:groups => 'Piotr-irleand')
|
13
13
|
manual('kali', '192.168.1.116', 'root', :password => 'toor', :port => 22)
|
14
14
|
end
|
15
15
|
|
data/examples/ping.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
# Ping
|
3
|
+
# ---------
|
4
|
+
# This example shows how to conduct simple experiment with ping command.
|
5
|
+
#
|
6
|
+
|
7
|
+
require 'claudius'
|
8
|
+
config = load_config('./user_config.json')
|
9
|
+
execution_tree = experiment 'Hello' do
|
10
|
+
define_providers do
|
11
|
+
cloud('aws', :provider => config['provider'],
|
12
|
+
:region =>config['region'],
|
13
|
+
:endpoint => 'https://ec2.eu-west-1.amazonaws.com/',
|
14
|
+
:aws_access_key_id => config['aws_access_key_id'],
|
15
|
+
:aws_secret_access_key => config['aws_secret_access_key'])
|
16
|
+
.create_instances(['t1.micro=>in1'],
|
17
|
+
:username => 'ubuntu',
|
18
|
+
:private_key_path =>'./Piotr-key-pair-irleand.pem',
|
19
|
+
:key_name => 'Piotr-key-pair-irleand',
|
20
|
+
:groups => ['Piotr-irleand'])
|
21
|
+
manual('kali', '172.16.0.109', 'root', :password => 'toor')
|
22
|
+
end
|
23
|
+
foreach ['kali', 'in1'] do |instance_name|
|
24
|
+
concurrent do
|
25
|
+
on 'localhost' do
|
26
|
+
execute do
|
27
|
+
ssh "ping #{getInstance(instance_name).host} -c 3"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
on instance_name do
|
31
|
+
execute do
|
32
|
+
ssh "ping #{getInstance(instance_name).host} -c 3"
|
33
|
+
ssh "echo Hello World! > TestFile"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
ap execution_tree.run
|
41
|
+
execution_tree.export_tree('tree')
|
data/examples/simple_program.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'awesome_print'
|
2
1
|
# Initiate experiment
|
3
2
|
# ---------
|
4
3
|
#
|
@@ -20,7 +19,7 @@ experiment 'Hello Experiment' do
|
|
20
19
|
end
|
21
20
|
end
|
22
21
|
|
23
|
-
# execute tree and print result time
|
22
|
+
# execute tree and print result time using *awesome_print*
|
24
23
|
ap execution_tree.run
|
25
24
|
# export tree to tree.png and tree.dot
|
26
25
|
execution_tree.export_tree('tree')
|
@@ -4,19 +4,19 @@
|
|
4
4
|
# To conduct an experiment remotely, You should define set of machines, which you would like to use. Claudius allows you to define 2 types of hosts - ones which are going to be created in clouds environment, and others which are already established (and you have access to them). To define machine and to maintain connection with them you should provide required parameters. For your convenience, you may store all yours parameters in json file, and recall them as it is presented in example.
|
5
5
|
#
|
6
6
|
require 'claudius'
|
7
|
-
|
7
|
+
config = load_config('./user_config.json')
|
8
8
|
experiment 'Hello' do
|
9
9
|
define_providers do
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
10
|
+
cloud('aws', :provider => config['provider'],
|
11
|
+
:region =>config['region'],
|
12
|
+
:endpoint => 'https://ec2.eu-west-1.amazonaws.com/',
|
13
|
+
:aws_access_key_id => config['aws_access_key_id'],
|
14
|
+
:aws_secret_access_key => config['aws_secret_access_key'])
|
15
|
+
.create_instances(['t1.micro=>in1'],
|
16
|
+
:username => 'ubuntu',
|
17
|
+
:private_key_path =>'./Piotr-key-pair-irleand.pem',
|
18
|
+
:key_name => 'Piotr-key-pair-irleand',
|
19
|
+
:groups => ['Piotr-irleand'])
|
20
20
|
manual('kali', '172.16.0.109', 'root', :password => 'toor')
|
21
21
|
end
|
22
22
|
foreach ['kali', 'in1'] do |instance|
|
@@ -32,7 +32,7 @@ class ExecutionNode < Node
|
|
32
32
|
start = Time.now
|
33
33
|
commands.each_with_index do |command, index|
|
34
34
|
_start = Time.now
|
35
|
-
if instance.nil?
|
35
|
+
if instance.nil? or instance == 'localhost'
|
36
36
|
puts `#{command}`
|
37
37
|
else
|
38
38
|
$virtual_machines[instance].invoke [[command]]
|
data/test/execution_test.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: claudius
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-06-
|
13
|
+
date: 2014-06-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -51,7 +51,7 @@ dependencies:
|
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 1.22.0
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -59,39 +59,55 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - ! '>='
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: 1.22.0
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
name: net-ssh
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
66
66
|
none: false
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - '='
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
70
|
+
version: 2.9.1
|
71
71
|
type: :runtime
|
72
72
|
prerelease: false
|
73
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
|
-
- -
|
76
|
+
- - '='
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version:
|
78
|
+
version: 2.9.1
|
79
79
|
- !ruby/object:Gem::Dependency
|
80
80
|
name: graph
|
81
81
|
requirement: !ruby/object:Gem::Requirement
|
82
82
|
none: false
|
83
83
|
requirements:
|
84
|
-
- -
|
84
|
+
- - '='
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version:
|
86
|
+
version: 2.7.0
|
87
87
|
type: :runtime
|
88
88
|
prerelease: false
|
89
89
|
version_requirements: !ruby/object:Gem::Requirement
|
90
90
|
none: false
|
91
91
|
requirements:
|
92
|
-
- -
|
92
|
+
- - '='
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version:
|
94
|
+
version: 2.7.0
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: awesome_print
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - '='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.2.0
|
103
|
+
type: :runtime
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - '='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.2.0
|
95
111
|
description: Write a gem description
|
96
112
|
email:
|
97
113
|
- rachamot@gmail.com
|
@@ -107,6 +123,7 @@ files:
|
|
107
123
|
- claudius.gemspec
|
108
124
|
- examples/_
|
109
125
|
- examples/on_instance.rb
|
126
|
+
- examples/ping.rb
|
110
127
|
- examples/simple_program.rb
|
111
128
|
- examples/specify_instances.rb
|
112
129
|
- lib/remote_execution/cloud_provider.rb
|