|
|
|
---
|
|
|
|
- name: test out Windows WinRM specific tests
|
|
|
|
hosts: windows
|
|
|
|
force_handlers: yes
|
|
|
|
serial: 1
|
|
|
|
gather_facts: no
|
|
|
|
|
|
|
|
tasks:
|
|
|
|
- name: reboot the host
|
|
|
|
ansible.windows.win_reboot:
|
|
|
|
|
|
|
|
- name: setup remote tmp dir
|
|
|
|
import_role:
|
|
|
|
name: ../../setup_remote_tmp_dir
|
|
|
|
|
|
|
|
- name: copy across empty file
|
|
|
|
win_copy:
|
|
|
|
content: ''
|
|
|
|
dest: '{{ remote_tmp_dir }}\empty.txt'
|
|
|
|
register: winrm_copy_empty
|
|
|
|
|
|
|
|
- name: get result of copy across empty file
|
|
|
|
win_stat:
|
|
|
|
path: '{{ remote_tmp_dir }}\empty.txt'
|
|
|
|
register: winrm_copy_empty_actual
|
|
|
|
|
|
|
|
- name: assert copy across empty file
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- winrm_copy_empty is changed
|
|
|
|
- winrm_copy_empty_actual.stat.size == 0
|
|
|
|
|
|
|
|
# Ensures the connection plugin can handle a timeout
|
|
|
|
# without raising another error.
|
|
|
|
- name: run command with timeout
|
|
|
|
win_shell: Start-Sleep -Seconds 10
|
|
|
|
timeout: 5
|
|
|
|
register: timeout_cmd
|
|
|
|
ignore_errors: true
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- timeout_cmd.msg == 'The win_shell action failed to execute in the expected time frame (5) and was terminated'
|
|
|
|
|
|
|
|
- name: Test WinRM HTTP connection
|
|
|
|
win_ping:
|
|
|
|
vars:
|
|
|
|
ansible_port: 5985
|
|
|
|
ansible_winrm_scheme: http
|
|
|
|
ansible_winrm_transport: ntlm # Verifies message encryption over HTTP
|
|
|
|
|
|
|
|
- name: Test WinRM HTTPS connection
|
|
|
|
win_ping:
|
|
|
|
vars:
|
|
|
|
ansible_port: 5986
|
|
|
|
ansible_winrm_scheme: https
|
|
|
|
ansible_winrm_server_cert_validation: ignore
|
|
|
|
|
|
|
|
- name: get WinRM quota value
|
|
|
|
win_shell: (Get-Item WSMan:\localhost\Service\MaxConcurrentOperationsPerUser).Value
|
|
|
|
changed_when: false
|
|
|
|
register: winrm_quota
|
|
|
|
|
|
|
|
- block:
|
|
|
|
- name: set WinRM quota to lower value
|
|
|
|
win_shell: Set-Item WSMan:\localhost\Service\MaxConcurrentOperationsPerUser 3
|
|
|
|
|
|
|
|
- name: run ping with loop to exceed quota
|
|
|
|
win_ping:
|
|
|
|
loop: '{{ range(0, 4) }}'
|
|
|
|
|
|
|
|
always:
|
|
|
|
- name: reset WinRM quota value
|
|
|
|
win_shell: Set-Item WSMan:\localhost\Service\MaxConcurrentOperationsPerUser {{ winrm_quota.stdout | trim }}
|
|
|
|
|
|
|
|
- name: emit raw CLIXML on stderr with special chars
|
|
|
|
raw: $host.UI.WriteErrorLine("Test 🎵 _x005F_ _x005Z_.")
|
|
|
|
register: stderr_clixml
|
|
|
|
|
|
|
|
- name: assert emit raw CLIXML on stderr with special chars
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- stderr_clixml.stderr_lines == ['Test 🎵 _x005F_ _x005Z_.']
|