= About inetmgr inetmgr is primarily a library that helps automate the configuration of IIS (7+). It is built on top of the standard IIS configuration API (http://www.iis.net/ConfigReference) but provides a more elegant, ruby-like interface which, typically, can be used from your rake tasks. The inetmgr library lets you inspect add/remove and alter various IIS objects like sites, application pools, bindings, virtual directories, etc. == How to install Get the gem: gem install inetmgr That should do the trick. Another option would be forking the source from the github repository: git clone git@github.com:typesafe/inetmgr.git inetmgr == How to use *_Notes_*: inetmgr requires a Windows machine (well, duh) with IIS7+ and depends on WIN32OLE (obviously), which should be available by default. Inetmgr has only been tested with Ruby version 1.9.2 (on a Windows 7 box). === Create a new site The following code creates a new web site with an http and https binding. Note the use of the +configure+ method to ensure the changes get committed. require 'inetmgr' IisConfiguration.configure do |cfg| cfg.get_sites.add do |site| site.name = "Contoso" site.auto_start = true site.bindings.add do |b| b.protocol = "http" b.binding_information = "*:80:www.******.be" end site.bindings.add do |b| b.protocol = "https" b.binding_information = "*:443:" b.add_ssl_certificate "e2564766bad7ebec8cf6899caa2a27c6391c4f19", "MY" end site.applications.add do |app| app.path = "/" app.virtual_directories.add do |dir| dir.path = "/" dir.physical_path = "D:\\sites\\www.******.be" end end end end === Print the currently configured pools This code sample print the currently configured pools. Note the use of a newed configuration instance (since were not applying any changes). require 'inetmgr' cfg = IisConfiguration.new pools = cfg.get_application_pools pools.each do |p| puts "\r\nPOOL: #{p.name}" puts "----" puts " - auto_start:\t #{p.auto_start}" puts " - always_running:\t #{p.always_running}" puts " - CLRConfigFile:\t #{p.CLRConfigFile}" # not yet mapped puts " - enable_32bit:\t #{p.enable_32bit}" puts " - enableConfigurationOverride:\t #{p.enableConfigurationOverride}" # not yet mapped puts " - classic_pipeline:\t #{p.classic_pipeline}" puts " - runtime_version:\t #{p.runtime_version}" puts " - passAnonymousToken:\t #{p.passAnonymousToken}" puts "\r\n - process_model:" puts " - identity_type: #{p.process_model.identity_type}" puts " - idleTimeout: #{p.process_model.idleTimeout}" puts " - logon_type: #{p.process_model.logon_type}" puts " - user_name '#{p.process_model.user_name}'" puts " - password '#{p.process_model.password.gsub(/./, '*')}'" puts " - load_user_profile: #{p.process_model.load_user_profile}" puts "\r\n - recycling:" puts " - logEventOnRecycle: #{p.recycling.logEventOnRecycle}" puts " - periodic_restart.schedulecount: #{p.recycling.periodic_restart.schedule.size}" puts "----------------------------" end The output of the above code would be something like the following: POOL: static.******.be ---- - auto_start: false - always_running: false - CLRConfigFile: - enable_32bit: false - enableConfigurationOverride: true - classic_pipeline: false - runtime_version: - passAnonymousToken: true - process_model: - identity_type: application_pool_identity - idleTimeout: 12000000000 - logon_type: batch - user_name '' - password '' - load_user_profile: false - recycling: - logEventOnRecycle: 137 - periodic_restart.schedulecount: 0 ---------------------------- POOL: www.******.be ---- - auto_start: false - always_running: true - CLRConfigFile: - enable_32bit: false - enableConfigurationOverride: true - classic_pipeline: false - runtime_version: v4.0 - passAnonymousToken: true - process_model: - identity_type: specific_user - idleTimeout: 12000000000 - logon_type: batch - user_name 'gino' - password '*********' - load_user_profile: false - recycling: - logEventOnRecycle: 137 - periodic_restart.schedulecount: 0 ---------------------------- == License Copyright (c) 2010 Gino Heyman. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.