You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

Our infrastructure uses puppet with public puppet modules. All our secrets and our installation-spesific parameters are thus placed in hiera.

Data distribution

The hieradata directory contains multiple .yaml files holding our information. When we have multiple puppet masters its important that each of the puppetmasters have an updated version of the hieradata, in addition to an updated list of puppet-modules. As the hiera-data are full of secrets we cannot publish them on github, and have all puppetmasters pull the information from there. What we do instead is to let the hieradata be a local git-repo which each puppetserver is pulling from eachother.

Hiera keys

Depending on what services you are handling with puppet, you might need various keys in hiera. This page tries to list which keys needs to be present to use our role/profile repositories.

General information

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:

 

DHCP server

When running DHCP servers, the following keys are needed:

KeyDescriptionExampleCreated byData-typeUsed 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
String

role::bootstrap, role::dhcp

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

'key_name'

String

role::bootstrap, role::dhcp

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

role::bootstrap, role::dhcp

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

- '<ip-addres-DNS1>'

- '<ip-address-DNS2>'

N/AList of strings

role::bootstrap, role::dhcp

DNS server

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

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 strings

role::bootstrap, role::dns::master

profile::dns::key::transferThe TSIG keys used for zone-transfers'UvetjoX5zMiw/NbQr3biug=='dnssec-keygen -a HMAC-MD5 -b 128 -n HOST <keyname>Stringrole::bootstrap, role::dns::master, role::dns::slave
profile::dns::key::updateThe TSIG keys used for DNS updates'UvetjoX5zMiw/NbQr3biug=='dnssec-keygen -a HMAC-MD5 -b 128 -n HOST <keyname>Stringrole::bootstrap, role::dns::master, role::dns::slave
profile::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::slave
profile::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.'zone.example.com': 'ns1'N/AList of Hashesrole::bootstrap, role::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-typeUsed by:
profile::dns::<shortname>::ipv4The IPv4 address of a specific DNS server.'192.0.2.129'N/AStringrole::bootstrap, role::dashboard, role::dns::master, role::dns::slave
profile::dns::<shortname>::nameThe fqdn of a specific DNS server'ns1.example.com'N/AStringrole::bootstrap, role::dns::master, role::dns::slave


Dashboard

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

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>Stringrole::dashboard
      
  • profile::dashboard::api: 'http://%{hiera('profile::dashboard::name::v4only')}'

  • profile::dashboard::datadir: '/var/lib/machineadmin'

  • profile::dashboard::database::type: 'mysql'

  • profile::dashboard::database::name: '<mysql-database-name>'

  • profile::dashboard::database::user: '<mysql-database-user>'

  • profile::dashboard::database::pass: '<mysql-database-password>'

  • profile::dashboard::database::host: "%{hiera('profile::haproxy::management::ip')}"

  • profile::dashboard::database::grant: "%"

  • profile::dashboard::django::secret: '<pwgen -1 -y -s 50>'

  • profile::dashboard::ldap::url: 'ldaps://<ldaps-server>:636'

  • profile::dashboard::ldap::search_base: '<LDAP Search base>'

  • profile::dashboard::ldap::domain: '<LDAP domain>'

  • profile::dashboard::name: '<Main dashboard hostname (A and AAAA can be defined for this name)>'

  • profile::dashboard::name::v4only: '<v4-only dashboard hostname (Should only have an A record defined>'

The dashboard requires some service-specific keys in addition to the keys listed with each of the services:

  • profile::dhcp::servers:

    • '<server1-name>': '<server1-IP>'

    • '<server2-name>': '<server2-IP>'

Redis

KeyDescriptionExampleCreated byData-typeUsed by:
profile::redis::masterName or IP address of initial redis master'redis1.cloud.domain.com'
N/A
String

role::redis

profile::redis::nodetypeDefined on each redis-node. Only valid values are 'master' or 'slave''master'N/AStringrole::redis
  • No labels