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 infracoreThe following parameters are available in the profile_metadata::service defined type:
owner_uidteamend_usersescalation_perioddowntime_impactnotesdoc_urlsclass_namehuman_nameother_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: []