Satellite has the capability to make facts available to puppet-clients through its ENC.
This process however is not documented well on Satellite’s , nor on Puppets documentation.
Take for example a class on the puppet-forge that requires some input for optional couplings:
This class has some optional parameters:
#
# $ldap = {
# hostname => 'ldap.example.com',
# ssl => true,
# port => '636',
# dn => 'o=example',
# bind_dn => "cn=admin,ou=system,o=example",
# bind_password => "admin123",
# admin_user => "sysadmin",
# guest_user => "guest"
# }
Many blocks on the puppet forge have code like this, its a hash with values that should be enabled.
The puppet-initiates who have not yet fully grasped satellite, might implement it as following.
Create a new class, for instance:
class oliekoets_archiva { 'archiva::ldap' :
hostname => 'ldap.oliekoets.nl',
ssl => true,
dn => 'cn=users,cn=accounts,dc=oliekoets,dc=nl'
....
This however, is completely unnessecary in Satellite with the ENC.
Within satellite, override the archiva::ldap variable and change its type from ‘string’ to ‘hash’
Now the hash-type accepts any valid json or yaml input, as long as it validates to a legal puppet object.
Here we go:
ldap:
hostname:
- ldap.oliekoets.nl
- ldap2.oliekoets.nl
ssl: true
port: 636
dn: cn=users,cn=accounts,dc=oliekoets,dc=nl
....
Doublecheck by asking satellite to display its YAML enc:
---
classes:
archiva:
ldap:
hostname:
- ldap.oliekoets.nl
- ldap2.oliekoets.nl
ssl: true port: 636
dn: cn=users,cn=accounts,dc=oliekoets,dc=nl
....
And thats all there is to it.
Mark.
