Puppet’s default
value acts like a keyword in a few specific usages. Less commonly, it can also be used as a value.
Syntax
The only value in the default data type is the bare word default
.
Usage with cases and selectors
In case statements and selector expressions, you can use default
as a case. Puppet attempts to match a default
case last, after it has tried to match against every other case.
Usage with per-block resource defaults
You can use default
as the title in a resource declaration to invoke a particular behavior. Instead of creating a resource and adding it to the catalog, the default
resource sets fallback attributes that can be used by any other resource in the same resource expression.
default
unless they specifically override them:file {
default:
ensure => file,
mode => '0600',
owner => 'root',
group => 'root',
;
'/etc/ssh_host_dsa_key':
;
'/etc/ssh_host_key':
;
'/etc/ssh_host_dsa_key.pub':
mode => '0644',
;
'/etc/ssh_host_key.pub':
mode => '0644',
;
}
For more information, see Resources (Advanced).
Usage as parameters of data types
Several data types take parameters that have default values. In some cases, like minimum and maximum sizes, the default value can be difficult or impossible to refer to using the available literal values in the Puppet language. For example, the default value of the String
type’s maximum length parameter is infinity, which can’t be represented in the Puppet language.
These parameters let you provide a value of default
to indicate that you want the default value.
Other default
usage
You can use the value default
anywhere you aren’t prohibited from using it. In these cases, it generally won’t have any special meaning.
There are a few reasons you might want to do this. A prime example is if you are writing a class or defined resource type and want to give users the option to specifically request a parameter’s default value. Some people have used undef
to do this, but that’s no good when dealing with parameters where undef
would, itself, be a meaningful value. Others have used a value like the string "UNSET"
, but this can be messy.
default
in this scenario lets you distinguish among:
-
A chosen “real” value.
-
A chosen value of
undef
. -
Explicitly declining to choose a value, represented by
default
.
default
can be useful when you need a truly meaningless value.The Default
data type
The data type of default
is Default
. It matches only the value default
, and takes no parameters.
Variant[String, Default, Undef]
- Matches
undef
,default
, or any string.