Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

There are quite a bit of data which are not associated to a specific service, but are rather used by various modules, and should thus generally allways be present:

KeyDescriptionExampleCreated byData-typeDatafile:

Used by:

profile::networking::rpfilterBefore we used multiple routing-tables on our hosts we had to turn off rpfilter to allow asymmetric routing. Now this should be turned on.trueN/ABooleannetworking.yamlAll
profile::networking::management::ipv4::prefixesA list over IPv4 prefixes for networks where management stations are found. Used to configure the firewall for SSH, stats-pages etc.

- '192.0.2.0/26'

N/AList of stringsnetworking.yamlAll
profile::networking::management::ipv6::prefixesA list over IPv6 prefixes for networks where management stations are found. Used to configure the firewall for SSH, stats-pages etc.- '2001:db8:beef:701::/64'N/AList of strings
All

Networks

The networks used in the deployment are all described in hiera to ensure that all configuration retrieves the same values when configuring anything network specific. There are one key in hiera which lists all networks:

networking.yamlAll
profile::ntp::serversA list over ntp servers to use.

- 'ntp.ntnu.no'

KeyDescriptionExampleCreated byData-type

Used by:

profile::networksA list over networks in this deployment. The values in this list is used as keys to retrieve the rest of the parameters.- 'management'

N/A

List of
Stringsrole::bootstrap, role::dashboard, role::kvm, role::dhcp

For each of the neworks listed in "profile::networks" the following keys should exist:

stringscommon.yamlAll
profile::keepalived::vrrp_passwordA password used to secure the vrrp instances'724EuvohTGOdlcFnLlDV'pwgen -s -1 20Stringcommon.yaml 
classesA list over puppet classes which should be installed on a node. Used when we do not have an ENC, but it is always required. It is thus recommended to have an empty list here if an ENC is used.[ ]N/AList of stringscommon.yaml or node-specific file.All
profile::productionlevelWhich production-level is this installation? "prod", "test" or "dev"?'dev'N/AStringcommon.yamlAll
profile::baseconfig::smtp_relayAn SMTP relay which the server can use to send mail'smtp.example.com
KeyDescriptionExampleCreated byData-type

Used by

profile::networks::<networkname>::domainThe network-specific domain-name.'management.example.com'N/AStringrole::bootstrap, role::dashboardprofile::networks::<networkname>::ipv4::dynamicrange(Optional) The range of ip-addresses for dynamic assignment to unregistered hosts.'192.0.2.230 192.0.2.240
'N/AString
role::bootstrap, role::dashboard, role::dhcp
common.yamlAll
profile::
networks
baseconfig::
<networkname>::ipv4::gateway
maildomainThe
IPv4 gateway on the network
domain the server sends mail from'
192.0.2.1
example.com'N/AString
role::bootstrap, role::dashboard, role::dhcpprofile::networks::<networkname>::ipv4::idThe IPv4 network ID.'192.0.2.0'N/AStringrole::bootstrap, role::dashboard, role::dhcpprofile::networks::<networkname>::ipv4::maskThe IPv4 network mask'255.255.255.0'
common.yamlAll

Networks

The networks used in the deployment are all described in hiera to ensure that all configuration retrieves the same values when configuring anything network specific. There are one key in hiera which lists all networks:

KeyDescriptionExampleCreated byData-typeDatafile:

Used by:

profile::networksA list over networks in this deployment. The values in this list is used as keys to retrieve the rest of the parameters.

- 'management'

N/AList of Stringsnetworking.yaml
N/AString
role::bootstrap, role::dashboard, role::kvm, role::dhcp

For each of the neworks listed in "profile::networks" the following keys should exist:

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::
<networkname>
networks::
ipv4
<networkname>::
prefix
domainThe
IPv4 CIDR prefix
network-specific domain-name.'
192
management.
0.2.0/24'
example.com'N/AString
Most roles. Used as a source-net in firewall rules.
networking.yamlrole::bootstrap, role::dashboard
profile::networks::<networkname>::ipv4::
reserved
dynamicrange(Optional)
list over address-ranges which the dashboard should not assign to
The range of ip-addresses for dynamic assignment to unregistered hosts.
 -
'192.0.2.
245-
230 192.0.2.
248
240'N/AStringnetworking.yamlrole::bootstrap, role::dashboard, role::dhcp
profile::networks::<networkname>::
ipv6
ipv4::
prefix
gatewayThe
IPv6 CIDR prefix
IPv4 gateway on the network'192.0.2.1
'2001:db8:beef:707::/64
'N/AStringnetworking.yamlrole::bootstrap, role::
postgres::master
dashboard, role::
postgres::slave
dhcp
profile::networks::<networkname>::
vlanid
ipv4::idThe
VLAN
IPv4 network ID
of the network
.
504
'192.0.2.0'N/A
Integer
Stringnetworking.yamlrole::bootstrap, role::
kvm

Ceph

These keys will be subject to change, when they get to be a part of new roles

KeyDescriptionExampleCreated byData-typeUsed by:
dashboard, role::dhcp
profile::
ceph
networks::<networkname>::ipv4::
fsidUUID for cluster'23a2d131-99f7-4ad0-9fb4-1977f59ce530'uuidgen
maskThe IPv4 network mask'255.255.255.0'N/AStringnetworking.yaml
String
role::
controller
bootstrap,

role::
compute
dashboard,

role::
storage
dhcp
profile::networks::<networkname>::
ceph
ipv4::
replicasAmount of replicas in cluster3
prefixThe IPv4 CIDR prefix.'192.0.2.0/24'N/A
Integer

role::controller,
role::compute,
role::storage

profile::ceph::journal::sizeSize of journal (not relevant in luminous(?)) in MB15800
Stringnetworking.yamlMost roles. Used as a source-net in firewall rules.
profile::networks::<networkname>::ipv4::reserved(Optional) list over address-ranges which the dashboard should not assign to hosts. - '192.0.2.245-192.0.2.248'N/A
Integer
Stringnetworking.yaml
role::controller,
role::
compute
bootstrap,

role::
storage
dashboard
profile::
ceph
networks::
admin_keyAdmin key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

<networkname>::ipv6::prefixThe IPv6 CIDR prefix'2001:db8:beef:707::/64'N/AStringnetworking.yaml
ceph-authtool --gen-print-keyString
role::
controller
bootstrap,

role::postgres::
compute
master,

role::
storage
postgres::slave
profile::
ceph
networks::<networkname>::
monitor_keyceph-mon key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

ceph-authtool --gen-print-keyStringrole::controller,
role::computeprofile::ceph::mgr_keyceph-mgr key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

ceph-authtool --gen-print-keyString

role::controller

profile::ceph::osd_bootstrap_keyceph-osd bootstrap key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

