I prefer using Ansible for orchestration, and Puppet for configuration management.
-`playbooks/roles/apply_puppet` runs Puppet using Ansible.
-The `puppet` directory contains Puppet manifests.
+* `up.py` compiles Puppet catalogs without a Puppet Server.
+* `pseudo_resource_exporter.py` simulates exported resources on the catalogs generated by `up.py`.
+ You can use this script as a template to implement your own catalog manipulations.
+* `playbooks/roles/apply_puppet/` uses `up.py` to apply Puppet to Ansible hosts.
+ This script collects facts, adds the Ansible inventory to Hiera (so you can use Ansible inventory data to parameterize Puppet), compiles the catalogs, ships them to Ansible nodes, and executes Puppet.
-The role adds the Ansible inventory to Puppet using Hiera.
+Except for exported resources, which work differently, this setup has most of the benefits of Puppet Server without having to run a Puppet Server and PuppetDB.
+
+Being able to simulate exported resources without a master lets you use the `nagios_core` module without infrastructure.
+With the `nagios_core` module, Puppet code, such as a module which sets up a web server, can define "inline" Puppet monitoring for the managed resources.