profile_metadata
: Support defining metadata for a node (e.g profile_metadata::service)profile_metadata::service::motd_blank
: Add the blank line after the services in the MOTD
profile_metadata::service
: Define information about a service
Define information about a service. The service's title is automatically added
to the MOTD and all the information is added to a structured fact
named profile_metadata
.
$title
: This should always be the name of the enclosing class, which will be
available in $title
. The only case where this will be different is within
defined types.
profile_metadata::service { $title:
human_name => 'Puppet Master',
owner_uid => 'john.doe',
team => infracore,
end_users => ['notify-infracore@example.com'],
escalation_period => 'global-workhours',
downtime_impact => "Can't make changes to infrastructure",
doc_urls => [
'https://example.com/our-pe-docs',
],
}
The resulting fact from the definition above as shown by sudo facter -p profile_metadata
on the master
{
services => [
{
class_name => "profile::pe::master",
doc_urls => [
"https://example.com/our-pe-docs"
],
downtime_impact => "Can't make changes to infrastructure",
end_users => [
"notify-infracore@example.com"
],
escalation_period => "global-workhours",
human_name => "Puppet Master",
other_fqdns => [],
owned => true,
owner_uid => "john.doe",
team => "infracore"
}
]
}
Puppet Master
profile::pe::master owned by team infracore
The following parameters are available in the profile_metadata::service
defined type:
owner_uid
team
end_users
escalation_period
downtime_impact
notes
doc_urls
class_name
human_name
other_fqdns
Data type: Optional[String[1]]
The LDAP uid of the owner of the service. If there are multiple
owners, pick one. This may only be set to undef
temporarily as all services
need to have an owner... even when nobody want it.
Default value: undef
Data type: Optional[String[1]]
The team that owns the service. At Puppet, this should generally be
infracore, re, qe, or itops. This may only be set to undef
temporarily
as all services need to owned by a team... even when nobody want it.
Default value: undef
Data type: Optional[Array[Pattern[/@/], 1]]
An array of email addresses to notify when there are changes to
the service that will be visible outside of $team
. For example,
all@puppet.com
is appropriate for JIRA. This may only be set to undef
temporarily. If only $team
will see the changes then $team
's email should
be used.
Default value: undef
Data type: String[1]
A description of when we should escalate to $team
if
the service goes down and the on call person cannot fix it. For example:
- pdx-workhours
- 24/7
- workdays
Default value: 'pdx-workhours'
Data type: Optional[String[1]]
A description of the impact of downtime, e.g. "Development work will be blocked because their changes cannot be tested and thus cannot be merged." Use multiple lines and markdown as appropriate.
Default value: undef
Data type: Optional[String[1]]
General notes for things not covered elsewhere. Use multiple lines and markdown as appropriate.
Default value: undef
Data type: Array[String[1]]
An array of URLs to documentation (e.g. Confluence).
Default value: []
Data type: Pattern[/\A([a-z][a-z0-9_]*)?(::[a-z][a-z0-9_]*)*\Z/]
The Puppet class the metadata is associated with
Default value: $title
Data type: String[1]
a human friendly name for the service. For example, "Internal InfraCore CI".
Default value: $title
Data type: Array[String[1]]
Other FQDNs that resolve to this host that are used by the service. For example, the $site_alias of a Jenkins master.
Default value: []