ceph-authtool --gen-print-keyString

role::controller,
role::storage

profile::ceph::glance_keyglance key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

ceph-authtool --gen-print-keyStringrole::controller
(glance hosts)profile::ceph::nova_keynova (and cinder) key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

ceph-authtool --gen-print-keyStringrole::controller,
role::compute
(nova hosts)
(cinder hosts)profile::ceph::nova_uuidUUID for nova/libvrt and cinder'23a2d131-99f7-4ad0-9fb4-1977f59ce530'uuidgenStringrole::controller,
role::compute
(nova and cinder hosts)profile::ceph::cluster_networkCeph frontend network'172.17.2.0/24'N/AStringrole::storageprofile::ceph::public_networkCeph backend (replication) network'172.17.3.0/24'N/AStringrole::storage

Dashboard

The general configuration of the dashboard are based on the following keys:

KeyDescriptionExampleCreated byData-type

Used by:

profile::dashboard::django::secretA secret key used for misc. security features in the django backend. Should be the same on all dashboard servers'pM[`SiZd'=+ycXOAKm`srXY?@8DRw=BVdQXg$blHD"RD\2iv97'pwgen -s -y 50 -1Stringrole::bootstrap, role::dashboard
profile::dashboard::nameThe DNS name used to access the dashboard. This name should have an A and AAAA record configured with the address of the dashboard server (or loadbalancer). 'dashboard.example.com'N/A String role::bootstrap, role::dashboard
profile::dashboard::name::v4onlyA DNS name wich also points to the dashboard, but this name should only resolve to an IPv4 address. This is because of some processes currently only works over IPv4 (Authorization of the retrieval of PXE preseed files for example)  'v4dashboard.example.com'N/A String role::bootstrap, role::dashboard
profile::dashboard::ldap::urlThe url for the LDAP server used for authentication.'ldaps://ldap.example.com:636'N/AStringrole::bootstrap, role::dashboard
profile::dashboard::ldap::search_baseLDAP search base'OU=Users,DC=ldap,DC=example,DC=com'N/AStringrole::bootstrap, role::dashboard
profile::dashboard::ldap::domainLDAP domain nam'example-com'N/AStringrole::bootstrap, role::dashboard

There are also some keys which have a suggested value wich should work for all installations, but are still included in hiera for flexibility:

KeyDescriptionSuggested valueData-type

Used by:

profile::dashboard::apiA HTTP link used by external clients connecting to the dashboard.'http://%{hiera('profile::dashboard::name::v4only')}'Stringrole::bootstrap, role::dashboard
profile::dashboard::datadirA location where the dashboard can store files.'/var/lib/machineadmin'Stringrole::bootstrap, role::dashboard

Database

vlanidThe VLAN ID of the network.504N/AIntegernetworking.yamlrole::kvm

Legacy keys

As there still are a couple of puppet profiles expecting the management network to be named management, the following keys are needed:

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::networks::management::ipv4::prefixIPv4 prefix for management network"%{hiera('profile::networks::infrastructure::ipv4::prefix')}"N/AStringnetworking.yaml 
profile::networks::management::ipv6::prefixIPv6 prefix for management network"%{hiera('profile::networks::infrastructure::ipv6::prefix')}"N/AStringnetworking.yaml 


Users

To create users the following general keys are needed:

KeyDescriptionExampleCreated byData-typeDatafile:

Used by:

profile::usersA list over usernames which puppet should configure users for

- 'eigil'

N/AList of Stringsusers.yamlAll machines

For each username the following keys should be created.

KeyDescriptionExampleCreated byData-typeDatafile:

Used by:

profile::user::<username>::uidThe user-id

801

N/AIntegerusers.yamlAll machines
profile::user::<username>::groupsA list over groups the user should belong to.

- 'sudo'

N/AList of stringsusers.yamlAll machines
profile::user::<username>::hashThe password-hash to be injected into /etc/shadow  Stringusers.yamlAll machines
profile::user::<username>::keysList over ssh-keys which should be added to the users authorized_keys

 

N/AList of stringsusers.yamlAll machines
profile::user::<username>::key::<keyname>A specific ssh key. Needs one for each key listed in profile::user::<username>::keys N/AStringusers.yamlAll machines


Ceph

These keys will be subject to change, when they get to be a part of new roles

KeyDescriptionExampleCreated byData-type

Used by:

profile::ceph::fsidUUID for cluster'23a2d131-99f7-4ad0-9fb4-1977f59ce530'uuidgenString

role::controller,
role::compute,
role::storage

profile::ceph::replicasAmount of replicas in cluster3N/AInteger

role::controller,
role::compute,
role::storage

profile::ceph::journal::sizeSize of journal (not relevant in luminous(?)) in MB15800N/AInteger

role::controller,
role::compute,
role::storage

profile::ceph::admin_keyAdmin key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

ceph-authtool --gen-print-keyString

role::controller,
role::compute,
role::storage

profile::ceph::monitor_keyceph-mon key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

ceph-authtool --gen-print-keyStringrole::controller,
role::compute
profile::ceph::mgr_keyceph-mgr key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

ceph-authtool --gen-print-keyString

role::controller

profile::ceph::osd_bootstrap_keyceph-osd bootstrap key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

ceph-authtool --gen-print-keyString

role::controller,
role::storage

profile::ceph::glance_keyglance key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

ceph-authtool --gen-print-keyStringrole::controller
(glance hosts)
profile::ceph::nova_keynova (and cinder) key

'AQCIhy9a9ozCKhAApX5UoAnjad+KZ4VzWxBYJQ=='

ceph-authtool --gen-print-keyStringrole::controller,
role::compute
(nova hosts)
(cinder hosts)
profile::ceph::nova_uuidUUID for nova/libvrt and cinder'23a2d131-99f7-4ad0-9fb4-1977f59ce530'uuidgenStringrole::controller,
role::compute
(nova and cinder hosts)
profile::ceph::cluster_networkCeph frontend network'172.17.2.0/24'
KeyDescriptionExampleCreated byData-type

Used by:

profile::dashboard::database::typeThe database type.'mysql' or 'sqlite'N/AStringrole::bootstrap, role::dashboardprofile::dashboard::database::nameThe database name (for mysql) or location (for sqlite)'dashboard' or '/var/dashboard.sqlite'N/AStringrole::bootstrap, role::dashboardprofile::dashboard::database::userThe database username

'dashboard'

N/AStringrole::bootstrap, role::dashboardprofile::dashboard::database::passThe database password'x&1/7LjWbz:i<:W&p+PG'pwgen -s -y 20 -1Stringrole::bootstrap, role::dashboardprofile::dashboard::database::hostThe database host. Could be a static string, or a hiera lookup.'mysql.example.com', '192.0.2.38' or "%{hiera('profile::haproxy::management::ip')}"
N/AStringrole::
bootstrap, role::dashboard

DHCP configuration:

storage
profile::ceph::public_networkCeph backend (replication) network'172.17.3.0/24'N/AStringrole::storage


Dashboard

The general configuration of the dashboard are based on the following keysThe dashboard needs the keys listed at the section DHCP server in addition to the following keys to configure the DHCP servers:

KeyDescriptionExampleCreated byData-typeDatafile:

Used by:

profile::dashboard::
dhcp
django::
servers
secret

A

list of hashes describing the dhcp servers. Key=DHCP-Server-name and value=DHCP-IPv4'dhcp1': '192.0.2.21'N/A

secret key used for misc. security features in the django backend. Should be the same on all dashboard servers

NB: The pwgen command lacks -y because some special characters will cause errors

'9tAMGEAEO4ln3t3PEXvN7dJov5SlbKU5AxxkSO50WQH6yIMt8X'pwgen -s 50 -1Stringcommon.yaml
List of hashes
role::bootstrap, role::dashboard

DNS configuration:

The Dashboard requires some keys listed under the section DNS-Server, in addition to the following keys:

profile::dashboard::nameThe DNS name used to access the dashboard. This name should have an A and AAAA record configured with the address of the dashboard server (or loadbalancer). 'dashboard.example.com'N/A String common.yamlrole::bootstrap, role::dashboard
profile::dashboard::name::v4onlyA DNS name wich also points to the dashboard, but this name should only resolve to an IPv4 address. This is because of some processes currently only works over IPv4 (Authorization of the retrieval of PXE preseed files for example)  'v4dashboard.example.com'N/A String common.yaml
KeyDescriptionExampleCreated byData-type

Used by:

profile::dns::<shortname>::keyThe TSIG key used for updates sent to this server. It can be useful to let this be a hiera-lookup for the zones managed by our own DNS servers.

'UvetjoX5zMiw/NbQr3biug=='

"%{hiera('profile::dns::key::update')}"

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST <keyname>String
role::bootstrap, role::dashboard

PXE-Booting

The dashboard and the DHCP servers are together providing a pxeboot environment where we boot and install operatingsystem images. 

profile::dashboard::ldap::urlThe url for the LDAP server used for authentication.'ldaps://ldap.example.com:636'N/AStringcommon.yamlrole::bootstrap, role::dashboard
profile::dashboard::ldap::search_baseLDAP search base'OU=Users,DC=ldap,DC=example,DC=com'N/AStringcommon.yaml
KeyDescriptionExampleCreated byData-type

Used by:

profile::pxe::imagesA list over image short-names (ID's used to identify images later).- '1604amd64'N/AList of strings
role::bootstrap, role::
dhcp
dashboard
profile::
pxe
dashboard::
<shortname>
ldap::
nameA descriptive name of the specific image'Ubuntu 16.04 Server amd64
domainLDAP domain nam'example-com'N/AStringcommon.yamlrole::bootstrap, role::
dhcp
dashboard

There are also some keys which have a suggested value wich should work for all installations, but are still included in hiera for flexibility:

KeyDescriptionSuggested valueData-typeDatafile:

Used by:

profile::dashboard::apiA HTTP link used by external clients connecting to the dashboard.'http://%{hiera('profile::dashboard::name::v4only')}'Stringcommon.yaml
profile::pxe::<shortname>::kernelA URL to the kernel of the specific OS'http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux'N/AStringrole::bootstrap, role::dhcpprofile::pxe::<shortname>::initrdA URL to the initrd image of the specific OS'http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz'N/AString
role::bootstrap, role::
dhcp

DHCP server

...

dashboard
profile::dashboard::datadirA location where the dashboard can store files.'/var/lib/shiftleader'Stringcommon.yamlrole::bootstrap, role::dashboard

Database

KeyDescriptionExampleCreated byData-typeDatafile:

Used by:

profile::
dhcp
dashboard::
omapi
database::
key
typeThe
omapi key used to update the DHCP servers'omapi_key=='
dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 512 -n HOST key_name
String
database type.'mysql' or 'sqlite'N/AStringcommon.yamlrole::bootstrap, role::dashboard
, role::dhcp
profile::
dhcp
dashboard::
omapi
database::nameThe
omapi key name

'key_name'

String
database name (for mysql) or location (for sqlite)'dashboard' or '/var/dashboard.sqlite'N/AStringcommon.yamlrole::bootstrap, role::dashboard
,
profile
role
::
dhcpprofile
dashboard::
dhcp
database::
searchdomain
userThe
default search-domain handed to DHCP clients
database username

'dashboard

'cloud.domain.com

'

N/AStringcommon.yamlrole::bootstrap, role::
dhcp
dashboard
profile::dashboard::
dns
database::
resolvers
passThe
DNS resolvers for clients to use

- '<ip-addres-DNS1>'

- '<ip-address-DNS2>'

N/AList of strings
database password'x&1/7LjWbz:i<:W&p+PG'pwgen -s -y 20 -1Stringcommon.yamlrole::bootstrap, role::
dhcp

DNS server

If you are hosting a DNS server the following keys are needed:

dashboard
profile::dashboard::database::hostThe database host. Could be a static string, or a hiera lookup.'mysql.example.com', '192.0.2.38' or "%{hiera('profile::haproxy::management::ip')}"N/AStringcommon.yamlrole::bootstrap, role::dashboard

DHCP configuration:

The dashboard needs the keys listed at the section DHCP server in addition to the following keys to configure the DHCP servers:

KeyDescriptionExampleCreated byData-typeDatafile

Used by:

profile::dhcp::serversA list of hashes describing the dhcp servers. Key=DHCP-Server-name and value=DHCP-IPv4'dhcp1': '192.0.2.21
KeyDescriptionExampleCreated byData-typeUsed by:profile::dns::forwardersWhich DNS servers your DNS server should use to resolve domainnames where it is not an authorative DNS

- '<ip-addres-DNS1>'

- '<ip-address-DNS2>
'N/AList of
stringsrole
hashescommon.yamlrole::bootstrap, role::dashboard

DNS configuration:

The Dashboard requires some keys listed under the section DNS-Server, in addition to the following keys:

KeyDescriptionExampleCreated byData-typeDatafile:

Used by:

:dns::master

profile::dns::
key
<shortname>::
transfer
keyThe TSIG
keys
key used for
zone-transfers
updates sent to this server. It can be useful to let this be a hiera-lookup for the zones managed by our own DNS servers.

'UvetjoX5zMiw/NbQr3biug=='

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST <keyname>Stringrole::bootstrap, role::dns::master, role::dns::slave

"%{hiera('profile::dns::key::update

The TSIG keys used for DNS updates'UvetjoX5zMiw/NbQr3biug=='

')}"

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST <keyname>Stringcommon.yamlrole::bootstrap, role::
dns::master, role::dns::slaveprofile::dns::slavesA list over DNS slave-servers which replicates the zone-files from the main DNS server. The hash is structured as key=Servername and value=DNS-IPv4'ns2.example.com': '192.0.2.130'N/AList of Hashesrole::bootstrap, role::dns::master, role::dns::slaveprofile::dns::zonesA list over DNS zones managed by our DNS servers, or used by our dashboard. The hash is structured as key=DNS-zone and value=DNS-server-shortname.
dashboard

PXE-Booting

The dashboard and the DHCP servers are together providing a pxeboot environment where we boot and install operatingsystem images. 

KeyDescriptionExampleCreated byData-typeDatafile:

Used by:

profile::pxe::imagesA list over image short-names (ID's used to identify images later).- '1604amd64
'zone.example.com': 'ns1
'N/AList of
Hashes
stringscommon.yamlrole::bootstrap, role::
dashboard, role
dhcp
profile::
dns
pxe::
master, role
<shortname>::
dns::slave

I addition there are a set of keys which are needed for each DNS server managing a DNS zone used by us. Shortname is here the name used in "profile::dns::zones".

nameA descriptive name of the specific image'Ubuntu 16.04 Server amd64'N/AStringcommon.yamlrole::bootstrap, role::dhcp
profile::pxe
KeyDescriptionExampleCreated byData-typeUsed by:profile::dns
::<shortname>::
ipv4The IPv4 address of a specific DNS server.'192.0.2.129
kernelA URL to the kernel of the specific OS'http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux'N/AStringcommon.yamlrole::bootstrap, role::
dashboard, role::dns::master, role::dns::slave
dhcp
profile::
dns
pxe::<shortname>::
nameThe fqdn of a specific DNS server'ns1.example.com
initrdA URL to the initrd image of the specific OS'http://archive.ubuntu.com/ubuntu/dists/xenial-proposed/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz'N/AStringcommon.yamlrole::bootstrap, role:
:dns::master, role::dns::slave

KVM / Libvirt

Networks

The class role::kvm makes use of the following general purpose keys to auto create OVS bridges, which the VMs can connect to:

  • profile::networks
  • profile::networks::${network}::vlanid

In addition every KVM host needs to specify which physical interface(s) that carries the networks specified in the profile::networks key

KeyDescriptionExampleCreated byData-typeUsed by:

profile::kvm::interfaces::<networkname>

Example:

profile::kvm::interfaces::management

Name of the physical interfaces that carries the given networkname.

Multiple networks can have the same physical interface, which will be the case if the NIC is connected to a VLAN trunk port.

'eno2'N/AStringrole::kvm

 

Haproxy

We use haproxy to loadbalance multiple of our services. It needs the following keys present in hiera to work:

:dhcp

DHCP server

When running DHCP servers, the following keys are needed:

KeyDescriptionExampleCreated byData-typeDatafile:Used by:
profile::dhcp::omapi::keyThe omapi key used to update the DHCP servers'omapi_key=='
dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 512 -n HOST key_name
Stringcommon.yaml

role::bootstrap, role::dashboard, role::dhcp

profile::dhcp::omapi::nameThe omapi key name

'key_name'

Stringcommon.yaml

role::bootstrap, role::dashboard, role::dhcp

profile::dhcp::searchdomainThe default search-domain handed to DHCP clients'cloud.domain.com'N/AStringcommon.yaml

role::bootstrap, role::dhcp

profile::dns::resolversThe DNS resolvers for clients to use

- '<ip-addres-DNS1>'

- '<ip-address-DNS2>'

N/AList of stringscommon.yaml
KeyDescriptionExampleCreated byData-typeUsed by:profile::haproxy::management::ipv4The IPv4 address used in front og the loadbalancer used for managemnet services'192.0.2.151' N/AString

role::bootstrap, role::

puppet::db, role::puppet::server, role::mysql, role::balancer::managementprofile::haproxy::management::ipv4::idThe VRRP id used by the IPv4 VRRP instance.11N/AInteger

dhcp

DNS server

If you are hosting a DNS server the following keys are needed:

KeyDescriptionExampleCreated byData-typeDatafile:Used by:
profile::dns::forwardersWhich DNS servers your DNS server should use to resolve domainnames where it is not an authorative DNS

- '<ip-addres-DNS1>'

- '<ip-address-DNS2>'

N/AList of stringscommon.yaml

role::bootstrap, role::

balancer

dns::

management

master

profile::
haproxy
dns::
management
key::
ipv4::priorityThe VRRP priority used by the IPv4 VRRP instance.10 N/AInteger
transferThe TSIG keys used for zone-transfers'UvetjoX5zMiw/NbQr3biug=='dnssec-keygen -a HMAC-MD5 -b 128 -n HOST <keyname>Stringcommon.yamlrole::bootstrap, role::dns::master, role::
balancer
dns::
management
slave
profile::
haproxy
dns::
management
key::
ipv6
updateThe
IPv4 address used in front og the loadbalancer
TSIG keys used for
managemnet services'2001:db8:beef:707::7b1'N/A
DNS updates'UvetjoX5zMiw/NbQr3biug=='dnssec-keygen -a HMAC-MD5 -b 128 -n HOST <keyname>Stringcommon.yaml
String
role::bootstrap, role::
puppet
dns::
db
master, role::
puppet
dns::
server, role::mysql, role::balancer::management 
slave
profile::
haproxy
dns::
management::ipv6::idThe VRRP id used by the IPv6 VRRP instance. 12N/A
slavesA list over DNS slave-servers which replicates the zone-files from the main DNS server. The hash is structured as key=Servername and value=DNS-IPv4'ns2.example.com': '192.0.2.130'N/AList of Hashescommon.yaml
Integer
role::bootstrap, role::
balancer
dns::
managementprofile
master, role::
haproxy
dns::
management
slave
profile::
ipv6
dns::
priorityThe VRRP priority used by the IPv6 VRRP instance.10N/A
zonesA list over DNS zones managed by our DNS servers, or used by our dashboard. The hash is structured as key=DNS-zone and value=DNS-server-shortname.'zone.example.com': 'ns1'N/AList of Hashescommon.yaml
Integer
role::bootstrap, role::
balancer::management

MySQL

Our mysql cluster uses the following hiera-keys:

dashboard, role::dns::master, role::dns::slave

I addition there are a set of keys which are needed for each DNS server managing a DNS zone used by us. Shortname is here the name used in "profile::dns::zones".

KeyDescriptionExampleCreated byData-typeDatafile:Used by:
profile::dns::<shortname>::ipv4The IPv4 address of a specific DNS server.'192.0.2.129
KeyDescriptionExampleCreated byData-type

Used by

profile::mysqlcluster::serversThis is a list over IPv4 addresses used by servers in the cluster. This list are used when a server starts up, to discover at least one of the machines already in the cluster.

- '192.0.2.201'

N/AStringrole::bootstrap, role::mysqlprofile::mysqlcluster::masterThe fqdn of one of the mysql-servers. This are in theory used by the puppet-galera module to start one server in case all servers are down.'mysql1.example.com
'N/AStringcommon.yamlrole::bootstrap, role::dashboard, role::dns::
mysql
master, role::dns::slave
profile::dns::
mysqlcluster
<shortname>::
root_passwordThis is the password of the mysql root user'OwT$Etc$=|;h(=upip#3'pwgen -s -y 20 -1
nameThe fqdn of a specific DNS server'ns1.example.com'N/AStringcommon.yaml
String
role::bootstrap, role::
mysqlprofile::mysqlcluster::status_passwordThis is the password of the mysql status user

';^8P"M,Oem6le\T"am!0'

pwgen -s -y 20 -1Stringrole::bootstrap, role::mysqlprofile::mysqlcluster::haproxy_passwordThis is the password of the mysql haproxy user. This user is so that haproxy can create more robust checks than just see if port 3306 is open.'4g36-&jHNFF?J-7yQZHa'pwgen -s -y 20 -1Stringrole::bootstrap, role::mysql

Postgres

dns::master, role::dns::slave

KVM / Libvirt

Networks

The class role::kvm makes use of the following general purpose keys to auto create OVS bridges, which the VMs can connect to:

  • profile::networks
  • profile::networks::${network}::vlanid

In addition every KVM host needs to specify which physical interface(s) that carries the networks specified in the profile::networks keyOur postgres servers uses the following hiera keys:

KeyDescriptionExampleCreated byData-typeUsed by:

profile::

postgres::ipv4The IPv4 address to use in front of the postgres servers.'192.0.2.204'N/A Stringrole::bootstrap, role::postgres::master, role::postgres::slave, role::puppet::dbprofile::postgres::ipv4::idThe VRRP id to use for the VRRP instance negotiating for postgres's IPv4 address13N/AIntegerrole::bootstrap, role::postgres::master, role::postgres::slaveprofile::postgres::ipv4::priorityThe VRRP priority to use for the VRRP instance negotiating for postgres's IPv4 address10N/A

kvm::interfaces::<networkname>

Example:

profile::kvm::interfaces::management

Name of the physical interfaces that carries the given networkname.

Multiple networks can have the same physical interface, which will be the case if the NIC is connected to a VLAN trunk port.

'eno2'N/AStringrole::kvm

 

Haproxy

We use haproxy to loadbalance multiple of our services. It needs the following keys present in hiera to work:

KeyDescriptionExampleCreated byData-typeDatafile:Used by:
profile::haproxy::web::profileWhich web profile  should this haproxy node have'management'N/AStringnode-specific
Integer
role::bootstrap, role::
postgres
balancer::
master, role
*
profile::
postgres
haproxy::
slave
${profile}::
postgres::ipv6
ipv4The
IPv6
IPv4 address
to use
used in front
of the postgres servers.'2001:db8:beef:707::9:6591'N/A 
og the loadbalancer used for managemnet services'192.0.2.151' N/AStringnetworking.yaml
String
role::bootstrap, role::
postgres
puppet::
master
db, role::
postgres
puppet::server, role::
slave
mysql, role::
puppet
balancer::
db
management
profile::haproxy::
postgres
${profile}::
ipv6
ipv4::idThe VRRP id
to use for
used by the IPv4 VRRP instance
negotiating for postgres's IPv6 address14
.11N/AIntegernetworking.yamlrole::bootstrap, role::
postgres
balancer::
master, role
management
profile::
postgres
haproxy::
slave
${profile}::
postgres::ipv6
ipv4::priorityThe VRRP priority
to use for
used by the IPv4 VRRP instance
negotiating for postgres's IPv6 address
.10 
10
N/AIntegernetworking.yamlrole::bootstrap, role::
postgres
balancer::
master, role
management
profile::
postgres
haproxy::
slave
${profile}::
postgres::masterserverA fqdn identifying the postgres server which is supposed to be the master. This affects which servers are going to create databases and users.
ipv6The IPv4 address used in front og the loadbalancer used for managemnet services'2001:db8:beef:707::7b1
'pgsql1.example.com
'N/AStringnetworking.yamlrole::bootstrap, role::puppet::db, role::puppet::
postgres
server, role::
master
mysql, role::
postgres
balancer::
slave
management 
profile::haproxy::${profile}::
postgres
ipv6::
password
idThe
password for the "postgres" postgresql user.'d4Cwfl)W}onosE~Y[]G,'pwgen -s -y 20 -1
VRRP id used by the IPv6 VRRP instance. 12N/AIntegernetworking.yaml
String
role::bootstrap, role::
postgres
balancer::
master, role
management
profile::
postgres
haproxy::
slave
${profile}::
postgres
ipv6::
replicatorpassword
priorityThe
password
VRRP priority used
for the "replicator" postgresql user.'Gz,j*>Qt'dF{-\Sr4N-_'pwgen -s -y 20 -1
by the IPv6 VRRP instance.10N/AIntegernetworking.yaml
String
role::bootstrap, role::
postgres
balancer::
master, role
management
profile::haproxy::
postgres
${profile}::
slave

Puppet

These are our puppet-related hiera keys:

KeyDescriptionExampleCreated byData-type

Used by

profile::puppet::aptkeyThe gpg key used to authenticate the puppetlabs apt repository'6F6B15509CF8E59E6E469F327F438280EF8D349F'puppetlabsStringAll
profile::puppet::caserverThe fqdn of the puppetca server'puppetca.example.com'N/AStringAll
profile::puppet::environmentThe puppet environment a certain host should be configured to use. This needs to be a valid puppet environment, but it will also be owerridden by the ENC, so it is not important exactly which environment are listed her as long as it exists. If you do not use an ENC, this is the puppet environment a client will retrieve config from.'production'N/AStringAll
profile::puppet::hostnameThis is the fqdn the clients use to contact the puppetmasters.'puppet.example.com'N/AStringAll
profile::puppet::r10k::repoThe path to the git-repository which r10k uses to retrieve environments and modules.'https://github.com/myorg/r10k.git'N/AStringrole::bootstrap, role::puppet::server, role::puppet::ca
profile::puppet::runintervalHow often the puppet client should run. Given as a string consisting of a number and a prefix (h, m).'60m'N/AStringAll
profile::puppetdb::database::name

The name of the postgres database used by puppetdb

'puppetdb'N/AStringrole::bootstrap, role::puppet::db, role::postgres::master
profile::puppetdb::database::userThe username of the postgres database used by puppetdb'puppetdb'N/AStringrole::bootstrap, role::puppet::db, role::postgres::master
profile::puppetdb::database::passThe password of the postgres database used by puppetdb'teY.>&3@Ub$X-OGxOFQ7'pwgen -s -y 20 -1Stringrole::bootstrap, role::puppet::db, role::postgres::master
profile::puppetdb::hostnameThe hostname which the puppetservers use to contact the puppetdb service'puppetdb.example.com'N/AStringrole::bootstrap, role::puppet::server role::puppet::ca

Redis

KeyDescriptionExampleCreated byData-typeUsed by:
profile::redis::masterName or IP address of initial redis master

'redis1.cloud.domain.com' or '192.168.100.12'

WARNING: If you use DNS name, ensure that the name DOESN'T resolve to 127.0.0.1 at the given redis host, or else this node will not add itself to the redis-sentinel cluster

N/A

String

role::redis

profile::redis::masterauthPassword for master communitcation'teY.>&3@Ub$X-OGxOFQ7'pwgen -s -y 20 -1String

role::redis

role::balancer::management

role::sensuserver

profile::redis::nodetypeDefined on each redis-node. Only valid values are 'master' or 'slave''master'N/AStringrole::redis
profile::redis::ipThe IP redis clients should contact redis on. Typically the haproxy ip

'192.168.100.10'

or

"%{hiera('profile::haproxy::management::ip')}"

or

redis.cloud.domain.com

N/AStringroles::sensuserver

Sensu

domainsWhich domains haproxy should forward for in frontend "ft_web" for given profile

-'foo.com'

-'bar.foo.com'

N/AList of stringscommon.yamlrole::balancer::*
profile::haproxy::management::apicertA .pem certificate bundle with private key, CAcert and server certtl;dr

cat private_key.key server.crt ca.crt > haproxy_web.pem

The order is important!

TLS from CertManager: Choose the "as Certificate (w/ issuer after)" alternative

Multiline stringcerts.yamlrole::bootstrap, role::balancer::management
profile::haproxy::services::apicertA .pem certificate bundle with private key, CAcert and server certtl;dr

cat private_key.key server.crt ca.crt > haproxy_web.pem

The order is important!

TLS from CertManager: Choose the "as Certificate (w/ issuer after)" alternative

Multiline stringcerts.yamlrole::bootstrap, role::balancer::services
profile::haproxy::${profile}::webcertA .pem certificate bundle with private key, CAcert and server certtl;dr

cat private_key.key server.crt ca.crt > haproxy_web.pem

The order is important!

TLS from CertManager: Choose the "as Certificate (w/ issuer after)" alternative

Multiline stringcerts.yaml

role::balancer::*

 

profile::haproxy::management::apicert::certfileFilepath and name for the apicert bundle'/etc/ssl/private/haproxy_web.pem'N/AStringcerts.yamlrole::balancer::web

Munin

KeyDescriptionExampleCreated byData-typeDatafile

Used by

profile::munin::urls

List of FQDNs the munin server should create a vhost in apache for.

Typically - set the "world reachable" FQDN in common.yaml

Each node will get a vhost with their FQDN automaticly, through the apache class.

Only set a munin url in node specific file if it's different from the servers hostname.

- 'munin.exaxmple.com'

- 'munin1.example.com'

N/AList of Strings

common.yaml

Node specific

role::munin

MySQL

Our mysql cluster uses the following hiera-keys:

KeyDescriptionExampleCreated byData-typeDatafile

Used by

profile::mysqlcluster::serversThis is a list over IPv4 addresses used by servers in the cluster. This list are used when a server starts up, to discover at least one of the machines already in the cluster.

- '192.0.2.201'

N/AStringcommon.yamlrole::bootstrap, role::mysql
profile::mysqlcluster::masterThe fqdn of one of the mysql-servers. This are in theory used by the puppet-galera module to start one server in case all servers are down.'mysql1.example.com'N/AStringcommon.yamlrole::bootstrap, role::mysql
profile::mysqlcluster::root_passwordThis is the password of the mysql root user'OwT$Etc$=|;h(=upip#3'pwgen -s -y 20 -1Stringcommon.yamlrole::bootstrap, role::mysql
profile::mysqlcluster::status_passwordThis is the password of the mysql status user

';^8P"M,Oem6le\T"am!0'

pwgen -s -y 20 -1Stringcommon.yamlrole::bootstrap, role::mysql
profile::mysqlcluster::haproxy_passwordThis is the password of the mysql haproxy user. This user is so that haproxy can create more robust checks than just see if port 3306 is open.'4g36-&jHNFF?J-7yQZHa'pwgen -s -y 20 -1Stringcommon.yamlrole::bootstrap, role::mysql

Openstack

General keys, shared amongst various Openstack services

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::openstack::foofoofooN/A Stringopenstack.yamlrole::foo

Cinder

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::cinder::foofoofooN/A Stringopenstack.yamlrole::foo

Glance

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::glance::foofoofooN/A Stringopenstack.yamlrole::foo

Heat

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::heat::foofoofooN/A Stringopenstack.yamlrole::foo

Horizon

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::horizon::foofoofooN/A Stringopenstack.yamlrole::foo

Keystone

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::keystone::foofoofooN/A Stringopenstack.yamlrole::foo

Neutron

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::neutron::foofoofooN/A Stringopenstack.yamlrole::foo

Nova

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::nova::foofoofooN/A Stringopenstack.yamlrole::foo

 

Postgres

Our postgres servers uses the following hiera keys:

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::postgres::ipv4The IPv4 address to use in front of the postgres servers.'192.0.2.204'N/A Stringcommon.yamlrole::bootstrap, role::postgres::master, role::postgres::slave, role::puppet::db
profile::postgres::ipv4::idThe VRRP id to use for the VRRP instance negotiating for postgres's IPv4 address13N/AIntegercommon.yamlrole::bootstrap, role::postgres::master, role::postgres::slave
profile::postgres::ipv4::priorityThe VRRP priority to use for the VRRP instance negotiating for postgres's IPv4 address10N/AIntegercommon.yamlrole::bootstrap, role::postgres::master, role::postgres::slave
profile::postgres::ipv6The IPv6 address to use in front of the postgres servers.'2001:db8:beef:707::9:6591'N/A Stringcommon.yamlrole::bootstrap, role::postgres::master, role::postgres::slave, role::puppet::db
profile::postgres::ipv6::idThe VRRP id to use for the VRRP instance negotiating for postgres's IPv6 address14N/AIntegercommon.yamlrole::bootstrap, role::postgres::master, role::postgres::slave
profile::postgres::ipv6::priorityThe VRRP priority to use for the VRRP instance negotiating for postgres's IPv6 address10N/AIntegercommon.yamlrole::bootstrap, role::postgres::master, role::postgres::slave
profile::postgres::masterserverA fqdn identifying the postgres server which is supposed to be the master. This affects which servers are going to create databases and users.'pgsql1.example.com'N/AStringcommon.yamlrole::bootstrap, role::postgres::master, role::postgres::slave
profile::postgres::passwordThe password for the "postgres" postgresql user.'d4Cwfl)W}onosE~Y[]G,'pwgen -s -y 20 -1Stringcommon.yamlrole::bootstrap, role::postgres::master, role::postgres::slave
profile::postgres::replicatorpasswordThe password used for the "replicator" postgresql user.'Gz,j*>Qt'dF{-\Sr4N-_'pwgen -s -y 20 -1Stringcommon.yamlrole::bootstrap, role::postgres::master, role::postgres::slave

Puppet

These are our puppet-related hiera keys:

KeyDescriptionExampleCreated byData-typeDatafile:

Used by

profile::puppet::aptkeyThe gpg key used to authenticate the puppetlabs apt repository'6F6B15509CF8E59E6E469F327F438280EF8D349F'puppetlabsStringcommon.yamlAll
profile::puppet::caserverThe fqdn of the puppetca server'puppetca.example.com'N/AStringcommon.yamlAll
profile::puppet::environmentThe puppet environment a certain host should be configured to use. This needs to be a valid puppet environment, but it will also be owerridden by the ENC, so it is not important exactly which environment are listed her as long as it exists. If you do not use an ENC, this is the puppet environment a client will retrieve config from.'production'N/AStringcommon.yamlAll
profile::puppet::hostnameThis is the fqdn the clients use to contact the puppetmasters.'puppet.example.com'N/AStringcommon.yamlAll
profile::puppet::r10k::repoThe path to the git-repository which r10k uses to retrieve environments and modules.'https://github.com/myorg/r10k.git'N/AStringcommon.yamlrole::bootstrap, role::puppet::server, role::puppet::ca
profile::puppet::runintervalHow often the puppet client should run. Given as a string consisting of a number and a prefix (h, m).'60m'N/AStringcommon.yamlAll
profile::puppetdb::database::name

The name of the postgres database used by puppetdb

'puppetdb'N/AStringcommon.yamlrole::bootstrap, role::puppet::db, role::postgres::master
profile::puppetdb::database::userThe username of the postgres database used by puppetdb'puppetdb'N/AStringcommon.yamlrole::bootstrap, role::puppet::db, role::postgres::master
profile::puppetdb::database::pass

The password of the postgres database used by puppetdb

NB: The pwgen command lacks -y because some special characters will cause errors

'ys0c85FlLhhfqeteFIfx'pwgen -s  20 -1Stringcommon.yamlrole::bootstrap, role::puppet::db, role::postgres::master
profile::puppetdb::hostnameThe hostname which the puppetservers use to contact the puppetdb service'puppetdb.example.com'N/AStringcommon.yamlrole::bootstrap, role::puppet::server role::puppet::ca

Rabbitmq

KeyDescriptionExampleCreated byData-typeDatafileUsed by:
 profile::rabbitmq::ipIP address for rabbitmq keepalived VIP'10.212.132.11'

N/A

Stringnetworking.yaml

role::rabbitmq,
role::compute

profile::rabbitmq::vrrp::id The VRRP id to use for the VRRP instance negotiating for rabbitmq's IPv4 address12N/AIntegernetworking.yamlrole::rabbitmq
 profile::rabbitmq::vrrp::priorityThe VRRP priority to use for the VRRP instance negotiating for rabbitmq's IPv4 address100N/AInteger

networking.yaml

or node-specific

role::rabbitmq
profile::rabbitmq::rabbituser Default user to create in rabbitmq'rabbit'N/AStringcommon.yamlrole::rabbitmq,
role::compute
profile::rabbitmq::rabbitpassPassword for default vhost / pwgen -s -y 20 -1String 

role::rabbitmq,

role::compute

profile::rabbitmq::rabbitsecret rabbitmq master secret pwgen -s -y 20 -1String 

role::rabbitmq

Redis

KeyDescriptionExampleCreated byData-typeDatafileUsed by:
profile::redis::masterName or IP address of initial redis master

'redis1.cloud.domain.com' or '192.168.100.12'

WARNING: If you use DNS name, ensure that the name DOESN'T resolve to 127.0.0.1 at the given redis host, or else this node will not add itself to the redis-sentinel cluster

N/A

Stringcommon.yaml

role::redis

profile::redis::masterauthPassword for master communitcation'teY.>&3@Ub$X-OGxOFQ7'pwgen -s -y 20 -1Stringcommon.yaml

role::redis

role::balancer::management

role::sensuserver

role::bootstrap

profile::redis::nodetypeDefined on each redis-node. Only valid values are 'master' or 'slave''master'N/AStringnode specific filerole::redis
profile::redis::ipThe IP redis clients should contact redis on. Typically the haproxy ip

'192.168.100.10'

or

"%{hiera('profile::haproxy::management::ipv4')}"

or

redis.cloud.domain.com

N/AStringcommon.yamlroles::sensuserver


Sensu

KeyDescriptionExampleCreated byData-typeDatafileUsed by:
profile::sensu::installOpt-out for installing sensu. If not set to false, sensu-clients will be installed everywherefalseN/ABooleansensu.yaml or node-specificAll
profile::sensu::uchiwa::private_keyPrivate key for uchiwa JWT creationContent of generated file

openssl genrsa -out uchiwa.rsa 2048

Stringsensu.yaml

role::sensuserver

profile::sensu::uchiwa::public_keyPublic key for uchiwa JWT creationContent of generated fileopenssl rsa -in uchiwa.rsa -pubout > uchiwa.rsa.pubStringsensu.yamlrole::sensuserver
profile::sensu::uchiwa::passwordPassword for default (and only) user 'sensu' in Uchiwa'g00dp@$$w0rd'pwgen -s -y 20 1Stringsensu.yamlrole::sensuserver
profile::sensu::uchiwa::fqdnFQDN for uchiwa web frontend (not FQDN for the server running an instance of it)'sensu.cloud.domain.com'N/AStringsensu.yamlrole::sensuserver, role::bootstrap, role::balancer::mangement
profile::sensu::rabbit_passwordPassword for sensu user at the /sensu rabbitmq vhost. Needed for rabbitmq servers, sensu servers AND all sensu clients.'g00dp@$$w0rd'pwgen -s -y 20 1Stringsensu.yamlAll
profile::sensu::mailer::urlURL to Uchiwa web frontend, that will appear in e-mails from Sensu"http://%{hiera('profile::sensu::uchiwa::fqdn')}"N/AStringsensu.yaml
KeyDescriptionExampleCreated byData-typeUsed by:profile::sensu::installOpt-out for installing sensu. If not set to false, sensu-clients will be installed everywherefalseN/ABooleanAllprofile::sensu::uchiwa::private_keyPrivate key for uchiwa JWT creationContent of generated file

openssl genrsa -out uchiwa.rsa 2048

String

role::sensuserver

profile::sensu::uchiwa::public_keyPublic key for uchiwa JWT creationContent of generated fileopenssl rsa -in uchiwa.rsa -pubout > uchiwa.rsa.pubString
role::sensuserver
profile::sensu::
uchiwa
mailer::
passwordPassword for default (and only) user 'sensu' in Uchiwa'g00dp@$$w0rd'pwgen -s -y 20 1
mail_fromThe address sensu will send e-mail alerts from'sensu@sensu.domain.com'N/AStringsensu.yaml
String
role::sensuserver
profile::sensu::
uchiwa::fqdnFQDN for uchiwa web frontend (not FQDN for the server running an instance of it)
mailer::mail_toList of addresses that sensu will send e-mail alerts to

- 'sysadmin1@cloud.domain.com'

- 'sysadmin2@cloud

'sensu.cloud

.domain.com'

N/A
String
List of stringssensu.yamlrole::sensuserver
profile::sensu::mailer::
rabbit_passwordPassword for sensu user at the /sensu rabbitmq vhost. Needed for rabbitmq servers, sensu servers AND all sensu clients.'g00dp@$$w0rd'pwgen -s -y 20 1String
smtp_addressOutgoing SMTP server mail alerts'smtp.cloud.domain.com'N/AStringsensu.yamlrole::sensuserver
All
profile::sensu::mailer::
urlURL to Uchiwa web frontend, that will appear in e-mails from Sensu"http://%{hiera('profile::sensu::uchiwa::fqdn')}"
smtp_portTCP port used for connections to the given SMTP server25N/AInteger
String
sensu.yamlrole::sensuserver
profile::sensu::mailer::
mail
smtp_
fromThe address sensu will send e-mail alerts from
domainSMTP domain'cloud
'sensu@sensu
.domain.com'N/AStringsensu.yamlrole::sensuserver
profile::sensu
::mailer::mail_toList of addresses that sensu will send e-mail alerts to

- 'sysadmin1@cloud.domain.com'

- 'sysadmin2@cloud.domain.com'

N/AList of stringsrole::sensuserverprofile::sensu::mailer::smtp_addressOutgoing SMTP server mail alerts'smtp.cloud.domain.com'N/AStringrole::sensuserverprofile::sensu::mailer::smtp_portTCP port used for connections to the given SMTP server25N/AIntegerrole::sensuserverprofile::sensu::mailer::smtp_domainSMTP domain'cloud.domain.com'N/AStringrole::sensuserverprofile::sensu::plugins

The plugins listed here will be installed on all clients.

OBS:

The example value is actually mandatory, because the checks tagged with 'all' in profile::sensu::checks rely on them. Puppet will not fail without defining this key, but none of the cheks will make any sense...

- 'sensu-plugins-disk-checks'
- 'sensu-plugins-load-checks'
- 'sensu-plugins-memory-checks'
- 'sensu-plugins-process-checks'
- 'sensu-plugins-hardware'
- 'sensu-plugins-puppet'
- 'sensu-plugins-dns'
- 'sensu-plugins-ntp'

N/AList of stringsAllsensu::redactValues that match the patterns in this list will be redacted in all output from sensu

- 'password'
- 'pass'
- 'pw'

N/AList of stringsAllsensu::subscriptionsWhich checks a sensu-client should subscribe to. This is typically set per node. By default, a sensu-client will subscribe to checks tagged with 'all', and if the client is a physical server, it will also subscribe to 'physical-servers'

- 'mysql'

- 'rabbitmq'

- 'roundrobin:ceph'

N/AList of stringsAllsensu::client_customIf you want to override parameters for check command. I.e thresholds, specifying passowrd etc. This where you do that. Should only be set per node

'load':

warning: "8,4,2"

critical: "16,8,4"

'mysql':

password: "%{hiera('profile::mysqlcluster::status_password')}"

'disk':

mountpoints: '/,/home,/var'

N/AList of hashesAll (or, more precise, just the client you add this key to)
::plugins

The plugins listed here will be installed on all clients.

OBS:

The example value is actually mandatory, because the checks tagged with 'all' in profile::sensu::checks rely on them. Puppet will not fail without defining this key, but none of the cheks will make any sense...

- 'sensu-plugins-disk-checks'
- 'sensu-plugins-load-checks'
- 'sensu-plugins-memory-checks'
- 'sensu-plugins-process-checks'
- 'sensu-plugins-hardware'
- 'sensu-plugins-puppet'
- 'sensu-plugins-dns'
- 'sensu-plugins-ntp'

N/AList of stringssensu.yamlAll
sensu::redactValues that match the patterns in this list will be redacted in all output from sensu

- 'password'
- 'pass'
- 'pw'

N/AList of stringssensu.yamlAll
sensu::subscriptionsWhich checks a sensu-client should subscribe to. This is typically set per node. By default, a sensu-client will subscribe to checks tagged with 'all', and if the client is a physical server, it will also subscribe to 'physical-servers'

- 'mysql'

- 'rabbitmq'

- 'roundrobin:ceph'

N/AList of stringsnode-specificAll
sensu::client_customIf you want to override parameters for check command. I.e thresholds, specifying passowrd etc. This where you do that. Should only be set per node

'load':

warning: "8,4,2"

critical: "16,8,4"

'mysql':

password: "%{hiera('profile::mysqlcluster::status_password')}"

'disk':

mountpoints: '/,/home,/var'

N/AList of hashes

node-specific

or really anywhere if you configure lookup_options to deep merge

All (or, more precise, just the client you add this key to)
profile::sensu::checks::tlsexpiryA hash of 'fqdn[:port]' : 'shortname' which should be checked for TLS Expiry

'www.foo.com' : 'foo'

'api.foo.com:8080' : 'api'

'munin.foo.com' : 'munin'

N/AHashsensu.yamlrole::sensuserver

lookup_options:

You might wanna set this in sensu.yaml to allow client_custom settings to be set in multple hiera files without overwriting them with the settings in the top of the hierarchy

  sensu::client_custom:

    merge:

     strategy: 'deep'

     merge_hash_arrays: true

N/AList of hashessensu.yamlAll