In short, yes.
When deploying an application, we usually have three (or more; see below) machines involved:
- The development machine
- The staging machine
- The production server(s)
In this very common model, developers write their code on the development machines, push code changes to the staging machine for testing, and finally the tested changes go into production.
To keep gremlins to a minimum, we generally want the servers to be configured as close to identically as possible.
So, you can ssh into each system and install the same software (and the same updates) on each machine, but in production, you may have more than one server (e.g. for load balancing). You may find your app gets popular and you have to scale out to hundreds or thousands of servers. Wouldn't it be nice to be the next Twitter and make millions of dollars?... (oh wait.) But you can't ssh into every one of them anymore to apply your updates if you have several thousand servers, or even a few dozen.
This is where configuration management systems like Puppet and Chef come in. These help you by applying identical configurations to a large number of machines at once (see their respective sites for further details). Once you get beyond the point of needing more than one server, it helps a lot to have a system to keep them all in sync and updated with exactly the software you expect in exactly the configuration you expect.