Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
This is the rc1 release of Puppet 0.25.0.

It is available at:

http://reductivelabs.com/downloads/puppet/puppet-0.25.0rc1.tar.gz

This is not production ready code - it is a release candidate for
testing.

The release candidate is fully feature complete.  The proposed Windows
support did not make it into 0.25.0 due to time constraints.

We would ask everyone to test and report issues with the release
candidate.

Please log any issues found during testing at:

http://projects.reductivelabs.com/projects/puppet/issues/new

Please select the Affected Version as 0.25.0rc1.

Please email any other specific questions, comments or feedback to
the puppet-user list.

What's Changed?
---------------

There are substantial changes in Puppet 0.25.0 and more changes to
come in the future.  Most of the changes in 0.25.0 are internal
refactoring rather than behavioural.  The 0.25.0 release should be
fully backwards compatible behaviourally with the 0.24.x branch.

This means a 0.25.0 master will be able to manage 0.24.x clients.
You will need, however, to upgrade both your master and your clients
to take advantage of all the new features and the substantial gains
in performance offered by 0.25.0.

The principal change is the introduction of Indirected REST to
replace XML-RPC as the underlying Puppet communications mechanism.
This is a staged change with some functions migrated in this release
and some in the next release.  In the first stage of the Indirected
REST implementation the following functions have been migrated:

- Certificates
- Catalogue
- Reports
- Files

In 0.26.0 (the next release) the following remaining functions will
be migrated:

- Filebucket
- Resource handler
- Runner handler
- Status handler

The new REST implementation also comes with authorisation
configuration in a similar style to the namespaceauth used for
XML-RPC.  This new authorisation is managed through the auth.conf
file (there is an example file in the conf directory of the
tarball). This does not yet fully replace the namespaceauth.conf
file but will when the remaining handlers are migrated to REST.  It
works in a similar way to the namespaceauth.conf file and the
example file contains additional documentation.

As a result of the introduction of REST and other changes you should
see substantial performance improvements in this release.  These
particularly include improvements in:

- File serving
- The performance of large graphs with lots of edges
- Stored configuration (see also Puppet Queuing below)

Other new features include (this is not a complete list - please see
the Roadmap for all tickets closed in this release):

New Language Features
---------------------

Regular expression matching is now possible in node definitions.

node /web|db/ {
    include blah
}

node /^(foo|bar)\.example\.com$/ {
    include blah
}

Puppet now also allows regular expressions in if statements with the use
of the =~ (match) and !~ (not match) operators.

if $uname =~ /Linux|Debian/ {
  ...
}

Also available are ephemeral variables ($0 to $9) in the current scope
which contain regex captures:

if $uname =~ /(Linux|Debian)/ {
  notice("this is a $1 system")
}

Similar functionality is available in case and selector statements:

$var = "foobar"
case $var {
    "foo": {
         notify { "got a foo": }
    }
    /(.*)bar$/: {
         notify{ "hey we got a $1": }
    }
}

$val = $test ? {
  /^match.*$/ => "matched",
  default => "default"
}

New functions
-------------

There are three new functions:

require - Similar to the include function but creates a dependency
on the required class in the current class.  This means the required
class will be loaded before the current class is processed.

split - allows you to split strings and arrays

versioncmp - allows you to compare versions

Command Line Compile & Apply
----------------------------

Puppet now has the capability to compile a catalogue and output it
in JSON from the Puppet master.  You can do this via the --compile
command line option.

# puppetmasterd --compile nodename

Corresponding with this feature is the ability to apply a JSON
configuration from the puppet binary using the --apply option.

# puppet --apply cataloguefile

Or you can use - to read the JSON in from standard input.  Puppet
will then compile and apply the configuration.

Puppet Queuing
---------------

There is a new binary called puppetqd that supports queuing for
stored configurations.  You can read about how it works and how to
implement it at:

http://reductivelabs.com/trac/puppet/wiki/UsingStoredConfiguration

Further documentation is in the README.queuing file in the tarball.

Application Controller
----------------------
All the logic has been moved out of the binary commands and added to
an Application Controller.  You can see the controller code at
lib/puppet/application.rb and the logic for each application at
lib/puppet/application/binaryname.rb.

Binary Location Move
--------------------
To bring Puppet more in line with general packaging standards the
puppetd, puppetca, puppetrun, puppetmasterd, and puppetqd binaries
now reside in the sbin directory rather than the bin directory when
installed from the source package.

Other features
--------------

You can find a full list of the tickets closed thus far for version
0.25.0 is at:

http://projects.reductivelabs.com/versions/show/3