--- - name: create vpc via dcnm connection: ansible.netcommon.httpapi hosts: dcnm_controllers gather_facts: false tasks: ############################################## ## SETUP ## ############################################## - name: Put the fabric to default state cisco.dcnm.dcnm_interface: fabric: my-fabric state: overridden # only choose form [merged, replaced, deleted, overridden, query] register: result - assert: that: - 'item["RETURN_CODE"] == 200' loop: '{{ result.response }}' - block: ############################################## ## MERGE ## ############################################## - name: Create loopback interfaces cisco.dcnm.dcnm_interface: &lo_merge fabric: "my-fabric" state: merged # only choose form [merged, replaced, deleted, overridden, query] config: - name: lo95 # should be of the form lo type: lo # choose from this list [pc, vpc, sub_int, lo, eth] switch: - "ToR1" # provide the switch where to deploy the config deploy: true # choose from [true, false] profile: admin_state: true # choose from [true, false] mode: lo # choose from [lo] int_vrf: "" # VRF name ipv4_addr: 99.99.99.99 # ipv4 address for the loopback interface # ipv6_addr: fd01::0201 # ipV6 address for the loopback interface route_tag: "" # Routing Tag for the interface cmds: # Freeform config - no shutdown description: "loopback interface 95 configuration" register: result - assert: that: - 'result.changed == true' - '(result["diff"][0]["merged"] | length) == 2' - '(result["diff"][0]["deleted"] | length) == 0' - '(result["diff"][0]["replaced"] | length) == 0' - '(result["diff"][0]["overridden"] | length) == 0' - '(result["diff"][0]["deploy"] | length) == 2' - assert: that: - 'item["RETURN_CODE"] == 200' loop: '{{ result.response }}' - name: Create loopback interfaces - Idempotence cisco.dcnm.dcnm_interface: *lo_merge register: result - assert: that: - 'result.changed == false' - '(result["diff"][0]["merged"] | length) == 0' - '(result["diff"][0]["deleted"] | length) == 0' - '(result["diff"][0]["replaced"] | length) == 0' - '(result["diff"][0]["overridden"] | length) == 0' - '(result["diff"][0]["deploy"] | length) == 0' - assert: that: - 'item["RETURN_CODE"] == 200' loop: '{{ result.response }}' ############################################## ## CLEANUP ## ############################################## always: - name: Put to fabric to default state cisco.dcnm.dcnm_interface: fabric: BDT-DC state: overridden # only choose form [merged, replaced, deleted, overridden, query] register: result - assert: that: - 'item["RETURN_CODE"] == 200' loop: '{{ result.response }}'