auser-poolparty 0.2.38 → 0.2.39
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +30 -1
- data/bin/cloud-maintain +11 -3
- data/bin/messenger-get-load +2 -1
- data/lib/erlang/cloudpanel/Makefile +5 -0
- data/lib/erlang/cloudpanel/doc/cloudpanel.html +39 -0
- data/lib/erlang/cloudpanel/doc/cloudpanel_app.html +40 -0
- data/lib/erlang/cloudpanel/doc/cloudpanel_deps.html +89 -0
- data/lib/erlang/cloudpanel/doc/cloudpanel_sup.html +46 -0
- data/lib/erlang/cloudpanel/doc/cloudpanel_web.html +45 -0
- data/lib/erlang/cloudpanel/ebin/cloudpanel.app +14 -0
- data/lib/erlang/cloudpanel/priv/www/images/bg_content.gif +0 -0
- data/lib/erlang/cloudpanel/priv/www/index.html +34 -0
- data/lib/erlang/cloudpanel/priv/www/javascripts/jquery.js +32 -0
- data/lib/erlang/cloudpanel/priv/www/stylesheets/application.css +48 -0
- data/lib/erlang/cloudpanel/priv/www/stylesheets/classes.css +2 -0
- data/lib/erlang/cloudpanel/priv/www/stylesheets/colors.css +8 -0
- data/lib/erlang/cloudpanel/priv/www/stylesheets/nav.css +18 -0
- data/lib/erlang/cloudpanel/src/Makefile +9 -0
- data/lib/erlang/cloudpanel/src/cloudpanel.app +14 -0
- data/lib/erlang/cloudpanel/src/cloudpanel.erl +30 -0
- data/lib/erlang/cloudpanel/src/cloudpanel.hrl +1 -0
- data/lib/erlang/cloudpanel/src/cloudpanel_app.erl +22 -0
- data/lib/erlang/cloudpanel/src/cloudpanel_deps.erl +84 -0
- data/lib/erlang/cloudpanel/src/cloudpanel_sup.erl +54 -0
- data/lib/erlang/cloudpanel/src/cloudpanel_web.erl +45 -0
- data/lib/erlang/cloudpanel/start-dev.sh +3 -0
- data/lib/erlang/cloudpanel/start.sh +3 -0
- data/lib/erlang/cloudpanel/support/include.mk +46 -0
- data/lib/poolparty.rb +1 -1
- data/lib/poolparty/aska/aska.rb +9 -7
- data/lib/poolparty/base_packages/haproxy.rb +1 -1
- data/lib/poolparty/base_packages/poolparty.rb +2 -2
- data/lib/poolparty/helpers/provisioner_base.rb +10 -2
- data/lib/poolparty/monitors/base_monitor.rb +3 -3
- data/lib/poolparty/monitors/monitors/cpu_monitor.rb +1 -1
- data/lib/poolparty/net/messenger.rb +1 -1
- data/lib/poolparty/net/remote_instance.rb +1 -1
- data/lib/poolparty/net/remoter.rb +8 -3
- data/lib/poolparty/pool/base.rb +9 -1
- data/lib/poolparty/templates/puppetcleaner +1 -0
- data/lib/poolparty/version.rb +1 -1
- data/poolparty.gemspec +32 -3
- data/spec/poolparty/monitors/base_monitor_spec.rb +8 -0
- data/website/index.html +1 -1
- metadata +32 -3
@@ -0,0 +1,18 @@
|
|
1
|
+
#nav {
|
2
|
+
padding-right: 0 10px;
|
3
|
+
margin: 0 10px 10px 0; }
|
4
|
+
#nav #navmenu ul {
|
5
|
+
display: inline;
|
6
|
+
list-style-type: none; }
|
7
|
+
#nav #navmenu ul li {
|
8
|
+
padding: 0;
|
9
|
+
margin: 0; }
|
10
|
+
#nav #navmenu ul a {
|
11
|
+
color: #FFF;
|
12
|
+
background: #036;
|
13
|
+
display: block;
|
14
|
+
padding: .3em 0;
|
15
|
+
text-decoration: none; }
|
16
|
+
#nav #navmenu ul a:hover {
|
17
|
+
background: #369;
|
18
|
+
color: #EEE; }
|
@@ -0,0 +1,14 @@
|
|
1
|
+
{application, cloudpanel,
|
2
|
+
[{description, "cloudpanel"},
|
3
|
+
{vsn, "0.01"},
|
4
|
+
{modules, [
|
5
|
+
cloudpanel,
|
6
|
+
cloudpanel_app,
|
7
|
+
cloudpanel_sup,
|
8
|
+
cloudpanel_web,
|
9
|
+
cloudpanel_deps
|
10
|
+
]},
|
11
|
+
{registered, []},
|
12
|
+
{mod, {cloudpanel_app, []}},
|
13
|
+
{env, []},
|
14
|
+
{applications, [kernel, stdlib, crypto]}]}.
|
@@ -0,0 +1,30 @@
|
|
1
|
+
%% @author author <author@example.com>
|
2
|
+
%% @copyright YYYY author.
|
3
|
+
|
4
|
+
%% @doc TEMPLATE.
|
5
|
+
|
6
|
+
-module(cloudpanel).
|
7
|
+
-author('author <author@example.com>').
|
8
|
+
-export([start/0, stop/0]).
|
9
|
+
|
10
|
+
ensure_started(App) ->
|
11
|
+
case application:start(App) of
|
12
|
+
ok ->
|
13
|
+
ok;
|
14
|
+
{error, {already_started, App}} ->
|
15
|
+
ok
|
16
|
+
end.
|
17
|
+
|
18
|
+
%% @spec start() -> ok
|
19
|
+
%% @doc Start the cloudpanel server.
|
20
|
+
start() ->
|
21
|
+
cloudpanel_deps:ensure(),
|
22
|
+
ensure_started(crypto),
|
23
|
+
application:start(cloudpanel).
|
24
|
+
|
25
|
+
%% @spec stop() -> ok
|
26
|
+
%% @doc Stop the cloudpanel server.
|
27
|
+
stop() ->
|
28
|
+
Res = application:stop(cloudpanel),
|
29
|
+
application:stop(crypto),
|
30
|
+
Res.
|
@@ -0,0 +1 @@
|
|
1
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
%% @author author <author@example.com>
|
2
|
+
%% @copyright YYYY author.
|
3
|
+
|
4
|
+
%% @doc Callbacks for the cloudpanel application.
|
5
|
+
|
6
|
+
-module(cloudpanel_app).
|
7
|
+
-author('author <author@example.com>').
|
8
|
+
|
9
|
+
-behaviour(application).
|
10
|
+
-export([start/2,stop/1]).
|
11
|
+
|
12
|
+
|
13
|
+
%% @spec start(_Type, _StartArgs) -> ServerRet
|
14
|
+
%% @doc application start callback for cloudpanel.
|
15
|
+
start(_Type, _StartArgs) ->
|
16
|
+
cloudpanel_deps:ensure(),
|
17
|
+
cloudpanel_sup:start_link().
|
18
|
+
|
19
|
+
%% @spec stop(_State) -> ServerRet
|
20
|
+
%% @doc application stop callback for cloudpanel.
|
21
|
+
stop(_State) ->
|
22
|
+
ok.
|
@@ -0,0 +1,84 @@
|
|
1
|
+
%% @author author <author@example.com>
|
2
|
+
%% @copyright YYYY author.
|
3
|
+
|
4
|
+
%% @doc Ensure that the relatively-installed dependencies are on the code
|
5
|
+
%% loading path, and locate resources relative
|
6
|
+
%% to this application's path.
|
7
|
+
|
8
|
+
-module(cloudpanel_deps).
|
9
|
+
-author('author <author@example.com>').
|
10
|
+
|
11
|
+
-export([ensure/0, ensure/1]).
|
12
|
+
-export([get_base_dir/0, get_base_dir/1]).
|
13
|
+
-export([local_path/1, local_path/2]).
|
14
|
+
-export([deps_on_path/0, new_siblings/1]).
|
15
|
+
|
16
|
+
%% @spec deps_on_path() -> [ProjNameAndVers]
|
17
|
+
%% @doc List of project dependencies on the path.
|
18
|
+
deps_on_path() ->
|
19
|
+
F = fun (X, Acc) ->
|
20
|
+
ProjDir = filename:dirname(X),
|
21
|
+
case {filename:basename(X),
|
22
|
+
filename:basename(filename:dirname(ProjDir))} of
|
23
|
+
{"ebin", "deps"} ->
|
24
|
+
[filename:basename(ProjDir) | Acc];
|
25
|
+
_ ->
|
26
|
+
Acc
|
27
|
+
end
|
28
|
+
end,
|
29
|
+
ordsets:from_list(lists:foldl(F, [], code:get_path())).
|
30
|
+
|
31
|
+
%% @spec new_siblings(Module) -> [Dir]
|
32
|
+
%% @doc Find new siblings paths relative to Module that aren't already on the
|
33
|
+
%% code path.
|
34
|
+
new_siblings(Module) ->
|
35
|
+
Existing = deps_on_path(),
|
36
|
+
SiblingEbin = filelib:wildcard(local_path(["deps", "*", "ebin"], Module)),
|
37
|
+
Siblings = [filename:dirname(X) || X <- SiblingEbin,
|
38
|
+
ordsets:is_element(
|
39
|
+
filename:basename(filename:dirname(X)),
|
40
|
+
Existing) =:= false],
|
41
|
+
lists:filter(fun filelib:is_dir/1,
|
42
|
+
lists:append([[filename:join([X, "ebin"]),
|
43
|
+
filename:join([X, "include"])] ||
|
44
|
+
X <- Siblings])).
|
45
|
+
|
46
|
+
|
47
|
+
%% @spec ensure(Module) -> ok
|
48
|
+
%% @doc Ensure that all ebin and include paths for dependencies
|
49
|
+
%% of the application for Module are on the code path.
|
50
|
+
ensure(Module) ->
|
51
|
+
code:add_paths(new_siblings(Module)),
|
52
|
+
code:clash(),
|
53
|
+
ok.
|
54
|
+
|
55
|
+
%% @spec ensure() -> ok
|
56
|
+
%% @doc Ensure that the ebin and include paths for dependencies of
|
57
|
+
%% this application are on the code path. Equivalent to
|
58
|
+
%% ensure(?Module).
|
59
|
+
ensure() ->
|
60
|
+
ensure(?MODULE).
|
61
|
+
|
62
|
+
%% @spec get_base_dir(Module) -> string()
|
63
|
+
%% @doc Return the application directory for Module. It assumes Module is in
|
64
|
+
%% a standard OTP layout application in the ebin or src directory.
|
65
|
+
get_base_dir(Module) ->
|
66
|
+
{file, Here} = code:is_loaded(Module),
|
67
|
+
filename:dirname(filename:dirname(Here)).
|
68
|
+
|
69
|
+
%% @spec get_base_dir() -> string()
|
70
|
+
%% @doc Return the application directory for this application. Equivalent to
|
71
|
+
%% get_base_dir(?MODULE).
|
72
|
+
get_base_dir() ->
|
73
|
+
get_base_dir(?MODULE).
|
74
|
+
|
75
|
+
%% @spec local_path([string()], Module) -> string()
|
76
|
+
%% @doc Return an application-relative directory from Module's application.
|
77
|
+
local_path(Components, Module) ->
|
78
|
+
filename:join([get_base_dir(Module) | Components]).
|
79
|
+
|
80
|
+
%% @spec local_path(Components) -> string()
|
81
|
+
%% @doc Return an application-relative directory for this application.
|
82
|
+
%% Equivalent to local_path(Components, ?MODULE).
|
83
|
+
local_path(Components) ->
|
84
|
+
local_path(Components, ?MODULE).
|
@@ -0,0 +1,54 @@
|
|
1
|
+
%% @author author <author@example.com>
|
2
|
+
%% @copyright YYYY author.
|
3
|
+
|
4
|
+
%% @doc Supervisor for the cloudpanel application.
|
5
|
+
|
6
|
+
-module(cloudpanel_sup).
|
7
|
+
-author('author <author@example.com>').
|
8
|
+
|
9
|
+
-behaviour(supervisor).
|
10
|
+
|
11
|
+
%% External exports
|
12
|
+
-export([start_link/0, upgrade/0]).
|
13
|
+
|
14
|
+
%% supervisor callbacks
|
15
|
+
-export([init/1]).
|
16
|
+
|
17
|
+
%% @spec start_link() -> ServerRet
|
18
|
+
%% @doc API for starting the supervisor.
|
19
|
+
start_link() ->
|
20
|
+
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
|
21
|
+
|
22
|
+
%% @spec upgrade() -> ok
|
23
|
+
%% @doc Add processes if necessary.
|
24
|
+
upgrade() ->
|
25
|
+
{ok, {_, Specs}} = init([]),
|
26
|
+
|
27
|
+
Old = sets:from_list(
|
28
|
+
[Name || {Name, _, _, _} <- supervisor:which_children(?MODULE)]),
|
29
|
+
New = sets:from_list([Name || {Name, _, _, _, _, _} <- Specs]),
|
30
|
+
Kill = sets:subtract(Old, New),
|
31
|
+
|
32
|
+
sets:fold(fun (Id, ok) ->
|
33
|
+
supervisor:terminate_child(?MODULE, Id),
|
34
|
+
supervisor:delete_child(?MODULE, Id),
|
35
|
+
ok
|
36
|
+
end, ok, Kill),
|
37
|
+
|
38
|
+
[supervisor:start_child(?MODULE, Spec) || Spec <- Specs],
|
39
|
+
ok.
|
40
|
+
|
41
|
+
%% @spec init([]) -> SupervisorTree
|
42
|
+
%% @doc supervisor callback.
|
43
|
+
init([]) ->
|
44
|
+
Ip = case os:getenv("MOCHIWEB_IP") of false -> "0.0.0.0"; Any -> Any end,
|
45
|
+
WebConfig = [
|
46
|
+
{ip, Ip},
|
47
|
+
{port, 8000},
|
48
|
+
{docroot, cloudpanel_deps:local_path(["priv", "www"])}],
|
49
|
+
Web = {cloudpanel_web,
|
50
|
+
{cloudpanel_web, start, [WebConfig]},
|
51
|
+
permanent, 5000, worker, dynamic},
|
52
|
+
|
53
|
+
Processes = [Web],
|
54
|
+
{ok, {{one_for_one, 10, 10}, Processes}}.
|
@@ -0,0 +1,45 @@
|
|
1
|
+
%% @author Ari Lerner <ari.lerner@citrusbyte.com>
|
2
|
+
%% @copyright 2008 Ari Lerner.
|
3
|
+
|
4
|
+
%% @doc PoolParty panel
|
5
|
+
|
6
|
+
-module (cloudpanel_web).
|
7
|
+
-author('Ari Lerner <ari.lerner@citrusbyte.com>').
|
8
|
+
|
9
|
+
-export([start/1, stop/0, loop/2]).
|
10
|
+
|
11
|
+
-define(TIMEOUT, 20000).
|
12
|
+
|
13
|
+
%% External API
|
14
|
+
|
15
|
+
start(Options) ->
|
16
|
+
{DocRoot, Options1} = get_option(docroot, Options),
|
17
|
+
Loop = fun (Req) ->
|
18
|
+
?MODULE:loop(Req, DocRoot)
|
19
|
+
end,
|
20
|
+
mochiweb_http:start([{name, ?MODULE}, {loop, Loop} | Options1]).
|
21
|
+
|
22
|
+
stop() ->
|
23
|
+
mochiweb_http:stop(?MODULE).
|
24
|
+
|
25
|
+
loop(Req, DocRoot) ->
|
26
|
+
"/" ++ Path = Req:get(path),
|
27
|
+
case Req:get(method) of
|
28
|
+
Method when Method =:= 'GET'; Method =:= 'HEAD' ->
|
29
|
+
case Path of
|
30
|
+
_ ->
|
31
|
+
Req:serve_file(Path, DocRoot)
|
32
|
+
end;
|
33
|
+
'POST' ->
|
34
|
+
case Path of
|
35
|
+
_ ->
|
36
|
+
Req:not_found()
|
37
|
+
end;
|
38
|
+
_ ->
|
39
|
+
Req:respond({501, [], []})
|
40
|
+
end.
|
41
|
+
|
42
|
+
%% Internal API
|
43
|
+
|
44
|
+
get_option(Option, Options) ->
|
45
|
+
{proplists:get_value(Option, Options), proplists:delete(Option, Options)}.
|
@@ -0,0 +1,46 @@
|
|
1
|
+
## -*- makefile -*-
|
2
|
+
|
3
|
+
######################################################################
|
4
|
+
## Erlang
|
5
|
+
|
6
|
+
ERL := erl
|
7
|
+
ERLC := $(ERL)c
|
8
|
+
|
9
|
+
INCLUDE_DIRS := ../include $(wildcard ../deps/*/include)
|
10
|
+
EBIN_DIRS := $(wildcard ../deps/*/ebin)
|
11
|
+
ERLC_FLAGS := -W $(INCLUDE_DIRS:../%=-I ../%) $(EBIN_DIRS:%=-pa %)
|
12
|
+
|
13
|
+
ifndef no_debug_info
|
14
|
+
ERLC_FLAGS += +debug_info
|
15
|
+
endif
|
16
|
+
|
17
|
+
ifdef debug
|
18
|
+
ERLC_FLAGS += -Ddebug
|
19
|
+
endif
|
20
|
+
|
21
|
+
EBIN_DIR := ../ebin
|
22
|
+
DOC_DIR := ../doc
|
23
|
+
EMULATOR := beam
|
24
|
+
|
25
|
+
ERL_SOURCES := $(wildcard *.erl)
|
26
|
+
ERL_HEADERS := $(wildcard *.hrl) $(wildcard ../include/*.hrl)
|
27
|
+
ERL_OBJECTS := $(ERL_SOURCES:%.erl=$(EBIN_DIR)/%.$(EMULATOR))
|
28
|
+
ERL_DOCUMENTS := $(ERL_SOURCES:%.erl=$(DOC_DIR)/%.html)
|
29
|
+
ERL_OBJECTS_LOCAL := $(ERL_SOURCES:%.erl=./%.$(EMULATOR))
|
30
|
+
APP_FILES := $(wildcard *.app)
|
31
|
+
EBIN_FILES = $(ERL_OBJECTS) $(ERL_DOCUMENTS) $(APP_FILES:%.app=../ebin/%.app)
|
32
|
+
EBIN_FILES_NO_DOCS = $(ERL_OBJECTS) $(APP_FILES:%.app=../ebin/%.app)
|
33
|
+
MODULES = $(ERL_SOURCES:%.erl=%)
|
34
|
+
|
35
|
+
../ebin/%.app: %.app
|
36
|
+
cp $< $@
|
37
|
+
|
38
|
+
$(EBIN_DIR)/%.$(EMULATOR): %.erl
|
39
|
+
$(ERLC) $(ERLC_FLAGS) -o $(EBIN_DIR) $<
|
40
|
+
|
41
|
+
./%.$(EMULATOR): %.erl
|
42
|
+
$(ERLC) $(ERLC_FLAGS) -o . $<
|
43
|
+
|
44
|
+
$(DOC_DIR)/%.html: %.erl
|
45
|
+
$(ERL) -noshell -run edoc file $< -run init stop
|
46
|
+
mv *.html $(DOC_DIR)
|
data/lib/poolparty.rb
CHANGED
@@ -16,7 +16,7 @@ ActiveSupport::Dependencies.load_paths << File.dirname(__FILE__)
|
|
16
16
|
## Load PoolParty
|
17
17
|
require "#{File.dirname(__FILE__)}/poolparty/version"
|
18
18
|
|
19
|
-
%w(core modules exceptions aska
|
19
|
+
%w(core modules exceptions dependency_resolutions aska monitors net).each do |dir|
|
20
20
|
Dir[File.dirname(__FILE__) + "/poolparty/#{dir}/**.rb"].each do |file|
|
21
21
|
require file
|
22
22
|
end
|
data/lib/poolparty/aska/aska.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
=end
|
5
5
|
module Aska
|
6
6
|
module ClassMethods
|
7
|
-
def rules(name=:rules, arr=[])
|
7
|
+
def rules(name=:rules, arr=[], create_vars=true)
|
8
8
|
returning look_up_rules(name) do |rs|
|
9
9
|
arr.each do |line|
|
10
10
|
next unless line
|
@@ -12,7 +12,7 @@ module Aska
|
|
12
12
|
v = line[/(.+)[=\\<>](.*)/, 2].gsub(/\s+/, '')
|
13
13
|
m = line[/[=\\<>]/, 0].gsub(/\s+/, '')
|
14
14
|
|
15
|
-
create_instance_variable(k)
|
15
|
+
create_instance_variable(k, create_vars)
|
16
16
|
rs << {k => [m, v]}
|
17
17
|
rs << {k => [">", "0"]} unless rs.reject {|a| a.to_s == "#{k}>0" }
|
18
18
|
end
|
@@ -21,10 +21,12 @@ module Aska
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
24
|
-
def create_instance_variable(k)
|
24
|
+
def create_instance_variable(k, create_vars=true)
|
25
25
|
aska_attr_accessors << k.to_sym unless aska_attr_accessors.include?(k.to_sym)
|
26
|
-
|
27
|
-
|
26
|
+
if create_vars
|
27
|
+
attr_reader k.to_sym unless respond_to?("#{k}".to_sym)
|
28
|
+
attr_writer k.to_sym unless respond_to?("#{k}=".to_sym)
|
29
|
+
end
|
28
30
|
end
|
29
31
|
def look_up_rules(name)
|
30
32
|
defined_rules[name.to_sym] ||= Rules.new
|
@@ -70,10 +72,10 @@ module Aska
|
|
70
72
|
def rules_values
|
71
73
|
returning Array.new do |arr|
|
72
74
|
self.class.defined_rules.each do |name,rule_array|
|
73
|
-
arr << name
|
75
|
+
arr << "#{name} : #{valid_rule?(rule_array)}"
|
74
76
|
rule_array.each do |rule|
|
75
77
|
rule.map do |k,v|
|
76
|
-
arr << "#{k} -> #{__aska_aska_stuff(k)} (#{v[0]} #{v[1]})"
|
78
|
+
arr << " #{k} -> #{__aska_aska_stuff(k)} (#{v[0]} #{v[1]})"
|
77
79
|
end
|
78
80
|
end
|
79
81
|
end
|
@@ -40,8 +40,8 @@ module PoolParty
|
|
40
40
|
|
41
41
|
has_gempackage(:name => "poolparty-latest", :download_url => "http://github.com/auser/poolparty/tree/master%2Fpkg%2Fpoolparty-latest.gem?raw=true", :requires => [get_gempackage("ruby2ruby"), get_gempackage("RubyInline"), get_gempackage("ParseTree")])
|
42
42
|
|
43
|
-
has_exec(:name => "build_messenger", :command => ". /etc/profile && server-build-messenger", :requires => get_gempackage("poolparty-latest"), :
|
44
|
-
has_exec(:name => "start_node", :command => ". /etc/profile && server-start-node", :requires => get_exec("build_messenger"), :
|
43
|
+
has_exec(:name => "build_messenger", :command => ". /etc/profile && server-build-messenger", :requires => get_gempackage("poolparty-latest"), :onlyif => "ps aux | grep beam | grep node")
|
44
|
+
has_exec(:name => "start_node", :command => ". /etc/profile && server-start-node", :requires => get_exec("build_messenger"), :onlyif => "ps aux | grep beam | grep node")
|
45
45
|
|
46
46
|
end
|
47
47
|
|
@@ -93,6 +93,8 @@ module PoolParty
|
|
93
93
|
|
94
94
|
before_install(@instance)
|
95
95
|
|
96
|
+
process_clean_reconfigure_for!(@instance, testing)
|
97
|
+
|
96
98
|
vputs "Logging in and running provisioning on #{@instance.name}"
|
97
99
|
cmd = "cd #{Base.remote_storage_path} && chmod +x install_#{name}.sh && /bin/sh install_#{name}.sh; rm install_#{name}.sh"
|
98
100
|
verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
|
@@ -136,8 +138,9 @@ module PoolParty
|
|
136
138
|
vputs "Cleaning certs from master: #{instance.name}"
|
137
139
|
# puppetca --clean #{instance.name}.compute-1.internal; puppetca --clean #{instance.name}.ec2.internal
|
138
140
|
# find /etc/puppet/ssl -type f -exec rm {} \;
|
139
|
-
|
140
|
-
@cloud.run_command_on(
|
141
|
+
@cloud.run_command_on("rm -rf /etc/puppet/ssl", instance) unless testing || instance.master?
|
142
|
+
# @cloud.run_command_on("if [ -f '/usr/bin/puppetcleaner' ]; then /usr/bin/env puppetcleaner; fi", @cloud.master) unless testing
|
143
|
+
@cloud.run_command_on("puppetca --clean #{instance.name}.compute-1.internal ; puppetca --clean #{instance.name}.ec2.internal", @cloud.master) unless testing
|
141
144
|
end
|
142
145
|
def process_reconfigure!(testing=false)
|
143
146
|
@cloud.run_command_on(RemoteInstance.puppet_runner_command, @instance) unless testing
|
@@ -182,6 +185,7 @@ module PoolParty
|
|
182
185
|
"#!/usr/bin/env sh",
|
183
186
|
upgrade_system,
|
184
187
|
fix_rubygems,
|
188
|
+
make_logger_directory,
|
185
189
|
install_puppet,
|
186
190
|
custom_install_tasks
|
187
191
|
] << install_tasks
|
@@ -293,6 +297,10 @@ fi
|
|
293
297
|
"#{installer_for( puppet_packages )}"
|
294
298
|
end
|
295
299
|
|
300
|
+
def make_logger_directory
|
301
|
+
"mkdir -p /var/logs/poolparty"
|
302
|
+
end
|
303
|
+
|
296
304
|
def create_poolparty_manifest
|
297
305
|
<<-EOS
|
298
306
|
cp #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes
|