Puppet¶
Purpose¶
This system acts as Puppet master for infrastructure systems.
Application Links¶
This system has no publicly visible URLs.
Administration¶
System Administration¶
Primary: Jan Dittberner
Secondary: None
Todo
find an additional admin
Application Administration¶
Application |
Administrator(s) |
---|---|
Puppet server |
|
PuppetDB |
Contact¶
Additional People¶
No additional people have sudo access on that machine.
Basics¶
Physical Location¶
This system is located in an LXC container on physical machine Infra02.
Logical Location¶
- IP Internet:
None
- IP Intranet:
None
- IP Internal:
- IPv6:
- MAC address:
00:ff:f9:32:9d:2a
(eth0)
See also
See Network
Monitoring¶
- internal checks:
DNS¶
Name |
Type |
Content |
---|---|---|
puppet.infra.cacert.org. |
IN A |
10.0.0.200 |
See also
Operating System¶
Debian GNU/Linux 11 Bullseye
Services¶
Listening services¶
Port |
Service |
Origin |
Purpose |
---|---|---|---|
22/tcp |
ssh |
ANY |
admin console access |
25/tcp |
smtp |
local |
mail delivery to local MTA |
5432/tcp |
pgsql |
local |
PostgreSQL database for PuppetDB |
5665/tcp |
icinga2 |
monitor |
remote monitoring service |
8000/tcp |
git-hook |
internal |
HTTP endpoint for git-pull-hook |
8080/tcp |
puppetdb |
local |
HTTP endpoint for local PuppetDB queries |
8081/tcp |
puppetdb |
internal |
HTTPS endpoint for PuppetDB |
8140/tcp |
puppet |
internal |
Puppet master |
Running services¶
Service |
Usage |
Start mechanism |
---|---|---|
cron |
job scheduler |
systemd unit |
dbus |
system message bus |
systemd unit |
Exim |
SMTP server for local mail submission |
systemd unit |
git-pull-hook |
Custom Python3 hook to pull git changes from the cacert-puppet repository |
systemd unit |
icinga2 |
Icinga2 monitoring agent |
systemd unit |
openssh server |
ssh daemon for remote administration |
systemd unit |
PostgreSQL |
PostgreSQL database server for PuppetDB |
systemd unit |
Puppet agent |
local Puppet agent |
systemd unit |
PuppetDB |
PuppetDB for querying Puppet facts, nodes and resources |
systemd unit |
Puppet server |
Puppet master for infrastructure systems |
systemd unit |
rsyslog |
syslog daemon |
init script
|
Databases¶
RDBMS |
Name |
Used for |
---|---|---|
PostgreSQL |
puppetdb |
PuppetDB database |
Connected Systems¶
Outbound network connections¶
Security¶
SSH host keys¶
Algorithm |
Fingerprints |
---|---|
RSA |
|
DSA |
- |
ECDSA |
|
ED25519 |
|
See also
Non-distribution packages and modifications¶
The Puppet server, Puppet agent and PuppetDB packages and a few dependencies are installed from the official Puppet APT repository because the versions in Debian are too old to use modern Puppet features.
Some rubygems are installed via the puppet specific ruby gem binary to support advanced Puppet functionality like hiera-eyaml.
All puppet related code is installed in the Puppet specific /opt/puppetlabs tree.
Risk assessments on critical packages¶
The system uses third party packages with a good security track record and regular updates. The attack surface is small due to the tightly restricted access to the system.
Critical Configuration items¶
Keys and X.509 certificates¶
Puppet comes with its own inbuilt special purpose CA that is used to sign the Puppet server and Puppet DB certificates as well as the certificates of all trusted Puppet agents.
The CA data is stored in /etc/puppetlabs/puppet/ssl
and managed by
puppet itself.
Eyaml private key¶
All sensitive data like passwords in Hiera data is encrypted using the public
key in keys/public_key.pkcs7.pem
in the CAcert puppet Git repository. The corresponding
private key is stored in
/etc/puppetlabs/code/environments/production/keys/private_key.pkcs7.pem
.
hiera configuration¶
Puppet uses Hiera for hierarchical information retrieval. The global hiera
configuration is stored in /etc/puppetlabs/puppet/hiera.yaml
and
defines the hierarchy lookup as well as the eyaml key locations.
puppet configuration¶
All puppet configuration is stored in /etc/puppetlabs/
. The CAcert
specific puppet code is taken from the CAcert puppet Git repository and cloned to
/etc/puppetlabs/code/environments/production/
directory. Required
Puppet modules are installed by /opt/puppetlabs/puppet/bin/r10k.
The puppet code should follow best practices like the Roles and profiles pattern (see references below) and code/data separation via Hiera.
Updates to the cacert-puppet repository trigger a web hook listening on tcp port 8000 that automatically updates the production environment directory.
Tasks¶
Todo
add a section to describe how to add a system for puppet management
Changes¶
Planned¶
migrate as many systems as possible to use Puppet for a more reproducible/auditable system setup
System Future¶
Improve setup, use more widely
Additional documentation¶
See also