If you have a large number of identical hardware machines to image - a
multicast solution that allows defining build rules (ie static network
addresses, hostname, /etc/host, passwords, usernames, network shares and
logons etc)
might save time and make management easier. eg. FAI (most excellent)
Clonezilla SE (excellent), systemimager (I haven't used), and others.
For identical software and different hardware using a package list (dpkg
--get-selections> package.list) can be used.
For large deployments consider Puppet (very good, especially in mixed
environments).