● Web app depends on services that should be on the server, users access/permissions... ● Capistrano expects folders, rvm to be in a certain location ● You need to deploy many servers with different environments on staging, production... ● Doing all that manually and you're setting yourself for “wtf!wtf! wtf!”...
Deployment ● Master – Run as daemon – Listen on a port – Serve configuration catalogs ● Agent – Connect to master via ssh – Retrieve configuration catalog from master – Can run as a daemon or manually triggered ● Puppet can also run in stand alone mode
Transactional layer ● Agent uses facter to get details about itself ● Agent send “facts” to Master ● Master recognize, compile configuration “catalog” for that agent and send it back ● Agent apply the “catalog” on itself then send a result report back