You can do this with something like Clonezilla (as mentioned already), but think about if this is really something you want to be doing. What you're describing can be done with images, but it works a lot better if you start using some type of configuration management (or even some kickstart/preseed scripts).
The problem with the image is that it will generally only work on certain hardware combinations. Have a new server with a smaller hard drive, or a significantly different configuration? You may have to recreate the entire image from scratch, whereas with Puppet there would be no extra effort.
We used to use images for everything like you're describing. Keeping track of the various images (and keeping them up to date) was becoming a giant pain. We've switched to various other methods (manual scripts, configuration management, kickstart scripts), and everything has been working a lot better.