--- - debug: msg="START junos_vrf netconf/basic.yaml on connection={{ ansible_connection }}" - name: setup - remove vrf junos_vrf: name: test-1 state: absent provider: "{{ netconf }}" - name: Configure vrf and its parameter junos_vrf: name: test-1 description: test-vrf-1 interfaces: - ge-0/0/6 - ge-0/0/5 rd: 3.3.3.3:10 target: target:65513:111 state: present provider: "{{ netconf }}" register: result - assert: that: - "result.changed == true" - result.diff.prepared is search("\+ *test-1") - result.diff.prepared is search("\+ *description test-vrf-1") - result.diff.prepared is search("\+ *instance-type vrf") - result.diff.prepared is search("\+ *interface ge-0/0/5.0") - result.diff.prepared is search("\+ *interface ge-0/0/6.0") - result.diff.prepared is search("\+ *route-distinguisher 3.3.3.3:10") - result.diff.prepared is search("\+ *vrf-target target:65513:111") - name: Configure vrf and its parameter (idempotent) junos_vrf: name: test-1 description: test-vrf-1 interfaces: - ge-0/0/6 - ge-0/0/5 rd: 3.3.3.3:10 target: target:65513:111 state: present provider: "{{ netconf }}" register: result - assert: that: - "result.changed == false" - name: Change vrf parameter junos_vrf: name: test-1 description: test-vrf-1 interfaces: - ge-0/0/3 - ge-0/0/2 rd: 1.1.1.1:10 target: target:65514:113 state: present provider: "{{ netconf }}" register: result - assert: that: - "result.changed == true" - "'[edit routing-instances test-1]' in result.diff.prepared" - result.diff.prepared is search("\+ *interface ge-0/0/2.0") - result.diff.prepared is search("\+ *interface ge-0/0/3.0") - "'[edit routing-instances test-1]' in result.diff.prepared" - result.diff.prepared is search("\+ *route-distinguisher 1.1.1.1:10") - result.diff.prepared is search("\+ *vrf-target target:65514:113") - name: Deactivate vrf junos_vrf: name: test-1 description: test-vrf-1 interfaces: - ge-0/0/3 - ge-0/0/2 rd: 1.1.1.1:10 target: target:65514:113 state: present active: False provider: "{{ netconf }}" register: result - assert: that: - "result.changed == true" - "'[edit routing-instances]' in result.diff.prepared" - result.diff.prepared is search("! *inactive[:] test-1") - "'[edit routing-instances test-1]' in result.diff.prepared" - result.diff.prepared is search("! *inactive[:] interface ge-0/0/2.0") - result.diff.prepared is search("! *inactive[:] interface ge-0/0/3.0") - "'[edit routing-instances test-1]' in result.diff.prepared" - result.diff.prepared is search("! *inactive[:] route-distinguisher") - result.diff.prepared is search("! *inactive[:] vrf-target") - name: Activate vrf junos_vrf: name: test-1 description: test-vrf-1 interfaces: - ge-0/0/3 - ge-0/0/2 rd: 1.1.1.1:10 target: target:65514:113 state: present active: True provider: "{{ netconf }}" register: result - assert: that: - "result.changed == true" - "'[edit routing-instances]' in result.diff.prepared" - result.diff.prepared is search("! *active[:] test-1") - "'[edit routing-instances test-1]' in result.diff.prepared" - result.diff.prepared is search("! *active[:] interface ge-0/0/2.0") - result.diff.prepared is search("! *active[:] interface ge-0/0/3.0") - "'[edit routing-instances test-1]' in result.diff.prepared" - result.diff.prepared is search("! *active[:] route-distinguisher") - result.diff.prepared is search("! *active[:] vrf-target") - name: Delete vrf junos_vrf: name: test-1 description: test-vrf-1 interfaces: - ge-0/0/3 - ge-0/0/2 rd: 1.1.1.1:10 target: target:65514:113 state: absent provider: "{{ netconf }}" register: result - assert: that: - "result.changed == true" - result.diff.prepared is search("\- *test-1") - result.diff.prepared is search("\- *description test-vrf-1") - result.diff.prepared is search("\- *instance-type vrf") - result.diff.prepared is search("\- *interface ge-0/0/2.0") - result.diff.prepared is search("\- *interface ge-0/0/3.0") - result.diff.prepared is search("\- *route-distinguisher 1.1.1.1:10") - result.diff.prepared is search("\- *vrf-target target:65514:113") - name: Delete vrf (idempotent) junos_vrf: name: test-1 description: test-vrf-1 interfaces: - ge-0/0/3 - ge-0/0/2 rd: 1.1.1.1:10 target: target:65514:113 state: absent provider: "{{ netconf }}" register: result - assert: that: - "result.changed == false" - name: Setup vrf using aggregate junos_vrf: aggregate: - name: test-1 - name: test-2 state: absent provider: "{{ netconf }}" register: result - name: Create vrf using aggregate junos_vrf: aggregate: - name: test-1 description: test-vrf-1 interfaces: - ge-0/0/3 - ge-0/0/2 rd: 1.1.1.1:10 target: target:65514:113 - name: test-2 description: test-vrf-2 interfaces: - ge-0/0/4 - ge-0/0/5 rd: 2.2.2.2:10 target: target:65515:114 provider: "{{ netconf }}" register: result - assert: that: - "result.changed == true" - result.diff.prepared is search("\+ *test-1") - result.diff.prepared is search("\+ *description test-vrf-1") - result.diff.prepared is search("\+ *instance-type vrf") - result.diff.prepared is search("\+ *interface ge-0/0/2.0") - result.diff.prepared is search("\+ *interface ge-0/0/3.0") - result.diff.prepared is search("\+ *route-distinguisher 1.1.1.1:10") - result.diff.prepared is search("\+ *vrf-target target:65514:113") - result.diff.prepared is search("\+ *test-2") - result.diff.prepared is search("\+ *description test-vrf-2") - result.diff.prepared is search("\+ *instance-type vrf") - result.diff.prepared is search("\+ *interface ge-0/0/4.0") - result.diff.prepared is search("\+ *interface ge-0/0/5.0") - result.diff.prepared is search("\+ *route-distinguisher 2.2.2.2:10") - result.diff.prepared is search("\+ *vrf-target target:65515:114") - name: Deactivate vrf configuration using aggregate junos_vrf: aggregate: - name: test-1 description: test-vrf-1 interfaces: - ge-0/0/3 - ge-0/0/2 rd: 1.1.1.1:10 target: target:65514:113 - name: test-2 description: test-vrf-2 interfaces: - ge-0/0/4 - ge-0/0/5 rd: 2.2.2.2:10 target: target:65515:114 active: False provider: "{{ netconf }}" register: result - assert: that: - "result.changed == true" - "'edit routing-instances test-1' in result.diff.prepared" - result.diff.prepared is search("! *inactive[:] interface ge-0/0/2.0") - result.diff.prepared is search("! *inactive[:] interface ge-0/0/3.0") - result.diff.prepared is search("! *inactive[:] route-distinguisher") - result.diff.prepared is search("! *inactive[:] vrf-target") - "'edit routing-instances test-2' in result.diff.prepared" - result.diff.prepared is search("! *inactive[:] interface ge-0/0/4.0") - result.diff.prepared is search("! *inactive[:] interface ge-0/0/5.0") - result.diff.prepared is search("! *inactive[:] route-distinguisher") - result.diff.prepared is search("! *inactive[:] vrf-target") - name: Deactivate vrf configuration using aggregate junos_vrf: aggregate: - name: test-1 description: test-vrf-1 interfaces: - ge-0/0/3 - ge-0/0/2 rd: 1.1.1.1:10 target: target:65514:113 - name: test-2 description: test-vrf-2 interfaces: - ge-0/0/4 - ge-0/0/5 rd: 2.2.2.2:10 target: target:65515:114 active: True provider: "{{ netconf }}" register: result - assert: that: - "result.changed == true" - "'edit routing-instances test-1' in result.diff.prepared" - result.diff.prepared is search("! *active[:] interface ge-0/0/2.0") - result.diff.prepared is search("! *active[:] interface ge-0/0/3.0") - result.diff.prepared is search("! *active[:] route-distinguisher") - result.diff.prepared is search("! *active[:] vrf-target") - "'edit routing-instances test-2' in result.diff.prepared" - result.diff.prepared is search("! *active[:] interface ge-0/0/4.0") - result.diff.prepared is search("! *active[:] interface ge-0/0/5.0") - result.diff.prepared is search("! *active[:] route-distinguisher") - result.diff.prepared is search("! *active[:] vrf-target") - name: Delete vrf configuration using aggregate junos_vrf: aggregate: - name: test-1 - name: test-2 state: absent provider: "{{ netconf }}" register: result - assert: that: - "result.changed == true" - result.diff.prepared is search("\- *test-1") - result.diff.prepared is search("\- *description test-vrf-1") - result.diff.prepared is search("\- *instance-type vrf") - result.diff.prepared is search("\- *interface ge-0/0/2.0") - result.diff.prepared is search("\- *interface ge-0/0/3.0") - result.diff.prepared is search("\- *route-distinguisher 1.1.1.1:10") - result.diff.prepared is search("\- *vrf-target target:65514:113") - result.diff.prepared is search("\- *test-2") - result.diff.prepared is search("\- *description test-vrf-2") - result.diff.prepared is search("\- *instance-type vrf") - result.diff.prepared is search("\- *interface ge-0/0/4.0") - result.diff.prepared is search("\- *interface ge-0/0/5.0") - result.diff.prepared is search("\- *route-distinguisher 2.2.2.2:10") - result.diff.prepared is search("\- *vrf-target target:65515:114") - name: Delete vrf configuration using aggregate (idempotent) junos_vrf: aggregate: - name: test-1 - name: test-2 state: absent provider: "{{ netconf }}" register: result - assert: that: - "result.changed == false" - debug: msg="END junos_vrf netconf/basic.yaml on connection={{ ansible_connection }}"