mirror of
https://github.com/ansible-collections/community.docker.git
synced 2026-03-19 05:07:23 +00:00
310 lines
7.5 KiB
YAML
310 lines
7.5 KiB
YAML
---
|
|
# Copyright (c) Ansible Project
|
|
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
- name: Registering network names
|
|
set_fact:
|
|
nname_ipam_0: "{{ name_prefix ~ '-network-ipam-0' }}"
|
|
nname_ipam_1: "{{ name_prefix ~ '-network-ipam-1' }}"
|
|
nname_ipam_2: "{{ name_prefix ~ '-network-ipam-2' }}"
|
|
nname_ipam_3: "{{ name_prefix ~ '-network-ipam-3' }}"
|
|
|
|
- name: Registering network names
|
|
set_fact:
|
|
dnetworks: "{{ dnetworks + [nname_ipam_0, nname_ipam_1, nname_ipam_2, nname_ipam_3] }}"
|
|
|
|
|
|
#################### IPv4 IPAM config ####################
|
|
|
|
- name: Create network with custom IPAM config
|
|
docker_network:
|
|
name: "{{ nname_ipam_1 }}"
|
|
ipam_config:
|
|
- subnet: 10.25.120.0/24
|
|
gateway: 10.25.120.2
|
|
iprange: 10.25.120.0/26
|
|
aux_addresses:
|
|
host1: 10.25.120.3
|
|
host2: 10.25.120.4
|
|
register: network
|
|
|
|
- assert:
|
|
that:
|
|
- network is changed
|
|
|
|
- name: Create network with custom IPAM config (idempotence)
|
|
docker_network:
|
|
name: "{{ nname_ipam_1 }}"
|
|
ipam_config:
|
|
- subnet: 10.25.120.0/24
|
|
gateway: 10.25.120.2
|
|
iprange: 10.25.120.0/26
|
|
aux_addresses:
|
|
host1: 10.25.120.3
|
|
host2: 10.25.120.4
|
|
register: network
|
|
|
|
- assert:
|
|
that:
|
|
- network is not changed
|
|
|
|
- name: Change of network created with custom IPAM config
|
|
docker_network:
|
|
name: "{{ nname_ipam_1 }}"
|
|
ipam_config:
|
|
- subnet: 10.25.121.0/24
|
|
gateway: 10.25.121.2
|
|
iprange: 10.25.121.0/26
|
|
aux_addresses:
|
|
host1: 10.25.121.3
|
|
register: network
|
|
diff: true
|
|
|
|
- assert:
|
|
that:
|
|
- network is changed
|
|
- network.diff.differences | length == 4
|
|
- '"ipam_config[0].subnet" in network.diff.differences'
|
|
- '"ipam_config[0].gateway" in network.diff.differences'
|
|
- '"ipam_config[0].iprange" in network.diff.differences'
|
|
- '"ipam_config[0].aux_addresses" in network.diff.differences'
|
|
|
|
- name: Remove gateway and iprange of network with custom IPAM config
|
|
docker_network:
|
|
name: "{{ nname_ipam_1 }}"
|
|
ipam_config:
|
|
- subnet: 10.25.121.0/24
|
|
register: network
|
|
|
|
- assert:
|
|
that:
|
|
- network is not changed
|
|
|
|
- name: Cleanup network with custom IPAM config
|
|
docker_network:
|
|
name: "{{ nname_ipam_1 }}"
|
|
state: absent
|
|
|
|
|
|
#################### IPv6 IPAM config ####################
|
|
|
|
- name: Create network with IPv6 IPAM config
|
|
docker_network:
|
|
name: "{{ nname_ipam_2 }}"
|
|
enable_ipv6: true
|
|
ipam_config:
|
|
- subnet: fdd1:ac8c:0557:7ce0::/64
|
|
register: network
|
|
|
|
- assert:
|
|
that:
|
|
- network is changed
|
|
|
|
- name: Create network with IPv6 IPAM config (idempotence)
|
|
docker_network:
|
|
name: "{{ nname_ipam_2 }}"
|
|
enable_ipv6: true
|
|
ipam_config:
|
|
- subnet: fdd1:ac8c:0557:7ce0::/64
|
|
register: network
|
|
|
|
- assert:
|
|
that:
|
|
- network is not changed
|
|
|
|
- name: Change subnet of network with IPv6 IPAM config
|
|
docker_network:
|
|
name: "{{ nname_ipam_2 }}"
|
|
enable_ipv6: true
|
|
ipam_config:
|
|
- subnet: fdd1:ac8c:0557:7ce1::/64
|
|
register: network
|
|
diff: true
|
|
|
|
- assert:
|
|
that:
|
|
- network is changed
|
|
- network.diff.differences | length == 1
|
|
- network.diff.differences[0] == "ipam_config[0].subnet"
|
|
|
|
- name: Change subnet of network with IPv6 IPAM config
|
|
docker_network:
|
|
name: "{{ nname_ipam_2 }}"
|
|
enable_ipv6: true
|
|
ipam_config:
|
|
- subnet: "fdd1:ac8c:0557:7ce1::"
|
|
register: network
|
|
ignore_errors: true
|
|
|
|
- assert:
|
|
that:
|
|
- network is failed
|
|
- "network.msg == '\"fdd1:ac8c:0557:7ce1::\" is not a valid CIDR'"
|
|
|
|
- name: Cleanup network with IPv6 IPAM config
|
|
docker_network:
|
|
name: "{{ nname_ipam_2 }}"
|
|
state: absent
|
|
|
|
|
|
#################### IPv4 and IPv6 network ####################
|
|
|
|
- name: Create network with IPv6 and custom IPv4 IPAM config
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
enable_ipv6: true
|
|
ipam_config:
|
|
- subnet: 10.26.120.0/24
|
|
- subnet: fdd1:ac8c:0557:7ce2::/64
|
|
register: network
|
|
|
|
- assert:
|
|
that:
|
|
- network is changed
|
|
|
|
- name: Change subnet order of network with IPv6 and custom IPv4 IPAM config (idempotence)
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
enable_ipv6: true
|
|
ipam_config:
|
|
- subnet: fdd1:ac8c:0557:7ce2::/64
|
|
- subnet: 10.26.120.0/24
|
|
register: network
|
|
|
|
- assert:
|
|
that:
|
|
- network is not changed
|
|
|
|
- name: Remove IPv6 from network with custom IPv4 and IPv6 IPAM config (change)
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
enable_ipv6: false
|
|
ipam_config:
|
|
- subnet: 10.26.120.0/24
|
|
register: network
|
|
diff: true
|
|
|
|
- assert:
|
|
that:
|
|
- network is changed
|
|
- network.diff.differences | length == 1
|
|
- network.diff.differences[0] == "enable_ipv6"
|
|
|
|
- name: Cleanup network with IPv6 and custom IPv4 IPAM config
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
state: absent
|
|
|
|
|
|
#################### multiple IPv4 networks ####################
|
|
|
|
- block:
|
|
- name: Create network with two IPv4 IPAM configs
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
driver: "macvlan"
|
|
driver_options:
|
|
parent: "{{ ansible_default_ipv4.alias }}"
|
|
ipam_config:
|
|
- subnet: 10.26.120.0/24
|
|
- subnet: 10.26.121.0/24
|
|
register: network
|
|
|
|
- assert:
|
|
that:
|
|
- network is changed
|
|
|
|
- name: Create network with two IPv4 IPAM configs (idempotence)
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
driver: "macvlan"
|
|
driver_options:
|
|
parent: "{{ ansible_default_ipv4.alias }}"
|
|
ipam_config:
|
|
- subnet: 10.26.121.0/24
|
|
- subnet: 10.26.120.0/24
|
|
register: network
|
|
|
|
- assert:
|
|
that:
|
|
- network is not changed
|
|
|
|
- name: Create network with two IPv4 IPAM configs (change)
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
driver: "macvlan"
|
|
driver_options:
|
|
parent: "{{ ansible_default_ipv4.alias }}"
|
|
ipam_config:
|
|
- subnet: 10.26.120.0/24
|
|
- subnet: 10.26.122.0/24
|
|
register: network
|
|
diff: true
|
|
|
|
- assert:
|
|
that:
|
|
- network is changed
|
|
- network.diff.differences | length == 1
|
|
|
|
- name: Create network with one IPv4 IPAM config (no change)
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
driver: "macvlan"
|
|
driver_options:
|
|
parent: "{{ ansible_default_ipv4.alias }}"
|
|
ipam_config:
|
|
- subnet: 10.26.122.0/24
|
|
register: network
|
|
|
|
- assert:
|
|
that:
|
|
- network is not changed
|
|
|
|
- name: Cleanup network
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
state: absent
|
|
|
|
when: ansible_facts.virtualization_type != 'docker' and ansible_default_ipv4.alias is defined
|
|
|
|
|
|
#################### IPAM driver options ####################
|
|
|
|
- name: Create network with IPAM driver options
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
ipam_driver: default
|
|
ipam_driver_options:
|
|
a: b
|
|
register: network_1
|
|
ignore_errors: true
|
|
- name: Create network with IPAM driver options (idempotence)
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
ipam_driver: default
|
|
ipam_driver_options:
|
|
a: b
|
|
diff: true
|
|
register: network_2
|
|
ignore_errors: true
|
|
- name: Create network with IPAM driver options (change)
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
ipam_driver: default
|
|
ipam_driver_options:
|
|
a: c
|
|
diff: true
|
|
register: network_3
|
|
ignore_errors: true
|
|
- name: Cleanup network
|
|
docker_network:
|
|
name: "{{ nname_ipam_3 }}"
|
|
state: absent
|
|
|
|
- assert:
|
|
that:
|
|
- network_1 is changed
|
|
- network_2 is not changed
|
|
- network_3 is changed
|