#!/usr/bin/python # -*- coding: utf-8 -*- # Copyright: (c) 2015, Henrik Wallström # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) ANSIBLE_METADATA = {'metadata_version': '1.1', 'status': ['preview'], 'supported_by': 'community'} DOCUMENTATION = r''' --- module: win_iis_webapppool version_added: "2.0" short_description: Configure IIS Web Application Pools description: - Creates, removes and configures an IIS Web Application Pool. options: attributes: description: - This field is a free form dictionary value for the application pool attributes. - These attributes are based on the naming standard at U(https://www.iis.net/configreference/system.applicationhost/applicationpools/add#005), see the examples section for more details on how to set this. - You can also set the attributes of child elements like cpu and processModel, see the examples to see how it is done. - While you can use the numeric values for enums it is recommended to use the enum name itself, e.g. use SpecificUser instead of 3 for processModel.identityType. - managedPipelineMode may be either "Integrated" or "Classic". - startMode may be either "OnDemand" or "AlwaysRunning". - Use C(state) module parameter to modify the state of the app pool. - When trying to set 'processModel.password' and you receive a 'Value does fall within the expected range' error, you have a corrupted keystore. Please follow U(http://structuredsight.com/2014/10/26/im-out-of-range-youre-out-of-range/) to help fix your host. name: description: - Name of the application pool. required: yes state: choices: [ absent, present, restarted, started, stopped ] default: present description: - The state of the application pool. - If C(absent) will ensure the app pool is removed. - If C(present) will ensure the app pool is configured and exists. - If C(restarted) will ensure the app pool exists and will restart, this is never idempotent. - If C(started) will ensure the app pool exists and is started. - If C(stopped) will ensure the app pool exists and is stopped. author: - Henrik Wallström (@henrikwallstrom) - Jordan Borean (@jborean93) ''' EXAMPLES = r''' - name: return information about an existing application pool win_iis_webapppool: name: DefaultAppPool state: present - name: create a new application pool in 'Started' state win_iis_webapppool: name: AppPool state: started - name: stop an application pool win_iis_webapppool: name: AppPool state: stopped - name: restart an application pool (non-idempotent) win_iis_webapppool: name: AppPool state: restart - name: change application pool attributes using new dict style win_iis_webapppool: name: AppPool attributes: managedRuntimeVersion: v4.0 autoStart: no - name: creates an application pool, sets attributes and starts it win_iis_webapppool: name: AnotherAppPool state: started attributes: managedRuntimeVersion: v4.0 autoStart: no # In the below example we are setting attributes in child element processModel # https://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel - name: manage child element and set identity of application pool win_iis_webapppool: name: IdentitiyAppPool state: started attributes: managedPipelineMode: Classic processModel.identityType: SpecificUser processModel.userName: '{{ansible_user}}' processModel.password: '{{ansible_password}}' processModel.loadUserProfile: True - name: manage a timespan attribute win_iis_webapppool: name: TimespanAppPool state: started attributes: # Timespan with full string "day:hour:minute:second.millisecond" recycling.periodicRestart.time: "00:00:05:00.000000" recycling.periodicRestart.schedule: ["00:10:00", "05:30:00"] # Shortened timespan "hour:minute:second" processModel.pingResponseTime: "00:03:00" ''' RETURN = r''' attributes: description: Application Pool attributes that were set and processed by this module invocation. returned: success type: dictionary sample: enable32BitAppOnWin64: "true" managedRuntimeVersion: "v4.0" managedPipelineMode: "Classic" info: description: Information on current state of the Application Pool. See https://www.iis.net/configreference/system.applicationhost/applicationpools/add#005 for the full list of return attributes based on your IIS version. returned: success type: complex sample: contains: attributes: description: Key value pairs showing the current Application Pool attributes. returned: success type: dictionary sample: autoStart: true managedRuntimeLoader: "webengine4.dll" managedPipelineMode: "Classic" name: "DefaultAppPool" CLRConfigFile: "" passAnonymousToken: true applicationPoolSid: "S-1-5-82-1352790163-598702362-1775843902-1923651883-1762956711" queueLength: 1000 managedRuntimeVersion: "v4.0" state: "Started" enableConfigurationOverride: true startMode: "OnDemand" enable32BitAppOnWin64: true cpu: description: Key value pairs showing the current Application Pool cpu attributes. returned: success type: dictionary sample: action: "NoAction" limit: 0 resetInterval: Days: 0 Hours: 0 failure: description: Key value pairs showing the current Application Pool failure attributes. returned: success type: dictionary sample: autoShutdownExe: "" orphanActionExe: "" rapidFailProtextionInterval: Days: 0 Hours: 0 name: description: Name of Application Pool that was processed by this module invocation. returned: success type: string sample: "DefaultAppPool" processModel: description: Key value pairs showing the current Application Pool processModel attributes. returned: success type: dictionary sample: identityType: "ApplicationPoolIdentity" logonType: "LogonBatch" pingInterval: Days: 0 Hours: 0 recycling: description: Key value pairs showing the current Application Pool recycling attributes. returned: success type: dictionary sample: disallowOverlappingRotation: false disallowRotationOnConfigChange: false logEventOnRecycle: "Time,Requests,Schedule,Memory,IsapiUnhealthy,OnDemand,ConfigChange,PrivateMemory" state: description: Current runtime state of the pool as the module completed. returned: success type: string sample: "Started" '''