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]] . |