If you're giving a workshop, I recommend checking out Vagrant, VirtualBox, and puppet or chef for creating the workshop development environment.
Start transitioning from imperative to declarative thinking through the use of Puppet's Exec resource type.
Puppet is a great way to manage server configuration, but the client/server model can be too complex. The standalone Puppet agent can be run with Capistrano.
Gephi can be used to effectively explore Puppet resource dependency chains by visualizing a graph of relationships created by Puppet in the DOT language.
Puppet's automated management of installed applications and libraries can be enhanced with custom package repositories, such as a custom yum repository.
If we simply drop the less than character, we will be providing our script to bash as an argument, leaving standard input untouched. Life is good.