--- # Cannot use win_feature to install RDS on Server 2008 - name: check if feature is availble win_shell: if (Get-Command -Name Add-WindowsFeature -ErrorAction SilentlyContinue) { $true } else { $false } changed_when: False register: module_available - name: install Remote Desktop Gateway features when: module_available.stdout | trim | bool block: - name: ensure Remote Desktop Gateway services are installed win_feature: name: - RDS-Gateway - RDS-Licensing - RDS-RD-Server state: present register: rds_install - name: reboot server if needed win_reboot: when: rds_install.reboot_required # After a reboot Windows is still configuring the feature, this is a hack to wait until that is finished - name: wait for component servicing to be finished win_shell: | $start = Get-Date $path = "HKLM:\SYSTEM\CurrentControlSet\Control\Winlogon\Notifications\Components\TrustedInstaller" $tries = 0 while ((Get-ItemProperty -Path $path -Name Events).Events.Contains("CreateSession")) { $tries += 1 Start-Sleep -Seconds 5 if (((Get-Date) - $start).TotalSeconds -gt 180) { break } } $tries changed_when: False - name: run win_rds_cap integration tests include_tasks: win_rds_cap.yml - name: run win_rds_rap integration tests include_tasks: win_rds_rap.yml - name: run win_rds_settings integration tests include_tasks: win_rds_settings.yml always: # Server 2008 R2 requires us to remove this first before the other features - name: remove the RDS-Gateway feature win_feature: name: RDS-Gateway state: absent register: rds_uninstall - name: reboot after removing RDS-Gateway feature win_reboot: when: rds_uninstall.reboot_required # Now remove the remaining features - name: remove installed RDS feature win_feature: name: - RDS-Licensing - RDS-RD-Server - Web-Server # not part of the initial feature install but RDS-Gateway requires this and it breaks httptester state: absent register: rds_uninstall2 - name: reboot after feature removal win_reboot: when: rds_uninstall2.reboot_required