A puppet master and its agent living their life inside their docker container.
First, create a container for the master: See master/Readme.
When it's done, it is now possible to start a container with the agent: See agent/Readme.
Once you have a master and a slave running.
Connect to master with ssh and list certificates:
puppet cert --list
You should see your agent, so sign its certificate.
puppet cert --sign agent
Your agent should now be able to get its catalog from the master and apply the configuration.
Debugging puppet agent :
puppet agent --verbose --no-daemonize
It's not possible to edit /etc/hosts in a container. Discussed here.
You cannot modify ulimit from within a container.