-
Git
All of the version control and internal branching relies on Git version control.
-
Puppet
Puppet does all of the heavy lifting of configuration management. Current operational major version is 5.5, with an expectation of moving to 6 when it appropriately stabilizes due to Puppetlab's constant march forward.
The documetnation made by Puppetlabs is incredibly detailed and quite accessible.
-
r10k
r10k bridges the steps of "putting stuff into git" and "running on puppetmaster", along with managing puppet module dependencies through puppet librarian
Machines are configured through hiera. This includes specific non-manifest configuration tunables, and what classes get to run on the machine.
All of this is stored in hieradata/nodes/
An example of a new Asterisk 11 machine:
classes:
- 'profile::asterisk'
asterisk_version: 11
firewall:
public_interface: bond0.200 # publicly routed, but not clustered
private_interface: bond0.100 # privately routed
voip_interface: bond0.200 # publicy routed & clustered
This is a more or less bare minimum asterisk configuration. Though the asterisk_verison variable can be removed since as you can see from hiera elsewhere, the default is "16".
The "classes" array is basically how roles are configured, and the firewall hash specifies the relevant interfaces.
So the basic flow for this is:
- Create the machine configuration
- Commit it to git (see: git tutorial) in the relevant branch.
- Deploy with r10k on the puppetmaster:
r10k deploy environment -p - Force an update on the machine with
puppet agent -t