|
|
|
---
|
|
|
|
- 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 == []
|
|
|
|
|
|
|
|
# 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']
|