ansible/test/integration/targets/win_dns_client/tasks/main.yml
Brian Scholer be26f4916f
win_dns_client DHCP improvements + more (#66451)
* Fix DHCP support in win_dns_client + more

* Fix bugs and test failures, add changelog fragment

* Add idempotency tests for DHCP

* Address review feedback; dedup address-family code

* Remove legacy function

* Remove old reference
2020-02-17 15:35:54 +10:00

217 lines
6.1 KiB
YAML

---
- set_fact:
get_ip_script: |
$adapter = Get-CimInstance -ClassName Win32_NetworkAdapter -Filter "NetConnectionID='{{ network_adapter_name }}'"
$config = Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration -Filter "Index=$($adapter.DeviceID)"
$ips = $config.DNSServerSearchOrder
if ($ips) {
$config.DNSServerSearchOrder[0]
$config.DNSServerSearchOrder[1]
}
- name: set a single IPv4 address (check mode)
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
ipv4_addresses: 192.168.34.5
register: set_single_check
check_mode: yes
- name: get result of set a single IPv4 address (check mode)
win_shell: '{{ get_ip_script }}'
changed_when: no
register: set_single_actual_check
- name: assert set a single IPv4 address (check mode)
assert:
that:
- set_single_check is changed
- set_single_actual_check.stdout_lines == []
- name: set a single IPv4 address
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
ipv4_addresses: 192.168.34.5
register: set_single
- name: get result of set a single IPv4 address
win_shell: '{{ get_ip_script }}'
changed_when: no
register: set_single_actual
- name: assert set a single IPv4 address
assert:
that:
- set_single is changed
- set_single_actual.stdout_lines == ["192.168.34.5"]
- name: set a single IPv4 address (idempotent)
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
ipv4_addresses: 192.168.34.5
register: set_single_again
- name: assert set a single IPv4 address (idempotent)
assert:
that:
- not set_single_again is changed
- name: change IPv4 address to another value (check mode)
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
ipv4_addresses: 192.168.34.6
register: change_single_check
check_mode: yes
- name: get result of change IPv4 address to another value (check mode)
win_shell: '{{ get_ip_script }}'
changed_when: no
register: check_single_actual_check
- name: assert change IPv4 address to another value (check mode)
assert:
that:
- change_single_check is changed
- check_single_actual_check.stdout_lines == ["192.168.34.5"]
- name: change IPv4 address to another value
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
ipv4_addresses: 192.168.34.6
register: change_single
- name: get result of change IPv4 address to another value
win_shell: '{{ get_ip_script }}'
changed_when: no
register: check_single_actual
- name: assert change IPv4 address to another value
assert:
that:
- change_single is changed
- check_single_actual.stdout_lines == ["192.168.34.6"]
- name: set multiple IPv4 addresses (check mode)
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
ipv4_addresses:
- 192.168.34.7
- 192.168.34.8
register: set_multiple_check
check_mode: yes
- name: get result of set multiple IPv4 addresses (check mode)
win_shell: '{{ get_ip_script }}'
changed_when: no
register: set_multiple_actual_check
- name: assert set multiple IPv4 addresses (check mode)
assert:
that:
- set_multiple_check is changed
- set_multiple_actual_check.stdout_lines == ["192.168.34.6"]
- name: set multiple IPv4 addresses
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
ipv4_addresses:
- 192.168.34.7
- 192.168.34.8
register: set_multiple
- name: get result of set multiple IPv4 addresses
win_shell: '{{ get_ip_script }}'
changed_when: no
register: set_multiple_actual
- name: assert set multiple IPv4 addresses
assert:
that:
- set_multiple is changed
- set_multiple_actual.stdout_lines == ["192.168.34.7", "192.168.34.8"]
- name: set multiple IPv4 addresses (idempotent)
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
ipv4_addresses:
- 192.168.34.7
- 192.168.34.8
register: set_multiple_again
- name: assert set multiple IPv4 addresses (idempotent)
assert:
that:
- not set_multiple_again is changed
- name: reset IPv4 DNS back to DHCP (check mode)
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
ipv4_addresses: []
register: set_dhcp_check
check_mode: yes
- name: get result of reset IPv4 DNS back to DHCP (check mode)
win_shell: '{{ get_ip_script }}'
changed_when: no
register: set_dhcp_actual_check
- name: assert reset IPv4 DNS back to DHCP (check mode)
assert:
that:
- set_dhcp_check is changed
- set_dhcp_actual_check.stdout_lines == ["192.168.34.7", "192.168.34.8"]
- name: reset IPv4 DNS back to DHCP
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
ipv4_addresses: []
register: set_dhcp
- name: get result of reset IPv4 DNS back to DHCP
win_shell: '{{ get_ip_script }}'
changed_when: no
register: set_dhcp_actual
- name: assert reset IPv4 DNS back to DHCP
assert:
that:
- set_dhcp is changed
- set_dhcp_actual.stdout_lines == []
- name: reset IPv4 DNS back to DHCP (idempotent)
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
ipv4_addresses: []
register: set_dhcp_again
- name: assert reset IPv4 DNS back to DHCP (idempotent)
assert:
that:
- set_dhcp_again is not changed
# Legacy WMI does not support setting IPv6 addresses so we can only test this on newer hosts that have the new cmdlets
- name: check if server supports IPv6
win_shell: if (Get-Command -Name Get-NetAdapter -ErrorAction SilentlyContinue) { $true } else { $false }
changed_when: no
register: new_os
- name: run IPv6 tests
when: new_os.stdout | trim | bool
block:
- name: set IPv6 DNS address
win_dns_client:
adapter_names: '{{ network_adapter_name }}'
dns_servers:
- 2001:db8::1
- 2001:db8::2
register: set_ipv6
- name: get result of set IPv6 DNS address
win_shell: (Get-DnsClientServerAddress -InterfaceAlias '{{ network_adapter_name }}' -AddressFAmily IPv6).ServerAddresses
changed_when: no
register: set_ipv6_actual
- name: assert set IPv6 DNS address
assert:
that:
- set_ipv6 is changed
- set_ipv6_actual.stdout_lines == ['2001:db8::1', '2001:db8::2']