- name: run tests with cleanup block: - name: gather facts setup: filter: ansible_hostname - name: ensure testing folders exists win_file: path: '{{test_win_rds_settings_path}}' state: directory - name: deploy test artifacts win_template: src: '{{item}}.j2' dest: '{{test_win_rds_settings_path}}\{{item | basename}}' with_items: - rds_base_cfg.xml - name: import RDS test configuration win_shell: | $ts = Get-WmiObject Win32_TSGatewayServer -namespace root\cimv2\TerminalServices $import_xml = Get-Content {{test_win_rds_settings_path}}\rds_base_cfg.xml $import_result = $ts.Import(45, $import_xml) exit $import_result.ReturnValue - name: write certreq file win_copy: content: |- [NewRequest] Subject = "CN={{ rds_cert_suject }}" KeyLength = 2048 KeyAlgorithm = RSA MachineKeySet = true RequestType = Cert KeyUsage = 0xA0 ; Digital Signature, Key Encipherment [EnhancedKeyUsageExtension] OID=1.3.6.1.5.5.7.3.1 ; Server Authentication dest: '{{test_win_rds_settings_path}}\certreq.txt' - name: create self signed cert from certreq win_command: certreq -new -machine {{test_win_rds_settings_path}}\certreq.txt {{test_win_rds_settings_path}}\certreqresp.txt - name: register certificate thumbprint raw: '(gci Cert:\LocalMachine\my | ? {$_.subject -eq "CN={{ rds_cert_suject }}"})[0].Thumbprint' register: rds_cert_thumbprint - name: run tests include_tasks: win_rds_settings_tests.yml always: - name: restore RDS base configuration win_shell: | $ts = Get-WmiObject Win32_TSGatewayServer -namespace root\cimv2\TerminalServices $import_xml = Get-Content {{test_win_rds_settings_path}}\rds_base_cfg.xml $import_result = $ts.Import(45, $import_xml) exit $import_result.ReturnValue - name: remove certificate raw: 'remove-item cert:\localmachine\my\{{ item }} -force -ea silentlycontinue' with_items: - "{{ rds_cert_thumbprint.stdout_lines[0] }}" - name: cleanup test artifacts win_file: path: '{{test_win_rds_settings_path}}' state: absent