puppetfactory 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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: []
|