mirror of https://github.com/ansible/ansible.git
win_iis_webapppool: tests, check_mode, bugfixes (#25869)
* win_iis_webapppool: Added integration testa and cleanup * Updated docs and tests * fixes from linter * fixed up typo in docspull/22685/head
parent
b0db1a1cf6
commit
f0a0e5674c
@ -0,0 +1 @@
|
||||
windows/ci/group1
|
@ -0,0 +1 @@
|
||||
test_iis_webapppool_name: TestPool
|
@ -0,0 +1,61 @@
|
||||
---
|
||||
# Cannot use win_feature to install IIS on Server 2008.
|
||||
# Run a brief check and skip hosts that don't support
|
||||
# that operation
|
||||
- name: check if win_feature will work on test host
|
||||
win_command: powershell.exe "Get-WindowsFeature"
|
||||
register: module_available
|
||||
failed_when: False
|
||||
|
||||
# Run actual tests
|
||||
- block:
|
||||
# Setup for tests
|
||||
- name: this is too finicky reboot before feature install
|
||||
win_reboot:
|
||||
|
||||
- name: ensure IIS features are installed
|
||||
win_feature:
|
||||
name: Web-Server
|
||||
state: present
|
||||
includ_sub_features: True
|
||||
include_management_tools: True
|
||||
register: feature_install
|
||||
|
||||
- name: reboot after feature install
|
||||
win_reboot:
|
||||
when: feature_install.reboot_required
|
||||
|
||||
- name: set version of IIS for tests
|
||||
win_file_version:
|
||||
path: C:\Windows\System32\inetsrv\w3wp.exe
|
||||
register: iis_version
|
||||
|
||||
- name: ensure test pool is deleted as a baseline
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: absent
|
||||
|
||||
# Tests
|
||||
- name: run tests on hosts that support it
|
||||
include_tasks: tests.yml
|
||||
|
||||
always:
|
||||
# Cleanup
|
||||
- name: ensure test pool is deleted
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: absent
|
||||
|
||||
- name: remove IIS features after test
|
||||
win_feature:
|
||||
name: Web-Server
|
||||
state: absent
|
||||
includ_sub_features: True
|
||||
include_management_tools: True
|
||||
register: feature_uninstall
|
||||
|
||||
- name: reboot after feature install
|
||||
win_reboot:
|
||||
when: feature_uninstall.reboot_required
|
||||
|
||||
when: module_available.rc == 0
|
@ -0,0 +1,414 @@
|
||||
---
|
||||
- name: create default pool check
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: started
|
||||
register: create_default_check
|
||||
check_mode: yes
|
||||
|
||||
- name: get actual of create default pool check
|
||||
win_command: powershell.exe "Import-Module WebAdministration; Get-Item -Path IIS:\AppPools\{{test_iis_webapppool_name}}"
|
||||
register: create_default_actual_check
|
||||
failed_when: False
|
||||
|
||||
- name: assert create default pool check
|
||||
assert:
|
||||
that:
|
||||
- create_default_check|changed
|
||||
- create_default_actual_check.rc == 1
|
||||
|
||||
- name: create default pool
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
register: create_default
|
||||
|
||||
- name: get actual of create default pool
|
||||
win_command: powershell.exe "Import-Module WebAdministration; Get-Item -Path IIS:\AppPools\{{test_iis_webapppool_name}}"
|
||||
register: create_default_actual
|
||||
failed_when: False
|
||||
|
||||
- name: assert create default pool
|
||||
assert:
|
||||
that:
|
||||
- create_default|changed
|
||||
- create_default.info.attributes.name == test_iis_webapppool_name
|
||||
- create_default.info.attributes.startMode == 'OnDemand'
|
||||
- create_default.info.attributes.state == 'Started'
|
||||
- create_default_actual.rc == 0
|
||||
|
||||
- name: change attributes of pool check
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes:
|
||||
managedPipelineMode: 1 # Using an enum value
|
||||
cpu.limit: 95 # Nested values
|
||||
processModel.identityType: LocalSystem # Using an enum name
|
||||
processModel.loadUserProfile: True
|
||||
register: change_pool_attributes_check
|
||||
check_mode: yes
|
||||
|
||||
- name: assert change attributes of pool check
|
||||
assert:
|
||||
that:
|
||||
- change_pool_attributes_check|changed
|
||||
- change_pool_attributes_check.info == create_default.info
|
||||
|
||||
- name: change attributes of pool
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes:
|
||||
managedPipelineMode: 1 # Using an enum value
|
||||
cpu.limit: 95 # Nested values
|
||||
processModel.identityType: LocalSystem # Using an enum name
|
||||
processModel.loadUserProfile: True
|
||||
test: True
|
||||
register: change_pool_attributes
|
||||
|
||||
- name: assert change attributes of pool
|
||||
assert:
|
||||
that:
|
||||
- change_pool_attributes|changed
|
||||
- change_pool_attributes.info.attributes.managedPipelineMode == 'Classic'
|
||||
- change_pool_attributes.info.cpu.limit == 95
|
||||
- change_pool_attributes.info.processModel.identityType == 'LocalSystem'
|
||||
- change_pool_attributes.info.processModel.loadUserProfile == True
|
||||
|
||||
- name: change attributes of pool again
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes:
|
||||
managedPipelineMode: 1 # Using an enum value
|
||||
cpu.limit: 95 # Nested values
|
||||
processModel.identityType: LocalSystem # Using an enum name
|
||||
processModel.loadUserProfile: True
|
||||
register: change_pool_attributes_again
|
||||
|
||||
- name: assert change attributes of pool again
|
||||
assert:
|
||||
that:
|
||||
- not change_pool_attributes_again|changed
|
||||
- change_pool_attributes_again.info == change_pool_attributes.info
|
||||
|
||||
- name: change attributes of pool (old style) check
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes: "managedPipelineMode:0|startMode:OnDemand|cpu.limit:0|processModel.identityType:NetworkService"
|
||||
register: change_pool_attributes_deprecated_check
|
||||
check_mode: yes
|
||||
|
||||
- name: assert change attributes of pool (old style) check
|
||||
assert:
|
||||
that:
|
||||
- change_pool_attributes_deprecated_check|changed
|
||||
- change_pool_attributes_deprecated_check.info == change_pool_attributes_again.info
|
||||
|
||||
- name: change attributes of pool (old style)
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes: "managedPipelineMode:0|startMode:OnDemand|cpu.limit:10|processModel.identityType:NetworkService"
|
||||
register: change_pool_attributes_deprecated
|
||||
|
||||
- name: assert change attributes of pool (old style)
|
||||
assert:
|
||||
that:
|
||||
- change_pool_attributes_deprecated|changed
|
||||
- change_pool_attributes_deprecated.info.attributes.managedPipelineMode == 'Integrated'
|
||||
- change_pool_attributes_deprecated.info.attributes.startMode == 'OnDemand'
|
||||
- change_pool_attributes_deprecated.info.cpu.limit == 10
|
||||
- change_pool_attributes_deprecated.info.processModel.identityType == 'NetworkService'
|
||||
|
||||
- name: change attributes of pool (old style) again
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes: "managedPipelineMode:0|startMode:OnDemand|cpu.limit:10|processModel.identityType:NetworkService"
|
||||
register: change_pool_attributes_deprecated_again
|
||||
|
||||
- name: assert change attributes of pool (old style) again
|
||||
assert:
|
||||
that:
|
||||
- not change_pool_attributes_deprecated_again|changed
|
||||
- change_pool_attributes_deprecated_again.info == change_pool_attributes_deprecated.info
|
||||
|
||||
- name: change more complex variables check
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes:
|
||||
queueLength: 500
|
||||
recycling.periodicRestart.requests: 10 # Deeply nested attribute
|
||||
recycling.periodicRestart.time: "00:00:05:00.000000" # Timespan with string
|
||||
processModel.pingResponseTime: "00:03:00" # Timespan without days or milliseconds
|
||||
register: change_complex_attributes_check
|
||||
check_mode: yes
|
||||
|
||||
- name: assert change more complex variables check
|
||||
assert:
|
||||
that:
|
||||
- change_complex_attributes_check|changed
|
||||
- change_complex_attributes_check.info == change_pool_attributes_deprecated_again.info
|
||||
|
||||
- name: change more complex variables
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes:
|
||||
queueLength: 500
|
||||
recycling.periodicRestart.requests: 10 # Deeply nested attribute
|
||||
recycling.periodicRestart.time: "00:00:05:00.000000" # Timespan with string
|
||||
processModel.pingResponseTime: "00:03:00" # Timespan without days or milliseconds
|
||||
register: change_complex_attributes
|
||||
|
||||
- name: assert change more complex variables
|
||||
assert:
|
||||
that:
|
||||
- change_complex_attributes|changed
|
||||
- change_complex_attributes.info.attributes.queueLength == 500
|
||||
- change_complex_attributes.info.recycling.periodicRestart.requests == 10
|
||||
- change_complex_attributes.info.recycling.periodicRestart.time.TotalSeconds == 300
|
||||
- change_complex_attributes.info.processModel.pingResponseTime.TotalSeconds == 180
|
||||
|
||||
- name: change more complex variables again
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes:
|
||||
queueLength: 500
|
||||
recycling.periodicRestart.requests: 10 # Deeply nested attribute
|
||||
recycling.periodicRestart.time: "00:00:05:00.000000" # Timespan with string
|
||||
processModel.pingResponseTime: "00:03:00" # Timespan without days or milliseconds
|
||||
register: change_complex_attributes_again
|
||||
|
||||
- name: assert change more complex variables again
|
||||
assert:
|
||||
that:
|
||||
- not change_complex_attributes_again|changed
|
||||
- change_complex_attributes_again.info == change_complex_attributes.info
|
||||
|
||||
- name: stop web pool check
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: stopped
|
||||
register: stop_pool_check
|
||||
check_mode: yes
|
||||
|
||||
- name: get actual status of pool check
|
||||
win_command: powershell.exe "Import-Module WebAdministration; (Get-Item -Path IIS:\AppPools\{{test_iis_webapppool_name}}).state"
|
||||
register: stop_pool_actual_check
|
||||
|
||||
- name: assert stop web pool check
|
||||
assert:
|
||||
that:
|
||||
- stop_pool_check|changed
|
||||
- stop_pool_actual_check.stdout == 'Started\r\n'
|
||||
|
||||
- name: stop web pool
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: stopped
|
||||
register: stop_pool
|
||||
|
||||
- name: get actual status of pool
|
||||
win_command: powershell.exe "Import-Module WebAdministration; (Get-Item -Path IIS:\AppPools\{{test_iis_webapppool_name}}).state"
|
||||
register: stop_pool_actual
|
||||
|
||||
- name: assert stop web pool
|
||||
assert:
|
||||
that:
|
||||
- stop_pool|changed
|
||||
- stop_pool_actual.stdout == 'Stopped\r\n'
|
||||
|
||||
- name: stop web pool again
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: stopped
|
||||
register: stop_pool_again
|
||||
|
||||
- name: get actual status of pool again
|
||||
win_command: powershell.exe "Import-Module WebAdministration; (Get-Item -Path IIS:\AppPools\{{test_iis_webapppool_name}}).state"
|
||||
register: stop_pool_actual_again
|
||||
|
||||
- name: assert stop web pool again
|
||||
assert:
|
||||
that:
|
||||
- not stop_pool_again|changed
|
||||
- stop_pool_actual_again.stdout == 'Stopped\r\n'
|
||||
|
||||
- name: start web pool check
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: started
|
||||
register: start_pool_check
|
||||
check_mode: yes
|
||||
|
||||
- name: get actual status of pool check
|
||||
win_command: powershell.exe "Import-Module WebAdministration; (Get-Item -Path IIS:\AppPools\{{test_iis_webapppool_name}}).state"
|
||||
register: start_pool_actual_check
|
||||
|
||||
- name: assert start web pool check
|
||||
assert:
|
||||
that:
|
||||
- start_pool_check|changed
|
||||
- start_pool_actual_check.stdout == 'Stopped\r\n'
|
||||
|
||||
- name: start web pool
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: started
|
||||
register: start_pool
|
||||
|
||||
- name: get actual status of pool
|
||||
win_command: powershell.exe "Import-Module WebAdministration; (Get-Item -Path IIS:\AppPools\{{test_iis_webapppool_name}}).state"
|
||||
register: start_pool_actual
|
||||
|
||||
- name: assert start web pool
|
||||
assert:
|
||||
that:
|
||||
- start_pool|changed
|
||||
- start_pool_actual.stdout == 'Started\r\n'
|
||||
|
||||
- name: start web pool again
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: started
|
||||
register: start_pool_again
|
||||
|
||||
- name: get actual status of pool again
|
||||
win_command: powershell.exe "Import-Module WebAdministration; (Get-Item -Path IIS:\AppPools\{{test_iis_webapppool_name}}).state"
|
||||
register: start_pool_actual_again
|
||||
|
||||
- name: assert start web pool again
|
||||
assert:
|
||||
that:
|
||||
- not start_pool_again|changed
|
||||
- start_pool_actual_again.stdout == 'Started\r\n'
|
||||
|
||||
- name: restart web pool
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: restarted
|
||||
register: restart_pool
|
||||
|
||||
- name: get actual status of pool
|
||||
win_command: powershell.exe "Import-Module WebAdministration; (Get-Item -Path IIS:\AppPools\{{test_iis_webapppool_name}}).state"
|
||||
register: restart_pool_actual
|
||||
|
||||
- name: assert restart web pool
|
||||
assert:
|
||||
that:
|
||||
- restart_pool|changed
|
||||
- restart_pool_actual.stdout == 'Started\r\n'
|
||||
|
||||
- name: stop pool before restart on stop test
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: stopped
|
||||
|
||||
- name: restart from stopped web pool check
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: restarted
|
||||
register: restart_from_stop_pool_check
|
||||
check_mode: yes
|
||||
|
||||
- name: get actual status of pool check
|
||||
win_command: powershell.exe "Import-Module WebAdministration; (Get-Item -Path IIS:\AppPools\{{test_iis_webapppool_name}}).state"
|
||||
register: restart_from_stop_pool_actual_check
|
||||
|
||||
- name: assert restart from stopped web pool check
|
||||
assert:
|
||||
that:
|
||||
- restart_from_stop_pool_check|changed
|
||||
- restart_from_stop_pool_actual_check.stdout == 'Stopped\r\n'
|
||||
|
||||
- name: restart from stopped web pool
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: restarted
|
||||
register: restart_from_stop_pool
|
||||
|
||||
- name: get actual status of pool
|
||||
win_command: powershell.exe "Import-Module WebAdministration; (Get-Item -Path IIS:\AppPools\{{test_iis_webapppool_name}}).state"
|
||||
register: restart_from_stop_pool_actual
|
||||
|
||||
- name: assert restart from stopped web pool
|
||||
assert:
|
||||
that:
|
||||
- restart_from_stop_pool|changed
|
||||
- restart_from_stop_pool_actual.stdout == 'Started\r\n'
|
||||
|
||||
# The following tests are only for IIS versions 8.0 or newer
|
||||
- block:
|
||||
- name: delete test pool
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: absent
|
||||
|
||||
- name: create test pool
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
register: iis_attributes_blank
|
||||
|
||||
- name: change attributes for newer IIS version check
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes:
|
||||
startMode: AlwaysRunning
|
||||
processModel.identityType: 3
|
||||
processModel.userName: '{{ansible_user}}'
|
||||
processModel.password: '{{ansible_password}}'
|
||||
register: iis_attributes_new_check
|
||||
check_mode: yes
|
||||
|
||||
- name: assert change attributes for newer IIS version check
|
||||
assert:
|
||||
that:
|
||||
- iis_attributes_new_check|changed
|
||||
- iis_attributes_new_check.info == iis_attributes_blank.info
|
||||
|
||||
- name: change attributes for newer IIS version
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes:
|
||||
startMode: AlwaysRunning
|
||||
processModel.identityType: 3
|
||||
processModel.userName: '{{ansible_user}}'
|
||||
processModel.password: '{{ansible_password}}'
|
||||
register: iis_attributes_new
|
||||
|
||||
- name: assert change attributes for newer IIS version
|
||||
assert:
|
||||
that:
|
||||
- iis_attributes_new|changed
|
||||
- iis_attributes_new.info.attributes.startMode == 'AlwaysRunning'
|
||||
- iis_attributes_new.info.processModel.identityType == 'SpecificUser'
|
||||
- iis_attributes_new.info.processModel.userName == ansible_user
|
||||
- iis_attributes_new.info.processModel.password == ansible_password
|
||||
|
||||
- name: change attributes for newer IIS version again
|
||||
win_iis_webapppool:
|
||||
name: '{{test_iis_webapppool_name}}'
|
||||
state: present
|
||||
attributes:
|
||||
startMode: AlwaysRunning
|
||||
processModel.identityType: 3
|
||||
processModel.userName: '{{ansible_user}}'
|
||||
processModel.password: '{{ansible_password}}'
|
||||
register: iis_attributes_new_again
|
||||
|
||||
- name: assert change attributes for newer IIS version again
|
||||
assert:
|
||||
that:
|
||||
- not iis_attributes_new_again|changed
|
||||
- iis_attributes_new_again.info == iis_attributes_new.info
|
||||
|
||||
when: iis_version.win_file_version.file_major_part|int > 7
|
Loading…
Reference in New Issue