There are a bunch of options here and the 'correct' answer depends upon your specific needs. Some of the earlier posters touched on some of them, but i wanted to add a bit. Note, all of this applies to iis 7 and up.
The idea here is that you can take a web servers configuration and export it to an XML config file. Then point all web servers you want to mimic your config to the shared file (on a UNC somewhere).
- (+) Super simple to learn and setup
- (-) It won't ensure components are installed on all the web servers
- (-) It won't ensure content is synchronized across your web servers
- (+/-) Customization between servers is limited (you'll want to look at the link @Vivek posted that explains what configuration is actually synchronized.
IIS Web Farm Framework 2
The idea here is that you setup "primary" and "Secondary" servers. All configuration changes are made on the primary server then 'replicated' to the other servers in the farm. http://www.iis.net/download/WebFarmFramework
- (+) Simple user interface and setup
- (+) Everything from the primary server is replicated to the secondary servers. This includes what IIS components are installed, what was added through the web platform installer, and content.
- (-) You're left without a scripted repeatable config if your primary server gets hosed.
- (-) As of this post the product is new and I've found documentation/blogumentation to be pretty sparse.
WebDeploy 2 (aka MSDeploy)
This is the swiss army knife of solutions. It is designed to do lots of things - migrate from iis 6 to 7, package web apps for deploy, and synchronize web farms. I suspect that this is the backbone of the code most other MS options.
- (+) Full access to IIS
- (+) generate scriptable, repeatable deployments for multiple servers
- (+) good deep documentation
- (+) integrates with Web Farm Framework for application provisioning
- (-) learning curve of another command line tool
PowerShell w/ the WebAdministration Snapin
IIS is fully exposed here, so the world is your oyster. Whatever you can dream up you can script.
- (+) ultimate flexability & extrodinary control
- (+) can be executed against remote computers from a single location
- (-) learning curve of powershell & the WebAdministration snapin.
This is pretty much the same thing as powershell, so i won't go into any detail here, the real difference is that it doesn't support remote execution (i.e. you need to get your script to run on each web server).
Anyway, I know i'm late to the party, but hope that helps.