These days automated provision and configuration management (which includes installed software) has evolved greatly.
To provision a CentOS machine I would typically:
- register a new system in
- create a A/AAA DNS entry, a host entry and a
puppet service entry for this host in
- PXE boot the machine (virtual or physical, the method applies)
- Sit back and relax.
For this to work, though, I have previously:
- created a
kickstart file/template in
cobbler for this system, or profile of systems.
- ensured that a local mirror exists for all the repositories I'm going to need (not mandatory, but very helpful)
- defined all the configuration that applies to this host in the
- defined all the information related to
sudo rules, HBAC,
ssh key management, SELinux user mappings, etc in the Identity Manager.
This infrastructure provides centralized services, and a reproducible, (almost) unattended way of installing a machine.
puppet code is optimized, you will end up with a system containing all the software you consider necessary for a host before the first boot.