Puppetizing ntpd on Solaris 11.4
Last time we configured a Puppet master, see Puppet Master on Solaris 11.3 SRU 23.
Let's do some basic configuration with Puppet today. I'm doing this on Solaris 11.4 Beta with Puppet 5.3.3 so some paths on the master are slightly different. Keep this in mind when you're still on Solaris 11.3.
First things first, setup hiera.
root@master # cat /etc/puppetlabs/puppet/hiera.yaml
---
version: 5
defaults:
datadir: /var/lib/hiera
data_hash: yaml_data
hierarchy:
- name: "Per-node data"
path: "nodes/%{trusted.certname}.yaml"
- name: "Per-net data"
paths:
- "net/%{::network_net0}.yaml"
- "net/%{::network_ipmp0}.yaml"
- name: "Other YAML hierarchy levels"
path: "common.yaml"
root@master # cat /var/lib/hiera/common.yaml
---
classes:
- ntp
# https://forge.puppetlabs.com/puppetlabs/ntp
ntp::enable: true
ntp::iburst_enable: true
# fix "ntpd[12345]: [ID 702911 daemon.warning] restrict default: KOD does nothing without LIMITED."
ntp::restrict:
- default nomodify notrap nopeer noquery
- -6 default nomodify notrap nopeer noquery
- 127.0.0.1
- -6 ::1
ntp::servers:
- 10.1.2.3
- 10.4.5.6
root@master # cat /var/lib/hiera/net/192.168.1.0.yaml
---
ntp::servers:
- 192.168.1.1
I pulled a lot of hair out while figuring this out... when changing hiera.yaml you have to restart puppet!
Puppet master note: If you modify hiera.yaml between agent runs, you’ll have to restart your Puppet master for your changes to take effect.
And we're almost done. We just have to add one line to site.pp and restart puppet:master because we changed hiera.yaml.
root@master # cat /etc/puppetlabs/code/environments/production/manifests/site.pp
include(lookup('classes', Array[String], 'unique'))
root@master # svcadm restart puppet:master
root@master # tail /var/log/puppetlabs/puppet/puppet-master.log
2018-05-18 13:09:22 +0200 Puppet (notice): Starting Puppet master version 5.3.3
Let's hop on to the agent and see if it works.
# puppet agent --test --noop --server master.mycompany.com
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Applying configuration version '1526649508'
Notice: /Stage[main]/Ntp::Config/File[/etc/inet/ntp.conf]/ensure: current_value 'absent', should be 'file' (noop)
Notice: Class[Ntp::Config]: Would have triggered 'refresh' from 1 event
Info: Class[Ntp::Config]: Scheduling refresh of Class[Ntp::Service]
Notice: Class[Ntp::Service]: Would have triggered 'refresh' from 1 event
Info: Class[Ntp::Service]: Scheduling refresh of Service[ntp]
Notice: /Stage[main]/Ntp::Service/Service[ntp]/ensure: current_value 'stopped', should be 'running' (noop)
Info: /Stage[main]/Ntp::Service/Service[ntp]: Unscheduling refresh on Service[ntp]
Notice: Class[Ntp::Service]: Would have triggered 'refresh' from 1 event
Notice: Class[Ntp]: Would have triggered 'refresh' from 2 events
Notice: Stage[main]: Would have triggered 'refresh' from 3 events
Notice: Applied catalog in 1.90 seconds
# svcadm enable puppet:agent
# svcs ntp
STATE STIME FMRI
online 15:19:34 svc:/network/ntp:default
# ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.1.1 LOCAL(0) 2 u 58 64 377 1.010 0.017 0.037
Neat, we have puppetized NTP with a few lines of code.
No comments:
Post a Comment