1--- 2- name: Registering network name 3 set_fact: 4 nname_1: "{{ name_prefix ~ '-network-1' }}" 5- name: Registering network name 6 set_fact: 7 dnetworks: "{{ dnetworks + [nname_1] }}" 8 9#################################################################### 10## internal ######################################################## 11#################################################################### 12 13- name: internal 14 docker_network: 15 name: "{{ nname_1 }}" 16 internal: yes 17 register: internal_1 18 19- name: internal (idempotency) 20 docker_network: 21 name: "{{ nname_1 }}" 22 internal: yes 23 register: internal_2 24 25- name: internal (change) 26 docker_network: 27 name: "{{ nname_1 }}" 28 internal: no 29 register: internal_3 30 31- name: cleanup 32 docker_network: 33 name: "{{ nname_1 }}" 34 state: absent 35 force: yes 36 37- assert: 38 that: 39 - internal_1 is changed 40 - internal_2 is not changed 41 - internal_3 is changed 42 43#################################################################### 44## driver_options ################################################## 45#################################################################### 46 47- name: driver_options 48 docker_network: 49 name: "{{ nname_1 }}" 50 driver_options: 51 com.docker.network.bridge.enable_icc: 'false' 52 register: driver_options_1 53 54- name: driver_options (idempotency) 55 docker_network: 56 name: "{{ nname_1 }}" 57 driver_options: 58 com.docker.network.bridge.enable_icc: 'false' 59 register: driver_options_2 60 61- name: driver_options (idempotency with string translation) 62 docker_network: 63 name: "{{ nname_1 }}" 64 driver_options: 65 com.docker.network.bridge.enable_icc: False 66 register: driver_options_3 67 68- name: driver_options (change) 69 docker_network: 70 name: "{{ nname_1 }}" 71 driver_options: 72 com.docker.network.bridge.enable_icc: 'true' 73 register: driver_options_4 74 75- name: driver_options (idempotency with string translation) 76 docker_network: 77 name: "{{ nname_1 }}" 78 driver_options: 79 com.docker.network.bridge.enable_icc: True 80 register: driver_options_5 81 82- name: cleanup 83 docker_network: 84 name: "{{ nname_1 }}" 85 state: absent 86 force: yes 87 88- assert: 89 that: 90 - driver_options_1 is changed 91 - driver_options_2 is not changed 92 - driver_options_3 is not changed 93 - driver_options_4 is changed 94 - driver_options_5 is not changed 95 96#################################################################### 97## scope ########################################################### 98#################################################################### 99 100- block: 101 - name: scope 102 docker_network: 103 name: "{{ nname_1 }}" 104 driver: bridge 105 scope: local 106 register: scope_1 107 108 - name: scope (idempotency) 109 docker_network: 110 name: "{{ nname_1 }}" 111 driver: bridge 112 scope: local 113 register: scope_2 114 115 - name: swarm 116 docker_swarm: 117 state: present 118 advertise_addr: "{{ansible_default_ipv4.address}}" 119 120 # Driver change alongside scope is intentional - bridge doesn't appear to support anything but local, and overlay can't downgrade to local. Additionally, overlay reports as swarm for swarm OR global, so no change is reported in that case. 121 # Test output indicates that the scope is altered, at least, so manual inspection will be required to verify this going forward, unless we come up with a test driver that supports multiple scopes. 122 - name: scope (change) 123 docker_network: 124 name: "{{ nname_1 }}" 125 driver: overlay 126 scope: swarm 127 register: scope_3 128 129 - name: cleanup network 130 docker_network: 131 name: "{{ nname_1 }}" 132 state: absent 133 force: yes 134 135 - assert: 136 that: 137 - scope_1 is changed 138 - scope_2 is not changed 139 - scope_3 is changed 140 141 always: 142 - name: cleanup swarm 143 docker_swarm: 144 state: absent 145 force: yes 146 147 # Requirements for docker_swarm 148 when: docker_py_version is version('2.6.0', '>=') and docker_api_version is version('1.25', '>=') 149 150#################################################################### 151## attachable ###################################################### 152#################################################################### 153 154- name: attachable 155 docker_network: 156 name: "{{ nname_1 }}" 157 attachable: true 158 register: attachable_1 159 ignore_errors: yes 160 161- name: attachable (idempotency) 162 docker_network: 163 name: "{{ nname_1 }}" 164 attachable: true 165 register: attachable_2 166 ignore_errors: yes 167 168- name: attachable (change) 169 docker_network: 170 name: "{{ nname_1 }}" 171 attachable: false 172 register: attachable_3 173 ignore_errors: yes 174 175- name: cleanup 176 docker_network: 177 name: "{{ nname_1 }}" 178 state: absent 179 force: yes 180 181- assert: 182 that: 183 - attachable_1 is changed 184 - attachable_2 is not changed 185 - attachable_3 is changed 186 when: docker_py_version is version('2.0.0', '>=') 187- assert: 188 that: 189 - attachable_1 is failed 190 - "('version is ' ~ docker_py_version ~ ' ') in attachable_1.msg" 191 - "'Minimum version required is 2.0.0 ' in attachable_1.msg" 192 when: docker_py_version is version('2.0.0', '<') 193 194#################################################################### 195## labels ########################################################## 196#################################################################### 197 198- name: labels 199 docker_network: 200 name: "{{ nname_1 }}" 201 labels: 202 ansible.test.1: hello 203 ansible.test.2: world 204 register: labels_1 205 206- name: labels (idempotency) 207 docker_network: 208 name: "{{ nname_1 }}" 209 labels: 210 ansible.test.2: world 211 ansible.test.1: hello 212 register: labels_2 213 214- name: labels (less labels) 215 docker_network: 216 name: "{{ nname_1 }}" 217 labels: 218 ansible.test.1: hello 219 register: labels_3 220 221- name: labels (more labels) 222 docker_network: 223 name: "{{ nname_1 }}" 224 labels: 225 ansible.test.1: hello 226 ansible.test.3: ansible 227 register: labels_4 228 229- name: cleanup 230 docker_network: 231 name: "{{ nname_1 }}" 232 state: absent 233 force: yes 234 235- assert: 236 that: 237 - labels_1 is changed 238 - labels_2 is not changed 239 - labels_3 is not changed 240 - labels_4 is changed 241