Нужно использовать по-мимо puppet'а еще тул для разворачивания. Puppet — это «наполнятель» (provisioning). Т.е. это конфигурация системы в коде. Из-за этого принята модель обновления конфигурации раз в полчаса и т.п.
Деплой приложения — это отдельная задача. Для нее есть MCollective, который раньше был в составе паппета, а теперь развивается отдельно. Он уже позволяет выполнять деплой по вызову на несколько машин, управляемых этим MCollective'ом. Аналогом этого тула как раз является Capistrano.
Почитайте в книге Pro Puppet, как используется там MCollective.