puppetfactory 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +13 -0
- data/README.md +0 -0
- data/bin/pfsh +31 -0
- data/bin/puppetfactory +153 -0
- data/lib/puppetfactory.rb +300 -0
- data/lib/puppetfactory/cli.rb +114 -0
- data/lib/puppetfactory/dashboard/rake_tasks.rb +69 -0
- data/lib/puppetfactory/dashboard/serverspec_helper.rb +84 -0
- data/lib/puppetfactory/dashboard/spec_helper.rb +26 -0
- data/lib/puppetfactory/helpers.rb +37 -0
- data/lib/puppetfactory/monkeypatches.rb +30 -0
- data/lib/puppetfactory/plugins.rb +11 -0
- data/lib/puppetfactory/plugins/certificates.rb +28 -0
- data/lib/puppetfactory/plugins/classification.rb +75 -0
- data/lib/puppetfactory/plugins/code_manager.rb +156 -0
- data/lib/puppetfactory/plugins/console_user.rb +62 -0
- data/lib/puppetfactory/plugins/dashboard.rb +128 -0
- data/lib/puppetfactory/plugins/docker.rb +193 -0
- data/lib/puppetfactory/plugins/example.rb +88 -0
- data/lib/puppetfactory/plugins/github.rb +102 -0
- data/lib/puppetfactory/plugins/gitlab.rb +62 -0
- data/lib/puppetfactory/plugins/hooks.rb +46 -0
- data/lib/puppetfactory/plugins/login_shell.rb +10 -0
- data/lib/puppetfactory/plugins/logs.rb +34 -0
- data/lib/puppetfactory/plugins/r10k.rb +112 -0
- data/lib/puppetfactory/plugins/shell_user.rb +69 -0
- data/lib/puppetfactory/plugins/user_environment.rb +77 -0
- data/public/dashboard.js +100 -0
- data/public/font-awesome/css/font-awesome.css +2199 -0
- data/public/font-awesome/css/font-awesome.min.css +4 -0
- data/public/font-awesome/fonts/FontAwesome.otf +0 -0
- data/public/font-awesome/fonts/fontawesome-webfont.eot +0 -0
- data/public/font-awesome/fonts/fontawesome-webfont.svg +685 -0
- data/public/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
- data/public/font-awesome/fonts/fontawesome-webfont.woff +0 -0
- data/public/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
- data/public/gitviz/LICENSE.md +20 -0
- data/public/gitviz/README.md +13 -0
- data/public/gitviz/css/explaingit.css +227 -0
- data/public/gitviz/css/vendor/1140.css +130 -0
- data/public/gitviz/images/forkme_right_red_aa0000.png +0 -0
- data/public/gitviz/images/grippy-close.png +0 -0
- data/public/gitviz/images/grippy.png +0 -0
- data/public/gitviz/images/prompt.gif +0 -0
- data/public/gitviz/index.html +734 -0
- data/public/gitviz/js/controlbox.js +459 -0
- data/public/gitviz/js/explaingit.js +74 -0
- data/public/gitviz/js/historyview.js +979 -0
- data/public/gitviz/js/main.js +56 -0
- data/public/gitviz/js/vendor/d3.min.js +4 -0
- data/public/gitviz/js/vendor/jquery-latest.min.js +6 -0
- data/public/gitviz/js/vendor/normalize.css +396 -0
- data/public/gitviz/js/vendor/require.min.js +35 -0
- data/public/gitviz/memtest.html +44 -0
- data/public/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/public/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/public/images/ui-bg_flat_10_000000_40x100.png +0 -0
- data/public/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/public/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/public/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/public/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/public/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/public/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/public/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/public/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/public/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/public/images/ui-icons_222222_256x240.png +0 -0
- data/public/images/ui-icons_228ef1_256x240.png +0 -0
- data/public/images/ui-icons_454545_256x240.png +0 -0
- data/public/images/ui-icons_ef8c08_256x240.png +0 -0
- data/public/images/ui-icons_ffd27a_256x240.png +0 -0
- data/public/images/ui-icons_ffffff_256x240.png +0 -0
- data/public/jquery-1.11.1.min.js +4 -0
- data/public/jquery-ui.css +464 -0
- data/public/jquery-ui.min.css +7 -0
- data/public/jquery-ui.min.js +13 -0
- data/public/jquery-ui.structure.min.css +5 -0
- data/public/jquery-ui.theme.min.css +5 -0
- data/public/jquery.activity-indicator-1.0.0.min.js +10 -0
- data/public/jquery.js +9789 -0
- data/public/loginscripts.js +18 -0
- data/public/scripts.js +36 -0
- data/public/style.css +193 -0
- data/public/usermanagement.js +133 -0
- data/templates/init_scripts.erb +10 -0
- data/templates/puppet.conf.erb +10 -0
- data/templates/site.pp.erb +50 -0
- data/views/dashboard.erb +62 -0
- data/views/home.erb +43 -0
- data/views/index.erb +29 -0
- data/views/logs.erb +26 -0
- data/views/shell.erb +35 -0
- data/views/users.erb +69 -0
- metadata +256 -0
data/views/dashboard.erb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
<div id="dashboard">
|
2
|
+
<span id="notifications">
|
3
|
+
Last updated <%= Puppetfactory::Helpers.approximate_time_difference(@test_data['timestamp']) %>
|
4
|
+
(<a href="#" id="show-explanation">Why don't the tests add up?</a>)
|
5
|
+
</span>
|
6
|
+
<div id="tools">
|
7
|
+
<a id="update">Update</a>
|
8
|
+
<select name="current" id="current">
|
9
|
+
<option value="summary"<%= 'selected' if @current == 'summary' %> >Summary Only</option>
|
10
|
+
<option value="all" <%= 'selected' if @current == 'all' %> >All Tests</option>
|
11
|
+
<% @available.each do |test| %>
|
12
|
+
<option value="<%= test %>" <%= 'selected' if @current == test %> ><%= test %></option>
|
13
|
+
<% end %>
|
14
|
+
</select>
|
15
|
+
</div>
|
16
|
+
<div class="content">
|
17
|
+
<% @test_data.each do |user, userdata| %>
|
18
|
+
<% next if user == 'timestamp' %>
|
19
|
+
<% total, passed, percent = Puppetfactory::Plugins::Dashboard.test_completion(userdata['summary']) %>
|
20
|
+
<% details="/dashboard/details/#{user}/summary" %>
|
21
|
+
<div class="user">
|
22
|
+
<label><%= user %></label>
|
23
|
+
<div class="progressbar gutter summary <%= user %>">
|
24
|
+
<span class="label"><%= passed %> of <%= total %> tests passing</span>
|
25
|
+
<div class="completed" style="width: <%= percent %>%">Overall completion <a target="_results" href="<%= details %>">(details)</a></div>
|
26
|
+
</div>
|
27
|
+
|
28
|
+
<% userdata.each do |result, data| %>
|
29
|
+
<% next if result == 'summary' %>
|
30
|
+
<% total, passed, percent = Puppetfactory::Plugins::Dashboard.test_completion(data) %>
|
31
|
+
<% details="/dashboard/details/#{user}/#{result}" %>
|
32
|
+
<div class="progressbar gutter <%= result %> <%= user %>">
|
33
|
+
<span class="label"><%= passed %> of <%= total %> tests passing</span>
|
34
|
+
<div class="completed" style="width: <%= percent %>%"><%= result %> <a target="_results" href="<%= details %>">(details)</a></div>
|
35
|
+
</div>
|
36
|
+
<% end %>
|
37
|
+
</div>
|
38
|
+
<% end %>
|
39
|
+
</div>
|
40
|
+
<div id="explanation" title="Inconsistent Test Results">
|
41
|
+
<p>There are several contexts in which the test scores may not perfectly reflect reality.</p>
|
42
|
+
<ul>
|
43
|
+
<li>
|
44
|
+
When rspec runs multiple tests globbed together, the individual results files are not
|
45
|
+
written out; only the summary. That means that the individual tests will only sum up to
|
46
|
+
the numbers in the summary if you run each test individually first.
|
47
|
+
</li>
|
48
|
+
<li>
|
49
|
+
Individual tests might contradict each other. For example, one lab might ask students
|
50
|
+
to manage a user, and the next might instruct them to remove that classification.
|
51
|
+
</li>
|
52
|
+
<li>
|
53
|
+
A student may choose to perform the tasks in the lab in a slightly different fashion.
|
54
|
+
For example, if we ask them to make a <code>training</code> user, they might instead
|
55
|
+
manage a <code>testing123</code> user. They've still effectively completed the tasks
|
56
|
+
set before them.
|
57
|
+
</li>
|
58
|
+
</ul>
|
59
|
+
<p>Please use your own discretion when interpreting these numbers.</p>
|
60
|
+
</div>
|
61
|
+
</div>
|
62
|
+
<script type="text/javascript" src="dashboard.js"></script>
|
data/views/home.erb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
<p>
|
2
|
+
A simulated Puppet Enterprise infrastructure has been constructed on the
|
3
|
+
classroom server. Each student has an environment providing a sandboxed
|
4
|
+
container for Puppet code and configuration. The classroom server is also
|
5
|
+
running the unmodified Puppet Enterprise Console with an account for each
|
6
|
+
student.
|
7
|
+
</p>
|
8
|
+
|
9
|
+
<p>
|
10
|
+
Students have full <code>root</code> access on their container, meaning that all
|
11
|
+
Puppet commands and resources work as expected. Each container also exposes
|
12
|
+
port 80 as a high port proxied from the Master, meaning that students are able
|
13
|
+
to run a web server inside their sandbox environment. A link to this proxied
|
14
|
+
port is listed for each user on the <em>Users</em> tab.
|
15
|
+
</p>
|
16
|
+
|
17
|
+
<h3>Resources:</h3>
|
18
|
+
<ul>
|
19
|
+
<li><a href="http://<%= request.host %>:9090" target="_showoff">Course Material Presentation</a>
|
20
|
+
<ul>
|
21
|
+
<li>Follow along with the instructor's slides, or navigate it independently.</li>
|
22
|
+
</ul>
|
23
|
+
</li>
|
24
|
+
<li><a href="https://<%= request.host %>" target="_console">Puppet Enterprise Console</a>
|
25
|
+
<ul>
|
26
|
+
<li>Log into the PE Console using the credentials of the user account you created.</li>
|
27
|
+
</ul>
|
28
|
+
</li>
|
29
|
+
<li><a href="./gitviz/index.html" target="_blank">Git Visualization Tool</a>
|
30
|
+
<ul>
|
31
|
+
<li>Git's commit graph can be hard to understand. This tool will help visualize what
|
32
|
+
happens behind the scenes as you type various <code>git</code> commands.</li>
|
33
|
+
</ul>
|
34
|
+
</li>
|
35
|
+
</ul>
|
36
|
+
|
37
|
+
<h3>Accessing your environment:</h3>
|
38
|
+
|
39
|
+
<ol>
|
40
|
+
<li>First create your account on the <em>Users</em> tab.</li>
|
41
|
+
<li>Log in to your sandbox following the directions on the <em>SSH Login</em> tab.</li>
|
42
|
+
<li>Log in to the <a href="https://<%= request.host %>" target="_console">Puppet Enterprise Console</a></li>
|
43
|
+
<ol>
|
data/views/index.erb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Puppet Training Classroom Manager</title>
|
4
|
+
<link rel="stylesheet" type="text/css" href="jquery-ui.css" media="all" />
|
5
|
+
<link rel="stylesheet" type="text/css" href="font-awesome/css/font-awesome.min.css">
|
6
|
+
<link rel="stylesheet" type="text/css" href="style.css" />
|
7
|
+
<script type="text/javascript" src="jquery.js"></script>
|
8
|
+
<script type="text/javascript" src="jquery-ui.min.js"></script>
|
9
|
+
<script type="text/javascript" src="scripts.js"></script>
|
10
|
+
<script type="text/javascript" src="jquery.activity-indicator-1.0.0.min.js"></script>
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<h1>Puppet Training Classroom Manager</h1>
|
14
|
+
<% unless privileged? %><a href="/login" id="login">Admin Login</a><% end %>
|
15
|
+
<div id="tabs">
|
16
|
+
<ul>
|
17
|
+
<li><a href="#home">Home</a></li>
|
18
|
+
<li><a href="/users">Users</a></li>
|
19
|
+
<li><a class="cache" href="/shell">SSH Login</a></li>
|
20
|
+
<% @tabs.each do |url, title| %>
|
21
|
+
<li><a href="/<%= url %>"><%= title %></a></li>
|
22
|
+
<% end %>
|
23
|
+
</ul>
|
24
|
+
<div id="home">
|
25
|
+
<%= erb :home %>
|
26
|
+
</div>
|
27
|
+
</div>
|
28
|
+
</body>
|
29
|
+
</html>
|
data/views/logs.erb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
<div id="logs">
|
2
|
+
<h3><%= @logfile %></h3>
|
3
|
+
<div class="data"></div>
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<script type="text/javascript">
|
7
|
+
function loadLogs() {
|
8
|
+
$("#logs .data").load("logs/data", function() {
|
9
|
+
|
10
|
+
// use timeout instead of an interval so that in case of network error
|
11
|
+
// we don't end up with a queue of requests stacked up.
|
12
|
+
setTimeout(loadLogs, 5000);
|
13
|
+
});
|
14
|
+
}
|
15
|
+
|
16
|
+
$(document).ready(function() {
|
17
|
+
loadLogs();
|
18
|
+
});
|
19
|
+
</script>
|
20
|
+
|
21
|
+
<style>
|
22
|
+
#logs .data {
|
23
|
+
font-family: monospace;
|
24
|
+
white-space: pre-wrap;
|
25
|
+
}
|
26
|
+
</style>
|
data/views/shell.erb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
<div id="shell">
|
2
|
+
<p>
|
3
|
+
<input type="button" id="show-alternate" value="Other ways to log in" />
|
4
|
+
Shell accounts have been created for each student for editing code and
|
5
|
+
running Puppet interactively. Log in using the user account and credentials
|
6
|
+
you created.
|
7
|
+
</p>
|
8
|
+
<p>
|
9
|
+
<iframe id="console" src="/shell/login"></iframe>
|
10
|
+
</p>
|
11
|
+
<div id="alternate" title="Alternate Login Methods">
|
12
|
+
<p>
|
13
|
+
If you prefer, you may also use any standard SSH client using the username
|
14
|
+
and password you specified. Some common SSH clients include:
|
15
|
+
<p>
|
16
|
+
<ul>
|
17
|
+
<li>
|
18
|
+
Built-in to Mac OSX and Linux:
|
19
|
+
<ol>
|
20
|
+
<li>Start Terminal.app or any terminal emulator to get to the command line</li>
|
21
|
+
<li>Run <code>ssh <%= request.host %></code></li>
|
22
|
+
</ol>
|
23
|
+
</li>
|
24
|
+
<li>
|
25
|
+
Windows:
|
26
|
+
<ul>
|
27
|
+
<li><a href="http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe">PuTTY</a></li>
|
28
|
+
<li><a href="http://winscp.net/eng/download.php#download2" target="_new">WinSCP</a></li>
|
29
|
+
<li><a href="http://www.vandyke.com/download/securecrt/download.html" target="_new">SecureCRT</a></li>
|
30
|
+
</ul>
|
31
|
+
</li>
|
32
|
+
</ul>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
<script type="text/javascript" src="loginscripts.js"></script>
|
data/views/users.erb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
<div id="usercontent">
|
2
|
+
<div id="newuserwrapper">
|
3
|
+
<input type="button" id="showuser" value="+ New User" />
|
4
|
+
<div id="newuser">
|
5
|
+
<table>
|
6
|
+
<tr><td class="label">Username:</td><td><input type="text" id="user" value="" /></td></tr>
|
7
|
+
<tr><td class="label">Password:</td><td><input type="password" id="password" value="" /></td></tr>
|
8
|
+
<tr><td class="label">Repeat:</td><td><input type="password" id="password2" value="" /></td></tr>
|
9
|
+
<tr><td class="label">Session ID:</td><td><input type="text" id="session" value="" /></td></tr>
|
10
|
+
</table>
|
11
|
+
<input type="button" id="hideuser" value="Cancel" />
|
12
|
+
<input type="button" id="save" value="Save" />
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
<% if @current %>
|
16
|
+
<h2>Selected User</h2>
|
17
|
+
<table id="currentuser">
|
18
|
+
<tr><th class="header">Username:</th> <td><%= @current[:username] %></td></tr>
|
19
|
+
<tr><th class="header">Certname:</th> <td><%= @current[:certname] %></td></tr>
|
20
|
+
<% if @current[:port] -%>
|
21
|
+
<tr><th class="header">Sandbox URL:</th> <td><a href="/port/<%= @current[:port] %>/"><%= @current[:url] %></a></td></tr>
|
22
|
+
<% end -%>
|
23
|
+
<% if @current[:container_status] -%>
|
24
|
+
<tr><th class="header">Container:</th> <td><%= @current[:container_status]['Description'] %></td></tr>
|
25
|
+
<% end -%>
|
26
|
+
<% if @current[:node_group_url] -%>
|
27
|
+
<tr><th class="header">Node Group:</th> <td><a href="<%= @current[:node_group_url] %>" target="_console">Console login</a></td></tr>
|
28
|
+
<% end -%>
|
29
|
+
<% if @current[:controlrepo] -%>
|
30
|
+
<tr><th class="header">Control Repo:</th> <td><a href="<%= @current[:controlrepo] %>" target="_repository"><%= @current[:controlrepo] %></a></td></tr>
|
31
|
+
<% end -%>
|
32
|
+
<% if @current[:latestcommit] -%>
|
33
|
+
<tr><th class="header">Latest Commit:</th>
|
34
|
+
<td>
|
35
|
+
<a href="<%= @current[:latestcommit][:url] %>" target="_repository"><%= @current[:latestcommit][:message] %></a>
|
36
|
+
<small>(<%= @current[:latestcommit][:time] %>)</small>
|
37
|
+
</td></tr>
|
38
|
+
<% end -%>
|
39
|
+
<% if settings.plugins.include? :Dashboard -%>
|
40
|
+
<tr><th class="header">Spec Tests:</th> <td><a href="/dashboard/details/<%= @current[:username] %>" target="_results">results</a> <small>(may not always be available)</small></td></tr>
|
41
|
+
<% end -%>
|
42
|
+
<% if action_enabled? :deploy -%>
|
43
|
+
<tr class="actions"><td colspan=2><i class="fa"></i><input type="button" id="deploy" data-user="<%= @current[:username] %>" value="Deploy Environment"></td></tr>
|
44
|
+
<% end -%>
|
45
|
+
</table>
|
46
|
+
<% end %>
|
47
|
+
<h2>All Users</h2>
|
48
|
+
<table id="users">
|
49
|
+
<tr class="header">
|
50
|
+
<th>Username</th>
|
51
|
+
<th>Certname</th>
|
52
|
+
<% if @users.first[1][:port] %><th>Sandbox URL</th><% end %>
|
53
|
+
<th> </th>
|
54
|
+
</tr>
|
55
|
+
<% if @users %>
|
56
|
+
<% even = true %>
|
57
|
+
<% @users.each do |key, user| %>
|
58
|
+
<tr class="<%= even ? "even":"odd" %>">
|
59
|
+
<td class="username"><%= key %></td>
|
60
|
+
<td class="certname"><%= user[:certname] %></td>
|
61
|
+
<% if user[:port] %><td class="url"><a href="/port/<%= user[:port] %>/"><%= user[:url] %></a></td><% end %>
|
62
|
+
<td class="select"><a href="/users/active/<%= user[:username] %>">select</a></td>
|
63
|
+
</tr>
|
64
|
+
<% even = !even %>
|
65
|
+
<% end %>
|
66
|
+
<% end %>
|
67
|
+
</table>
|
68
|
+
</div>
|
69
|
+
<script type="text/javascript" src="usermanagement.js"></script>
|
metadata
ADDED
@@ -0,0 +1,256 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: puppetfactory
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ben Ford
|
8
|
+
- Josh Samuelson
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2016-09-09 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: sinatra
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.3'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.3'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: json_pure
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: puppetclassify
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 0.1.0
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.1.0
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: docker-api
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: httparty
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: rest-client
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: hocon
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :runtime
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: octokit
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: |2
|
127
|
+
Puppetfactory creates a Puppet Enterprise infrastructure on the classroom server.
|
128
|
+
Each student has a container for Puppet code and configuration linked to their
|
129
|
+
environment on the master. The containers are built on docker and duplicate most
|
130
|
+
of the behavior of a full VM or bare-metal system. The classroom server will also
|
131
|
+
be running the unmodified Puppet Enterprise Console with an account for each student.
|
132
|
+
email: ben.ford@puppetlabs.com
|
133
|
+
executables:
|
134
|
+
- pfsh
|
135
|
+
- puppetfactory
|
136
|
+
extensions: []
|
137
|
+
extra_rdoc_files: []
|
138
|
+
files:
|
139
|
+
- README.md
|
140
|
+
- LICENSE
|
141
|
+
- bin/pfsh
|
142
|
+
- bin/puppetfactory
|
143
|
+
- lib/puppetfactory/cli.rb
|
144
|
+
- lib/puppetfactory/dashboard/rake_tasks.rb
|
145
|
+
- lib/puppetfactory/dashboard/serverspec_helper.rb
|
146
|
+
- lib/puppetfactory/dashboard/spec_helper.rb
|
147
|
+
- lib/puppetfactory/helpers.rb
|
148
|
+
- lib/puppetfactory/monkeypatches.rb
|
149
|
+
- lib/puppetfactory/plugins/certificates.rb
|
150
|
+
- lib/puppetfactory/plugins/classification.rb
|
151
|
+
- lib/puppetfactory/plugins/code_manager.rb
|
152
|
+
- lib/puppetfactory/plugins/console_user.rb
|
153
|
+
- lib/puppetfactory/plugins/dashboard.rb
|
154
|
+
- lib/puppetfactory/plugins/docker.rb
|
155
|
+
- lib/puppetfactory/plugins/example.rb
|
156
|
+
- lib/puppetfactory/plugins/github.rb
|
157
|
+
- lib/puppetfactory/plugins/gitlab.rb
|
158
|
+
- lib/puppetfactory/plugins/hooks.rb
|
159
|
+
- lib/puppetfactory/plugins/login_shell.rb
|
160
|
+
- lib/puppetfactory/plugins/logs.rb
|
161
|
+
- lib/puppetfactory/plugins/r10k.rb
|
162
|
+
- lib/puppetfactory/plugins/shell_user.rb
|
163
|
+
- lib/puppetfactory/plugins/user_environment.rb
|
164
|
+
- lib/puppetfactory/plugins.rb
|
165
|
+
- lib/puppetfactory.rb
|
166
|
+
- views/dashboard.erb
|
167
|
+
- views/home.erb
|
168
|
+
- views/index.erb
|
169
|
+
- views/logs.erb
|
170
|
+
- views/shell.erb
|
171
|
+
- views/users.erb
|
172
|
+
- public/dashboard.js
|
173
|
+
- public/font-awesome/css/font-awesome.css
|
174
|
+
- public/font-awesome/css/font-awesome.min.css
|
175
|
+
- public/font-awesome/fonts/FontAwesome.otf
|
176
|
+
- public/font-awesome/fonts/fontawesome-webfont.eot
|
177
|
+
- public/font-awesome/fonts/fontawesome-webfont.svg
|
178
|
+
- public/font-awesome/fonts/fontawesome-webfont.ttf
|
179
|
+
- public/font-awesome/fonts/fontawesome-webfont.woff
|
180
|
+
- public/font-awesome/fonts/fontawesome-webfont.woff2
|
181
|
+
- public/gitviz/LICENSE.md
|
182
|
+
- public/gitviz/README.md
|
183
|
+
- public/gitviz/css/explaingit.css
|
184
|
+
- public/gitviz/css/vendor/1140.css
|
185
|
+
- public/gitviz/images/forkme_right_red_aa0000.png
|
186
|
+
- public/gitviz/images/grippy-close.png
|
187
|
+
- public/gitviz/images/grippy.png
|
188
|
+
- public/gitviz/images/prompt.gif
|
189
|
+
- public/gitviz/index.html
|
190
|
+
- public/gitviz/js/controlbox.js
|
191
|
+
- public/gitviz/js/explaingit.js
|
192
|
+
- public/gitviz/js/historyview.js
|
193
|
+
- public/gitviz/js/main.js
|
194
|
+
- public/gitviz/js/vendor/d3.min.js
|
195
|
+
- public/gitviz/js/vendor/jquery-latest.min.js
|
196
|
+
- public/gitviz/js/vendor/normalize.css
|
197
|
+
- public/gitviz/js/vendor/require.min.js
|
198
|
+
- public/gitviz/memtest.html
|
199
|
+
- public/images/ui-bg_diagonals-thick_18_b81900_40x40.png
|
200
|
+
- public/images/ui-bg_diagonals-thick_20_666666_40x40.png
|
201
|
+
- public/images/ui-bg_flat_10_000000_40x100.png
|
202
|
+
- public/images/ui-bg_flat_75_ffffff_40x100.png
|
203
|
+
- public/images/ui-bg_glass_100_f6f6f6_1x400.png
|
204
|
+
- public/images/ui-bg_glass_100_fdf5ce_1x400.png
|
205
|
+
- public/images/ui-bg_glass_65_ffffff_1x400.png
|
206
|
+
- public/images/ui-bg_glass_75_e6e6e6_1x400.png
|
207
|
+
- public/images/ui-bg_gloss-wave_35_f6a828_500x100.png
|
208
|
+
- public/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
|
209
|
+
- public/images/ui-bg_highlight-soft_75_cccccc_1x100.png
|
210
|
+
- public/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
|
211
|
+
- public/images/ui-icons_222222_256x240.png
|
212
|
+
- public/images/ui-icons_228ef1_256x240.png
|
213
|
+
- public/images/ui-icons_454545_256x240.png
|
214
|
+
- public/images/ui-icons_ef8c08_256x240.png
|
215
|
+
- public/images/ui-icons_ffd27a_256x240.png
|
216
|
+
- public/images/ui-icons_ffffff_256x240.png
|
217
|
+
- public/jquery-1.11.1.min.js
|
218
|
+
- public/jquery-ui.css
|
219
|
+
- public/jquery-ui.min.css
|
220
|
+
- public/jquery-ui.min.js
|
221
|
+
- public/jquery-ui.structure.min.css
|
222
|
+
- public/jquery-ui.theme.min.css
|
223
|
+
- public/jquery.activity-indicator-1.0.0.min.js
|
224
|
+
- public/jquery.js
|
225
|
+
- public/loginscripts.js
|
226
|
+
- public/scripts.js
|
227
|
+
- public/style.css
|
228
|
+
- public/usermanagement.js
|
229
|
+
- templates/init_scripts.erb
|
230
|
+
- templates/puppet.conf.erb
|
231
|
+
- templates/site.pp.erb
|
232
|
+
homepage: http://www.puppetlabs.com/education
|
233
|
+
licenses:
|
234
|
+
- Apache-2.0
|
235
|
+
metadata: {}
|
236
|
+
post_install_message:
|
237
|
+
rdoc_options: []
|
238
|
+
require_paths:
|
239
|
+
- lib
|
240
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
241
|
+
requirements:
|
242
|
+
- - ">="
|
243
|
+
- !ruby/object:Gem::Version
|
244
|
+
version: '0'
|
245
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
246
|
+
requirements:
|
247
|
+
- - ">="
|
248
|
+
- !ruby/object:Gem::Version
|
249
|
+
version: '0'
|
250
|
+
requirements: []
|
251
|
+
rubyforge_project:
|
252
|
+
rubygems_version: 2.0.14.1
|
253
|
+
signing_key:
|
254
|
+
specification_version: 4
|
255
|
+
summary: Stands up a graphical classroom manager with containerized puppet agents.
|
256
|
+
test_files: []
|