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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
$(document).ready(function(){
|
|
2
|
+
$('#show-alternate').click( function(e) {
|
|
3
|
+
e.preventDefault();
|
|
4
|
+
|
|
5
|
+
$( "#alternate" ).dialog({
|
|
6
|
+
title: $(this).attr("title"),
|
|
7
|
+
buttons: {
|
|
8
|
+
Ok: function() {
|
|
9
|
+
$( this ).dialog( "close" );
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
open: function () {
|
|
13
|
+
$(this).parent().find('button:nth-child(1)').focus();
|
|
14
|
+
},
|
|
15
|
+
width: '500px',
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
});
|
data/public/scripts.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
$(document).ready(function(){
|
|
2
|
+
// activate tabs
|
|
3
|
+
$('#tabs').tabs({
|
|
4
|
+
beforeLoad: function (event, ui) {
|
|
5
|
+
var keepLoading = true;
|
|
6
|
+
|
|
7
|
+
// Is the <a> tag is classified with 'cache'?
|
|
8
|
+
if (ui.tab.children("a").first().hasClass("cache")) {
|
|
9
|
+
keepLoading = (ui.panel.html() == "");
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if(ui.panel.html() == "") {
|
|
13
|
+
ui.panel.html('Loading...');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return keepLoading;
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
$('#login').button({
|
|
21
|
+
icons: {
|
|
22
|
+
primary: "ui-icon-locked"
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
function updatePage(name) {
|
|
28
|
+
if (name) {
|
|
29
|
+
var idx = $("#tabs > ul > li:contains("+name+")").index();
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
var idx = $("#tabs").tabs("option","active");
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
$("#tabs").tabs('load', idx);
|
|
36
|
+
}
|
data/public/style.css
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
table {
|
|
2
|
+
width: 100%;
|
|
3
|
+
border: 1px solid #ccc;
|
|
4
|
+
background: #efefef;
|
|
5
|
+
border-spacing: 0;
|
|
6
|
+
-moz-border-radius: 5px;
|
|
7
|
+
border-radius: 5px;
|
|
8
|
+
}
|
|
9
|
+
tr.even {
|
|
10
|
+
background: #b3c6ae;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
li {
|
|
14
|
+
margin-bottom: 0.5em;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
#login {
|
|
18
|
+
position: absolute;
|
|
19
|
+
top: 0.5em;
|
|
20
|
+
right: 0.5em;
|
|
21
|
+
font-size: 8pt;
|
|
22
|
+
opacity: 0;
|
|
23
|
+
}
|
|
24
|
+
#login:hover {
|
|
25
|
+
opacity: 1;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
#usercontent {
|
|
29
|
+
position: relative;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
#newuserwrapper {
|
|
33
|
+
position: absolute;
|
|
34
|
+
top: 0;
|
|
35
|
+
right: 0;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#newuserwrapper.open {
|
|
39
|
+
border: 1px solid #cfcfcf;
|
|
40
|
+
padding: 0.5em;
|
|
41
|
+
background-color: rgba(0, 0, 0, 0.6);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#newuser {
|
|
45
|
+
display: none;
|
|
46
|
+
width: 16em;
|
|
47
|
+
margin-top: 0.5em;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
#newuser table {
|
|
51
|
+
padding: 0.25em 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
#newuser.processing table,
|
|
55
|
+
#newuser.processing table input {
|
|
56
|
+
background: #565656;
|
|
57
|
+
color: #2a2929;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
#newuser.processing table {
|
|
61
|
+
border-color: #565656;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
#newuser td.label {
|
|
65
|
+
text-align: right;
|
|
66
|
+
font-size: small;
|
|
67
|
+
font-weight: lighter;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
#newuser table input.fail {
|
|
71
|
+
background: #f88484;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
table#currentuser th.header {
|
|
75
|
+
width: 10%;
|
|
76
|
+
white-space: nowrap;
|
|
77
|
+
text-align: right;
|
|
78
|
+
padding-right: 1em;
|
|
79
|
+
}
|
|
80
|
+
table#currentuser tr.actions {
|
|
81
|
+
text-align: right;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
table#users {
|
|
85
|
+
margin-top: 1em;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
table#users th {
|
|
89
|
+
border-bottom: 2px solid #999;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
table#users td {
|
|
93
|
+
border-right: 1px solid #ccc;
|
|
94
|
+
border-collapse: collapse;
|
|
95
|
+
padding: 0 0.5em;
|
|
96
|
+
text-align: center;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
table#users td.select {
|
|
100
|
+
font-size: 0.8em;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
#console {
|
|
104
|
+
width: 100%;
|
|
105
|
+
height: 24em;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
#shell code {
|
|
109
|
+
background-color: #ddd;
|
|
110
|
+
border-bottom: 2px dotted #aaa;
|
|
111
|
+
padding: 0.25em;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
#alternate,
|
|
115
|
+
#explanation {
|
|
116
|
+
display: none;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
#show-alternate {
|
|
120
|
+
float: right;
|
|
121
|
+
margin-left: 0.5em;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
#dashboard {
|
|
125
|
+
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
#dashboard #notifications {
|
|
129
|
+
font-size: 0.5em;
|
|
130
|
+
color: #666;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
#dashboard #notifications.fail {
|
|
134
|
+
font-weight: bold;
|
|
135
|
+
background-color: red;
|
|
136
|
+
border: 1px solid black;
|
|
137
|
+
border-radius: 0.5em;
|
|
138
|
+
padding: 0.25em 0.5em;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
#dashboard #tools {
|
|
142
|
+
float: right;
|
|
143
|
+
top: 1em;
|
|
144
|
+
font-size: 0.8em;
|
|
145
|
+
margin-bottom: 0.5em;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
#dashboard #tools * {
|
|
149
|
+
font-size: 0.8em;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
#dashboard #tools * .ui-button-text {
|
|
153
|
+
padding-top: 0.25em;
|
|
154
|
+
padding-bottom: 0.25em;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
#dashboard .user {
|
|
158
|
+
border: 1px solid #ccc;
|
|
159
|
+
border-radius: 0.5em;
|
|
160
|
+
padding: 0 0.5em 0.5em;
|
|
161
|
+
margin: 0.5em 0;
|
|
162
|
+
clear: both;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
#dashboard .gutter {
|
|
166
|
+
background-color: #ffdddd;
|
|
167
|
+
border-radius: 0.25em;
|
|
168
|
+
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.25) inset;
|
|
169
|
+
font-size: 0.8em;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
#dashboard .gutter .label {
|
|
173
|
+
float: right;
|
|
174
|
+
padding-right: 1em;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
#dashboard .completed {
|
|
178
|
+
white-space: nowrap;
|
|
179
|
+
overflow-x: visible;
|
|
180
|
+
background-color: #80f36f;
|
|
181
|
+
border-radius: 0.25em;
|
|
182
|
+
min-width: 0.25em;
|
|
183
|
+
border: 1px solid #666;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
#dashboard .completed a {
|
|
187
|
+
font-size: 0.5em;
|
|
188
|
+
text-decoration: none;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
#dashboard .completed a:hover {
|
|
192
|
+
border-bottom: 2px solid black;
|
|
193
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
$(document).ready(function(){
|
|
2
|
+
|
|
3
|
+
function validUsername(text) {
|
|
4
|
+
var legalChars = /^[a-z][a-z0-9]{2,}$/; // Allow only letters for first character and then alphanumeric
|
|
5
|
+
if (!legalChars.test(text)) {
|
|
6
|
+
alert("Usernames must be at least 3 lowercase alphanumeric characters and start with a letter\n");
|
|
7
|
+
return false;
|
|
8
|
+
};
|
|
9
|
+
return true;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
function open() {
|
|
13
|
+
$('#showuser').hide();
|
|
14
|
+
$('#newuserwrapper').addClass("open");
|
|
15
|
+
$('#newuser').slideDown("fast");
|
|
16
|
+
$('#user').focus();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function close() {
|
|
20
|
+
$('#showuser').show();
|
|
21
|
+
$('#newuserwrapper').removeClass("open");
|
|
22
|
+
$('#newuser').hide();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function start_processing() {
|
|
26
|
+
$('#newuser input[type=button]').attr("disabled", true);
|
|
27
|
+
$('#newuser').addClass("processing");
|
|
28
|
+
$('#newuser table').activity({width: 5.5, space: 6, length: 13});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function stop_processing() {
|
|
32
|
+
$('#newuser').removeClass("processing");
|
|
33
|
+
$('#newuser input[type=button]').attr("disabled", false);
|
|
34
|
+
$('#newuser table').activity(false);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function failing(item) {
|
|
38
|
+
item.attr("value", "");
|
|
39
|
+
item.addClass("fail");
|
|
40
|
+
item.focus();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// toggle hide the newuser dialog
|
|
44
|
+
$('#showuser').click(function(){
|
|
45
|
+
open();
|
|
46
|
+
});
|
|
47
|
+
$('#hideuser').click(function(){
|
|
48
|
+
close();
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
$('#users .select a').click(function(event){
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
var action = $(this).attr('href');
|
|
54
|
+
|
|
55
|
+
$.get(action, function(data) {
|
|
56
|
+
updatePage();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// save the new user
|
|
61
|
+
$('#save').click(function(){
|
|
62
|
+
var username = $('#user').val();
|
|
63
|
+
var password = $('#password').val();
|
|
64
|
+
var password2 = $('#password2').val();
|
|
65
|
+
var session = $('#session').val();
|
|
66
|
+
|
|
67
|
+
// reset warnings
|
|
68
|
+
$('#user').removeClass("fail");
|
|
69
|
+
$('#password').removeClass("fail");
|
|
70
|
+
$('#password2').removeClass("fail");
|
|
71
|
+
$('#session').removeClass("fail");
|
|
72
|
+
|
|
73
|
+
if(!validUsername(username)) {
|
|
74
|
+
failing($('#user'));
|
|
75
|
+
}
|
|
76
|
+
else if(password == '' || password != password2) {
|
|
77
|
+
failing($('#password'));
|
|
78
|
+
failing($('#password2'));
|
|
79
|
+
}
|
|
80
|
+
else if(session == '') {
|
|
81
|
+
failing($('#session'));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
start_processing();
|
|
85
|
+
|
|
86
|
+
$.post('/new', {username: username, password: password, session: session}, function(data) {
|
|
87
|
+
console.log(data);
|
|
88
|
+
var results = jQuery.parseJSON(data);
|
|
89
|
+
if(results.status == 'success') {
|
|
90
|
+
updatePage();
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
stop_processing();
|
|
94
|
+
alert("Could not create user:\n" + results.message);
|
|
95
|
+
}
|
|
96
|
+
}).fail(function(jqXHR) {
|
|
97
|
+
stop_processing();
|
|
98
|
+
alert("Could not create user:\n" + jqXHR.responseText);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
$('#deploy').click(function(){
|
|
106
|
+
var button = $(this);
|
|
107
|
+
var activity = button.siblings('i');
|
|
108
|
+
var username = button.attr("data-user");
|
|
109
|
+
|
|
110
|
+
activity.addClass('fa-spinner fa-spin');
|
|
111
|
+
button.attr("disabled", true);
|
|
112
|
+
$.ajax({
|
|
113
|
+
url: '/api/users/'+username,
|
|
114
|
+
type: 'PUT',
|
|
115
|
+
data: "action=deploy",
|
|
116
|
+
success: function(response) {
|
|
117
|
+
var results = jQuery.parseJSON(response);
|
|
118
|
+
|
|
119
|
+
activity.removeClass('fa-spinner fa-spin');
|
|
120
|
+
button.attr("disabled", false);
|
|
121
|
+
|
|
122
|
+
if(results.status != 'success') {
|
|
123
|
+
alert("Deploy failed. See logs for details.");
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
error: function(response) {
|
|
127
|
+
activity.removeClass('fa-spinner fa-spin');
|
|
128
|
+
alert("Deploy failed:\n" + response.responseText);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
[main]
|
|
2
|
+
certname = <%= username %>.puppetlabs.vm
|
|
3
|
+
server = <%= @master %>
|
|
4
|
+
basemodulepath = /root/puppetcode/modules:/etc/puppetlabs/code/modules
|
|
5
|
+
|
|
6
|
+
[agent]
|
|
7
|
+
report = true
|
|
8
|
+
classfile = $vardir/classes.txt
|
|
9
|
+
localconfig = $vardir/localconfig
|
|
10
|
+
pluginsync = true
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
## site.pp ##
|
|
2
|
+
|
|
3
|
+
# This file (/etc/puppetlabs/puppet/manifests/site.pp) is the main entry point
|
|
4
|
+
# used when an agent connects to a master and asks for an updated configuration.
|
|
5
|
+
#
|
|
6
|
+
# Global objects like filebuckets and resource defaults should go in this file,
|
|
7
|
+
# as should the default node definition. (The default node can be omitted
|
|
8
|
+
# if you use the console and don't define any other nodes in site.pp. See
|
|
9
|
+
# http://docs.puppetlabs.com/guides/language_guide.html#nodes for more on
|
|
10
|
+
# node definitions.)
|
|
11
|
+
|
|
12
|
+
## Active Configurations ##
|
|
13
|
+
|
|
14
|
+
# Disable filebucket by default for all File resources:
|
|
15
|
+
File { backup => false }
|
|
16
|
+
|
|
17
|
+
# DEFAULT NODE
|
|
18
|
+
# Node definitions in this file are merged with node data from the console. See
|
|
19
|
+
# http://docs.puppetlabs.com/guides/language_guide.html#nodes for more on
|
|
20
|
+
# node definitions.
|
|
21
|
+
|
|
22
|
+
# The default node definition matches any node lacking a more specific node
|
|
23
|
+
# definition. If there are no other nodes in this file, classes declared here
|
|
24
|
+
# will be included in every node's catalog, *in addition* to any classes
|
|
25
|
+
# specified in the console for that node.
|
|
26
|
+
|
|
27
|
+
# Make Puppet shut up about allow_virtual
|
|
28
|
+
Package {
|
|
29
|
+
allow_virtual => false,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
node default {
|
|
33
|
+
# This is where you can declare classes for all nodes.
|
|
34
|
+
# Example:
|
|
35
|
+
# class { 'my_class': }
|
|
36
|
+
<% unless @modulepath == :none %>
|
|
37
|
+
unless $::osfamily == 'windows' {
|
|
38
|
+
file { '<%= @codedir %>/environments/production/modules':
|
|
39
|
+
ensure => link,
|
|
40
|
+
force => true,
|
|
41
|
+
target => '<%= @puppetcode %>/modules',
|
|
42
|
+
}
|
|
43
|
+
file { '<%= @codedir %>/environments/production/manifests':
|
|
44
|
+
ensure => link,
|
|
45
|
+
force => true,
|
|
46
|
+
target => '<%= @puppetcode %>/manifests',
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
<% end %>
|
|
50
|
+
}
|