I have a set of servers with Red Hat on board and an internal software (it is set of many files with configs and so on) that is in permanent development.There are several types of servers:developmenttestingpost-testingproductionThere are up to 10 servers in each category, but each server works separately and doesn't depend from others. Furtermore in each stream I can have a minor subversions that are tagged in cvs repository. So I can't just build an testing.rpm for all testing servers and prod.rpm for all productions.Anyway I can see several ways to do that:Make own rpm repository, automatically build a set rpm packages for every server type and its subversion and use a cron to update a package.Use a shell script with own config on each server to do thatMake update manually :)Which one is better? Or all of them are completely wrong and there is another way? :)
Software distribution
software installation;rpm;upgrade;deployment
There are multiple things you should consider:Start using a Continuous Integration software for building your software, e.g. Jenkins, Buildbot or other things.Create dedicated repositories for your stages - based on your comment it may help to to the deployment at least for the dev and maybe test stage via your CI tool and for the later stages via automatic updates.Use something like spacewalk or unattended-upgrades or similar tools to keep your systems up to date. Don't use manual cron scripts or login into a system. You can also use puppet instead of spacewalk to ensure you have the latest version of a package installed.Use puppet/chef/ for the configuration and package specification. You can for example simple specify to have the latest package version installed with puppet or add a specific repository to all your testing servers etc.The most important thing is to automate everything as good as possible. You should use a configuration management system like puppet or chef because this simplifies and automates the deployment of new systems, e.g. you just have to run puppet once and the server is set up like an production system.