Glossary Of Terms

Version 1 (Anonymous, 03/13/2010 08:01 pm)

1 1
# Glossary of Terms
2 1
3 1
As developers have found time and time again, terminology is
4 1
critical to successful projects. The Puppet community has begun to
5 1
coalesce around certain terms found to be useful in working with
6 1
Puppet:
7 1
8 1
**catalog**
9 1
:   a catalog is the totality of resources, files, properties, etc,
10 1
    for a given system.
11 1
12 1
**class**
13 1
:   a Puppet native that defines a container of resources, such as
14 1
    File resources, Package resources, User resources, custom-defined
15 1
    resources (see also [[Glossary\_Of\_Terms#defined-type|Glossary Of
16 1
    Terms]] ), etc. A class can inherit from another class using the
17 1
    inherits keyword.
18 1
19 1
**client**
20 1
:   An operating system instance managed by Puppet. This can be an
21 1
    OS running on its own hardware or a virtual image.
22 1
23 1
**components**
24 1
:   See [[Glossary\_Of\_Terms#defined-type|Glossary Of Terms]] .
25 1
26 1
**declare**
27 1
:   a declaration is a term used to indicate where an resource is
28 1
    first defined. Not to be confused with terminology:definitions
29 1
30 1
**defined type**
31 1
:   a Puppet term for Puppet resources defined at the application
32 1
    level. Defined types are created in the Puppet language and are
33 1
    analogous to macros in some other languages. Also sometimes called
34 1
    *definitions* or *components*.
35 1
36 1
**definition**
37 1
:   See [[Glossary\_Of\_Terms#defined-type|Glossary Of Terms]] .
38 1
39 1
**distributable file**
40 1
:   distributable files are static configuration files that the
41 1
    Puppet client copies over in its entirety as needed. For instance,
42 1
    when using File with a specific source (as opposed to a template):
43 1
44 1
:       file { "/etc/somefile": source => "dist/blah/somefile" }
45 1
46 1
:   See also [[Glossary\_Of\_Terms#templates|Glossary Of Terms]]
47 1
    .
48 1
49 1
50 1
**fact**
51 1
:   a detail or property returned by Facter. Facter has many
52 1
    built-in details that it reports about the machine it runs on, such
53 1
    as hostname. Additional facts can easily be returned by Facter (see
54 1
    [[Adding Facts]] ).
55 1
56 1
**manifest**
57 1
:   A configuration file written in the Puppet language. These
58 1
    files should have the .pp extension.
59 1
60 1
**module**
61 1
:   modules are logically separate composites of resources that are
62 1
    then included by nodes as part of their catalog. A module may
63 1
    contain one or more related classes. For instance, the ssh module
64 1
    defines the basic ssh class that configures the ssh daemon and
65 1
    opens the ssh port to all Stanford IPs, and a subclass called
66 1
    ssh\_global that overrides the iptables settings to allow
67 1
    connections from any IP. See also [[Module Organisation]] .
68 1
69 1
**native type**
70 1
:   A type written purely in Ruby and distributed with Puppet. See
71 1
    docs for list of native types.
72 1
73 1
**node**
74 1
:   a node is any individual server, uniquely identified by their
75 1
    cn from the certificate, which is usually, but does not have to be,
76 1
    the hostname. Nodes generally inherit a template node and include
77 1
    additional modules as needed, generally their associate client or
78 1
    service class. Currently, nodes are defined in the site.pp file.
79 1
80 1
**plugin, plugin types**
81 1
:   a Puppet term for custom types created for Puppet at the Ruby
82 1
    level. These types are written entirely in Ruby and must correspond
83 1
    to the Puppet standards for custom-types.
84 1
85 1
**plusignment operator**
86 1
:   An operator that allows you to add values to resource
87 1
    parameters using the +> ('plusignment') syntax. Available since
88 1
    version 0.23.1:
89 1
90 1
:       class apache {
91 1
            service { "apache": require => Package["httpd"] }
92 1
        }
93 1
        
94 1
        class apache-ssl inherits apache {
95 1
            # host certificate is required for SSL to function
96 1
            Service[apache] { require +> File["apache.pem"] }
97 1
        }
98 1
99 1
100 1
**provider**
101 1
:   A simple implementation of a type; examples of package
102 1
    providers are dpkg and rpm, and examples of user providers are
103 1
    useradd and netinfo. Most often, providers are just Ruby wrappers
104 1
    around shell commands, and they are usually very short and thus
105 1
    easy to create.
106 1
107 1
**realize**
108 1
:   a Puppet term meaning to declare a virtual resource should be
109 1
    part of a system's catalog. See also
110 1
    [[Glossary\_Of\_Terms#virtual-resource|Glossary Of Terms]] .
111 1
112 1
**resource**
113 1
:   an instantiation of a native type, plugin type, or definition
114 1
    such as a user, file, or package. Resources do not always directly
115 1
    map to simple details on the client -- they might sometimes involve
116 1
    spreading information across multiple files, or even involve
117 1
    modifying devices.
118 1
119 1
**resource object**
120 1
:   A Puppet object in memory meant to manage a resource on disk.
121 1
    Resource specifications get converted to these, and then they are
122 1
    used to perform any necessary work.
123 1
124 1
**resource specification**
125 1
:   The details of how to manage a resource as specified in Puppet
126 1
    code. When speaking about resources, it is sometimes important to
127 1
    differentiate between the literal resource on disk and the
128 1
    specification for how to manage that resource; most often, these
129 1
    are just referred to as resources.
130 1
131 1
**subclass**
132 1
:   a class that inherits from another class. Subclasses are useful
133 1
    for expanding one logical group of resources into another similar
134 1
    or related group of resources. Subclasses are also useful to
135 1
    override values of resources. For instance, a base class might
136 1
    specify a particular file as the source of a config file to be
137 1
    placed on the server, but a subclass might override that source
138 1
    file parameter to specify an alternate file to be used. A subclass
139 1
    is created by using the keyword inherits:
140 1
141 1
:       class ClassB inherits ClassA { ... }
142 1
143 1
144 1
**templates**
145 1
:   templates are ERB files used to generate configuration files
146 1
    for systems and are used in cases where the configuration file is
147 1
    not static but only requires minor changes based on variables that
148 1
    Puppet can provide (such as hostname). See also distributable
149 1
    file.
150 1
151 1
**template class**
152 1
:   template classes define commonly used server types which
153 1
    individual nodes inherit. A well designed Puppet implementation
154 1
    would likely define a baseclass, which includes only the most basic
155 1
    of modules required on all servers at the organization. One might
156 1
    also have a genericwebserver template, which would include modules
157 1
    for apache and locally manageable apache configurations for web
158 1
    administrators:
159 1
160 1
:       node mywebserver {
161 1
          include genericwebserver
162 1
        }
163 1
164 1
:   Template classes can take parameters by setting them in the
165 1
    node or main scope. This has the advantage, that the values are
166 1
    already available, regardless of the number of times and places
167 1
    where a class is included:
168 1
169 1
:       node mywebserver {
170 1
          $web_fqdn = 'www.example.com'
171 1
          include singledomainwebserver
172 1
        }
173 1
174 1
:   This structure maps directly to a
175 1
    [external node classifier](http://reductivelabs.com/trac/puppet/wiki/ExternalNodeClassification)
176 1
    and thus enables a easy transition.
177 1
178 1
179 1
**type**
180 1
:   abstract description of a type of resource. Can be implemented
181 1
    as a [[Glossary\_Of\_Terms#native-type|Glossary Of Terms]] ,
182 1
    [[Glossary\_Of\_Terms#plugin-type|Glossary Of Terms]] , or
183 1
    [[Glossary\_Of\_Terms#defined-type|Glossary Of Terms]] .
184 1
185 1
**variable**
186 1
:   variables in Puppet are similar to variables in other
187 1
    programming languages. Once assigned, variables cannot be
188 1
    reassigned within the same scope. However, within a sub-scope a new
189 1
    assignment can be made for a variable name for that sub-scope and
190 1
    any further scopes created within it:
191 1
192 1
:       $myvariable = "something"
193 1
194 1
:   Note that there are certain seemingly built-in variables, such
195 1
    as $hostname. These variables are actually created by Facter. Any
196 1
    [[Glossary\_Of\_Terms#fact|Glossary Of Terms]] presented by Facter
197 1
    is automatically available as a variable for use in Puppet.
198 1
199 1
200 1
**virtual resource**
201 1
:   a Puppet term for an resource that is defined but will not be
202 1
    made part of a system's catalog unless it is explicitly realized.
203 1
    See also [[Glossary\_Of\_Terms#realize|Glossary Of Terms]] .