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.
Files changed (95) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +13 -0
  3. data/README.md +0 -0
  4. data/bin/pfsh +31 -0
  5. data/bin/puppetfactory +153 -0
  6. data/lib/puppetfactory.rb +300 -0
  7. data/lib/puppetfactory/cli.rb +114 -0
  8. data/lib/puppetfactory/dashboard/rake_tasks.rb +69 -0
  9. data/lib/puppetfactory/dashboard/serverspec_helper.rb +84 -0
  10. data/lib/puppetfactory/dashboard/spec_helper.rb +26 -0
  11. data/lib/puppetfactory/helpers.rb +37 -0
  12. data/lib/puppetfactory/monkeypatches.rb +30 -0
  13. data/lib/puppetfactory/plugins.rb +11 -0
  14. data/lib/puppetfactory/plugins/certificates.rb +28 -0
  15. data/lib/puppetfactory/plugins/classification.rb +75 -0
  16. data/lib/puppetfactory/plugins/code_manager.rb +156 -0
  17. data/lib/puppetfactory/plugins/console_user.rb +62 -0
  18. data/lib/puppetfactory/plugins/dashboard.rb +128 -0
  19. data/lib/puppetfactory/plugins/docker.rb +193 -0
  20. data/lib/puppetfactory/plugins/example.rb +88 -0
  21. data/lib/puppetfactory/plugins/github.rb +102 -0
  22. data/lib/puppetfactory/plugins/gitlab.rb +62 -0
  23. data/lib/puppetfactory/plugins/hooks.rb +46 -0
  24. data/lib/puppetfactory/plugins/login_shell.rb +10 -0
  25. data/lib/puppetfactory/plugins/logs.rb +34 -0
  26. data/lib/puppetfactory/plugins/r10k.rb +112 -0
  27. data/lib/puppetfactory/plugins/shell_user.rb +69 -0
  28. data/lib/puppetfactory/plugins/user_environment.rb +77 -0
  29. data/public/dashboard.js +100 -0
  30. data/public/font-awesome/css/font-awesome.css +2199 -0
  31. data/public/font-awesome/css/font-awesome.min.css +4 -0
  32. data/public/font-awesome/fonts/FontAwesome.otf +0 -0
  33. data/public/font-awesome/fonts/fontawesome-webfont.eot +0 -0
  34. data/public/font-awesome/fonts/fontawesome-webfont.svg +685 -0
  35. data/public/font-awesome/fonts/fontawesome-webfont.ttf +0 -0
  36. data/public/font-awesome/fonts/fontawesome-webfont.woff +0 -0
  37. data/public/font-awesome/fonts/fontawesome-webfont.woff2 +0 -0
  38. data/public/gitviz/LICENSE.md +20 -0
  39. data/public/gitviz/README.md +13 -0
  40. data/public/gitviz/css/explaingit.css +227 -0
  41. data/public/gitviz/css/vendor/1140.css +130 -0
  42. data/public/gitviz/images/forkme_right_red_aa0000.png +0 -0
  43. data/public/gitviz/images/grippy-close.png +0 -0
  44. data/public/gitviz/images/grippy.png +0 -0
  45. data/public/gitviz/images/prompt.gif +0 -0
  46. data/public/gitviz/index.html +734 -0
  47. data/public/gitviz/js/controlbox.js +459 -0
  48. data/public/gitviz/js/explaingit.js +74 -0
  49. data/public/gitviz/js/historyview.js +979 -0
  50. data/public/gitviz/js/main.js +56 -0
  51. data/public/gitviz/js/vendor/d3.min.js +4 -0
  52. data/public/gitviz/js/vendor/jquery-latest.min.js +6 -0
  53. data/public/gitviz/js/vendor/normalize.css +396 -0
  54. data/public/gitviz/js/vendor/require.min.js +35 -0
  55. data/public/gitviz/memtest.html +44 -0
  56. data/public/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  57. data/public/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  58. data/public/images/ui-bg_flat_10_000000_40x100.png +0 -0
  59. data/public/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  60. data/public/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  61. data/public/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  62. data/public/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  63. data/public/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  64. data/public/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  65. data/public/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  66. data/public/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  67. data/public/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  68. data/public/images/ui-icons_222222_256x240.png +0 -0
  69. data/public/images/ui-icons_228ef1_256x240.png +0 -0
  70. data/public/images/ui-icons_454545_256x240.png +0 -0
  71. data/public/images/ui-icons_ef8c08_256x240.png +0 -0
  72. data/public/images/ui-icons_ffd27a_256x240.png +0 -0
  73. data/public/images/ui-icons_ffffff_256x240.png +0 -0
  74. data/public/jquery-1.11.1.min.js +4 -0
  75. data/public/jquery-ui.css +464 -0
  76. data/public/jquery-ui.min.css +7 -0
  77. data/public/jquery-ui.min.js +13 -0
  78. data/public/jquery-ui.structure.min.css +5 -0
  79. data/public/jquery-ui.theme.min.css +5 -0
  80. data/public/jquery.activity-indicator-1.0.0.min.js +10 -0
  81. data/public/jquery.js +9789 -0
  82. data/public/loginscripts.js +18 -0
  83. data/public/scripts.js +36 -0
  84. data/public/style.css +193 -0
  85. data/public/usermanagement.js +133 -0
  86. data/templates/init_scripts.erb +10 -0
  87. data/templates/puppet.conf.erb +10 -0
  88. data/templates/site.pp.erb +50 -0
  89. data/views/dashboard.erb +62 -0
  90. data/views/home.erb +43 -0
  91. data/views/index.erb +29 -0
  92. data/views/logs.erb +26 -0
  93. data/views/shell.erb +35 -0
  94. data/views/users.erb +69 -0
  95. metadata +256 -0
@@ -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>&nbsp;</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: []