corl 0.4.16 → 0.4.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +13 -8
- data/VERSION +1 -1
- data/bootstrap/os/ubuntu/01_git.sh +3 -5
- data/bootstrap/os/ubuntu/05_ruby.sh +4 -4
- data/bootstrap/os/ubuntu/06_puppet.sh +1 -1
- data/corl.gemspec +9 -3
- data/lib/CORL/action/reboot.rb +59 -0
- data/lib/CORL/configuration/file.rb +3 -1
- data/lib/CORL/machine/vagrant.rb +56 -40
- data/lib/CORL/node/vagrant.rb +3 -0
- data/lib/CORL/provisioner/puppetnode.rb +43 -44
- data/lib/core/facade.rb +2 -2
- data/lib/core/mixin/lookup.rb +6 -6
- data/lib/core/mod/facter_loader.rb +15 -0
- data/lib/core/mod/hiera_backend.rb +7 -3
- data/lib/core/plugin/action.rb +2 -7
- data/lib/core/plugin/configuration.rb +6 -0
- data/lib/core/plugin/network.rb +84 -42
- data/lib/core/plugin/node.rb +12 -8
- data/lib/core/plugin/provisioner.rb +11 -18
- data/lib/core/util/puppet.rb +3 -3
- data/lib/core/vagrant/action.rb +39 -0
- data/lib/core/vagrant/actions/create_shares.rb +28 -0
- data/lib/core/vagrant/actions/delete_cache.rb +18 -0
- data/lib/core/vagrant/actions/init_keys.rb +28 -0
- data/lib/core/vagrant/commands/launcher.rb +2 -2
- data/lib/core/vagrant/config.rb +7 -11
- data/lib/core/vagrant/plugins.rb +27 -5
- data/lib/core/vagrant/provisioner/config.rb +45 -6
- data/lib/core/vagrant/provisioner/provisioner.rb +41 -15
- data/lib/corl.rb +6 -4
- data/lib/facter/custom_facts.rb +2 -2
- data/lib/puppet/parser/functions/render.rb +4 -1
- data/locales/en.yml +15 -0
- metadata +8 -2
data/lib/core/vagrant/plugins.rb
CHANGED
@@ -9,13 +9,19 @@ class Plugin < ::Vagrant.plugin('2')
|
|
9
9
|
|
10
10
|
name '[C]oral [O]rchestration and [R]esearch [L]ibrary'
|
11
11
|
description 'The `corl` plugin provides an easy way to develop and test CORL networks locally from within Vagrant.'
|
12
|
-
|
13
|
-
@@
|
14
|
-
@@
|
12
|
+
|
13
|
+
@@directory = File.dirname(__FILE__)
|
14
|
+
@@action_dir = File.join(@@directory, 'actions')
|
15
|
+
@@command_dir = File.join(@@directory, 'commands')
|
16
|
+
@@provisioner_dir = File.join(@@directory, 'provisioner')
|
17
|
+
|
18
|
+
#---
|
19
|
+
|
20
|
+
nucleon_require(@@directory, :action)
|
21
|
+
nucleon_require(@@command_dir, :launcher)
|
15
22
|
|
16
23
|
# Commands (only one, which launches Nucleon actions)
|
17
|
-
command(:corl) do
|
18
|
-
nucleon_require(@@command_dir, :launcher)
|
24
|
+
command(:corl) do
|
19
25
|
Command::Launcher # Meta command for action launcher
|
20
26
|
end
|
21
27
|
|
@@ -28,6 +34,22 @@ class Plugin < ::Vagrant.plugin('2')
|
|
28
34
|
nucleon_require(@@provisioner_dir, :provisioner)
|
29
35
|
Provisioner::CORL
|
30
36
|
end
|
37
|
+
|
38
|
+
# Action hooks
|
39
|
+
action_hook 'init-keys', :machine_action_up do |hook|
|
40
|
+
nucleon_require(@@action_dir, :init_keys)
|
41
|
+
hook.after Vagrant::Action::Builtin::WaitForCommunicator, Action::InitKeys
|
42
|
+
end
|
43
|
+
|
44
|
+
action_hook 'create-shares', :machine_action_up do |hook|
|
45
|
+
nucleon_require(@@action_dir, :create_shares)
|
46
|
+
hook.after Action::InitKeys, Action::CreateShares
|
47
|
+
end
|
48
|
+
|
49
|
+
action_hook 'delete-cache', :machine_action_destroy do |hook|
|
50
|
+
nucleon_require(@@action_dir, :delete_cache)
|
51
|
+
hook.after Vagrant::Action::Builtin::ProvisionerCleanup, Action::DeleteCache
|
52
|
+
end
|
31
53
|
end
|
32
54
|
end
|
33
55
|
end
|
@@ -9,31 +9,70 @@ class CORL < ::Vagrant.plugin("2", :config)
|
|
9
9
|
|
10
10
|
def initialize
|
11
11
|
super
|
12
|
-
@
|
13
|
-
@
|
14
|
-
|
12
|
+
@network = UNSET_VALUE
|
13
|
+
@node = UNSET_VALUE
|
14
|
+
|
15
|
+
@force_updates = false
|
16
|
+
@user_home = UNSET_VALUE
|
17
|
+
@user_home_env_var = UNSET_VALUE
|
18
|
+
|
19
|
+
@root_user = UNSET_VALUE
|
20
|
+
@root_home = UNSET_VALUE
|
21
|
+
|
22
|
+
@bootstrap = false
|
23
|
+
@bootstrap_path = UNSET_VALUE
|
24
|
+
@bootstrap_glob = UNSET_VALUE
|
25
|
+
@bootstrap_init = UNSET_VALUE
|
26
|
+
@auth_files = UNSET_VALUE
|
27
|
+
|
28
|
+
@seed = false
|
29
|
+
@project_reference = UNSET_VALUE
|
30
|
+
@project_branch = UNSET_VALUE
|
31
|
+
|
32
|
+
@provision = true
|
33
|
+
@dry_run = false
|
15
34
|
end
|
16
35
|
|
17
36
|
#---
|
18
37
|
|
19
38
|
def finalize!
|
20
39
|
super
|
40
|
+
@user_home = nil if @user_home == UNSET_VALUE
|
41
|
+
@user_home_env_var = nil if @user_home_env_var == UNSET_VALUE
|
42
|
+
|
43
|
+
@root_user = nil if @root_user == UNSET_VALUE
|
44
|
+
@root_home = nil if @root_home == UNSET_VALUE
|
45
|
+
|
46
|
+
@bootstrap_path = nil if @bootstrap_path == UNSET_VALUE
|
47
|
+
@bootstrap_glob = nil if @bootstrap_glob == UNSET_VALUE
|
48
|
+
@bootstrap_init = nil if @bootstrap_init == UNSET_VALUE
|
49
|
+
@auth_files = nil if @auth_files == UNSET_VALUE
|
50
|
+
|
51
|
+
@project_reference = nil if @project_reference == UNSET_VALUE
|
52
|
+
@project_branch = nil if @project_branch == UNSET_VALUE
|
21
53
|
end
|
22
54
|
|
23
55
|
#-----------------------------------------------------------------------------
|
24
56
|
# Property accessor / modifiers
|
25
57
|
|
26
|
-
attr_accessor :
|
58
|
+
attr_accessor :network, :node
|
59
|
+
attr_accessor :force_updates, :user_home, :user_home_env_var, :root_user, :root_home
|
60
|
+
|
61
|
+
attr_accessor :bootstrap, :bootstrap_path, :bootstrap_glob, :bootstrap_init, :auth_files
|
62
|
+
attr_accessor :seed, :project_reference, :project_branch
|
63
|
+
attr_accessor :provision, :dry_run
|
27
64
|
|
28
65
|
#-----------------------------------------------------------------------------
|
29
66
|
# Validation
|
30
67
|
|
31
68
|
def validate(machine)
|
32
|
-
errors = _detected_errors
|
69
|
+
errors = _detected_errors
|
70
|
+
|
71
|
+
# TODO: Validation (with action config validators)
|
72
|
+
|
33
73
|
{ "CORL provisioner" => errors }
|
34
74
|
end
|
35
75
|
end
|
36
76
|
end
|
37
77
|
end
|
38
78
|
end
|
39
|
-
|
@@ -21,25 +21,51 @@ class CORL < ::Vagrant.plugin("2", :provisioner)
|
|
21
21
|
|
22
22
|
def provision
|
23
23
|
@machine.communicate.tap do |comm|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
24
|
+
unless ::CORL::Vagrant.command
|
25
|
+
# Hackish solution to ensure our code has access to Vagrant machines.
|
26
|
+
# This serves as a Vagrant VM manager.
|
27
|
+
::CORL::Vagrant.command = Command::Launcher.new([], @machine.env)
|
28
|
+
end
|
29
|
+
|
30
|
+
network = config.network
|
31
|
+
node = config.node
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
33
|
+
if network && node
|
34
|
+
# Provision the server
|
35
|
+
network.init_node(node, clean(::CORL.config(:vagrant_node_init, {
|
36
|
+
:force => config.force_updates,
|
37
|
+
:home => config.user_home,
|
38
|
+
:home_env_var => config.user_home_env_var,
|
39
|
+
:root_user => config.root_user,
|
40
|
+
:root_home => config.root_home,
|
41
|
+
:bootstrap => config.bootstrap,
|
42
|
+
:bootstrap_path => config.bootstrap_path,
|
43
|
+
:bootstrap_glob => config.bootstrap_glob,
|
44
|
+
:bootstrap_init => config.bootstrap_init,
|
45
|
+
:auth_files => config.auth_files,
|
46
|
+
:seed => config.seed,
|
47
|
+
:project_reference => config.project_reference,
|
48
|
+
:project_branch => config.project_branch,
|
49
|
+
:provision => config.provision,
|
50
|
+
:dry_run => config.dry_run
|
51
|
+
}).export))
|
40
52
|
end
|
41
53
|
end
|
42
54
|
end
|
55
|
+
|
56
|
+
#-----------------------------------------------------------------------------
|
57
|
+
# Utilities
|
58
|
+
|
59
|
+
def clean(options)
|
60
|
+
options.keys.each do |key|
|
61
|
+
value = options[key]
|
62
|
+
if value.nil?
|
63
|
+
options.delete(key)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
options
|
67
|
+
end
|
68
|
+
protected :clean
|
43
69
|
end
|
44
70
|
end
|
45
71
|
end
|
data/lib/corl.rb
CHANGED
@@ -15,6 +15,7 @@
|
|
15
15
|
|
16
16
|
lib_dir = File.dirname(__FILE__)
|
17
17
|
core_dir = File.join(lib_dir, 'core')
|
18
|
+
mod_dir = File.join(core_dir, 'mod')
|
18
19
|
mixin_dir = File.join(core_dir, 'mixin')
|
19
20
|
mixin_action_dir = File.join(mixin_dir, 'action')
|
20
21
|
macro_dir = File.join(mixin_dir, 'macro')
|
@@ -27,10 +28,6 @@ vagrant_dir = File.join(core_dir, 'vagrant')
|
|
27
28
|
|
28
29
|
$:.unshift(lib_dir) unless $:.include?(lib_dir) || $:.include?(File.expand_path(lib_dir))
|
29
30
|
|
30
|
-
#---
|
31
|
-
|
32
|
-
require 'rubygems'
|
33
|
-
|
34
31
|
require 'nucleon_base'
|
35
32
|
CORL = Nucleon
|
36
33
|
|
@@ -50,6 +47,11 @@ I18n.load_path << File.expand_path(File.join('..', 'locales', 'en.yml'), lib_dir
|
|
50
47
|
#-------------------------------------------------------------------------------
|
51
48
|
# Include CORL libraries
|
52
49
|
|
50
|
+
# Monkey patches (depreciate as fast as possible)
|
51
|
+
nucleon_require(mod_dir, :facter_loader)
|
52
|
+
|
53
|
+
#---
|
54
|
+
|
53
55
|
# Mixins for classes
|
54
56
|
Dir.glob(File.join(mixin_dir, '*.rb')).each do |file|
|
55
57
|
require file
|
data/lib/facter/custom_facts.rb
CHANGED
@@ -5,8 +5,8 @@ begin
|
|
5
5
|
# Load network if it exists
|
6
6
|
if CORL.admin?
|
7
7
|
network_path = Facter.value("corl_network")
|
8
|
-
network_config = CORL.config(:network, { :directory => network_path
|
9
|
-
network = CORL.network(
|
8
|
+
network_config = CORL.config(:network, { :directory => network_path })
|
9
|
+
network = CORL.network(network_path, network_config, :default)
|
10
10
|
|
11
11
|
if network && node = network.local_node
|
12
12
|
Facter.add(:corl_provider) do
|
@@ -37,7 +37,10 @@ This function returns the string-ified form of a given value.
|
|
37
37
|
config = CORL::Config.init_flat(options, contexts, default_options)
|
38
38
|
end
|
39
39
|
|
40
|
-
|
40
|
+
template = CORL.template(config, provider)
|
41
|
+
value = template.render(data)
|
42
|
+
|
43
|
+
CORL.remove_plugin(template)
|
41
44
|
|
42
45
|
if config.get(:debug, false)
|
43
46
|
CORL.ui.info("\n", { :prefix => false })
|
data/locales/en.yml
CHANGED
@@ -161,6 +161,9 @@ en:
|
|
161
161
|
stop:
|
162
162
|
start: |-
|
163
163
|
Stopping %{provider} machine %{name}
|
164
|
+
reboot:
|
165
|
+
start: |-
|
166
|
+
Rebooting %{provider} machine %{name}
|
164
167
|
destroy:
|
165
168
|
start: |-
|
166
169
|
Destroying %{provider} machine %{name}
|
@@ -173,3 +176,15 @@ en:
|
|
173
176
|
Whether or not to build the provisioner catalog without configuring the system (default %{default_value})
|
174
177
|
start: |-
|
175
178
|
Starting provision run
|
179
|
+
vagrant:
|
180
|
+
actions:
|
181
|
+
init_keys:
|
182
|
+
start: |-
|
183
|
+
Initializing CORL development keys...
|
184
|
+
create_shares:
|
185
|
+
start: |-
|
186
|
+
Creating CORL specific shares...
|
187
|
+
delete_cache:
|
188
|
+
start: |-
|
189
|
+
Clearing CORL cache for this machine...
|
190
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: corl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrian Webb
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nucleon
|
@@ -232,6 +232,7 @@ files:
|
|
232
232
|
- lib/CORL/action/lookup.rb
|
233
233
|
- lib/CORL/action/machines.rb
|
234
234
|
- lib/CORL/action/provision.rb
|
235
|
+
- lib/CORL/action/reboot.rb
|
235
236
|
- lib/CORL/action/regions.rb
|
236
237
|
- lib/CORL/action/seed.rb
|
237
238
|
- lib/CORL/action/spawn.rb
|
@@ -257,6 +258,7 @@ files:
|
|
257
258
|
- lib/core/mixin/action/keypair.rb
|
258
259
|
- lib/core/mixin/lookup.rb
|
259
260
|
- lib/core/mixin/macro/network_settings.rb
|
261
|
+
- lib/core/mod/facter_loader.rb
|
260
262
|
- lib/core/mod/fog_aws_server.rb
|
261
263
|
- lib/core/mod/fog_rackspace_server.rb
|
262
264
|
- lib/core/mod/hiera_backend.rb
|
@@ -272,6 +274,10 @@ files:
|
|
272
274
|
- lib/core/util/puppet/resource.rb
|
273
275
|
- lib/core/util/puppet/resource_group.rb
|
274
276
|
- lib/core/vagrant/Vagrantfile
|
277
|
+
- lib/core/vagrant/action.rb
|
278
|
+
- lib/core/vagrant/actions/create_shares.rb
|
279
|
+
- lib/core/vagrant/actions/delete_cache.rb
|
280
|
+
- lib/core/vagrant/actions/init_keys.rb
|
275
281
|
- lib/core/vagrant/commands/launcher.rb
|
276
282
|
- lib/core/vagrant/config.rb
|
277
283
|
- lib/core/vagrant/plugins.rb
|