1- name: Prepare random number
2  set_fact:
3    vnetname1: "vnet1{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}"
4    vnetname2: "vnet2{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 1000 | random }}"
5    peering_name: "peering1{{ resource_group | hash('md5') | truncate(7, True, '') }}{{ 100 | random }}"
6
7- name: Create first virtual network
8  azure_rm_virtualnetwork:
9    name: "{{ vnetname1 }}"
10    address_prefixes_cidr:
11      - 10.1.0.0/16
12    tags:
13      testing: testing
14      delete: on-exit
15    resource_group: "{{ resource_group }}"
16  register: vnet1
17
18- name: Create second virtual network
19  azure_rm_virtualnetwork:
20    name: "{{ vnetname2 }}"
21    address_prefixes_cidr:
22      - 10.2.0.0/24
23    resource_group: "{{ resource_group_secondary }}"
24  register: vnet2
25
26- assert:
27    that:
28      - vnet1.changed
29      - vnet2.changed
30
31- name: Create virtual network peering (check mode)
32  azure_rm_virtualnetworkpeering:
33    resource_group: "{{ resource_group }}"
34    name: "{{ peering_name }}"
35    virtual_network: "{{ vnetname1 }}"
36    remote_virtual_network:
37      resource_group: "{{ resource_group_secondary }}"
38      name: "{{ vnetname2 }}"
39    allow_virtual_network_access: false
40    allow_forwarded_traffic: true
41  check_mode: yes
42  register: output
43
44- assert:
45    that: output.changed
46
47- name: Create virtual network peering
48  azure_rm_virtualnetworkpeering:
49    resource_group: "{{ resource_group }}"
50    name: "{{ peering_name }}"
51    virtual_network: "{{ vnetname1 }}"
52    remote_virtual_network:
53      resource_group: "{{ resource_group_secondary }}"
54      name: "{{ vnetname2 }}"
55    allow_virtual_network_access: false
56    allow_forwarded_traffic: true
57  register: output
58
59- assert:
60    that: output.changed
61
62- name: Update virtual network peering (idempotent)
63  azure_rm_virtualnetworkpeering:
64    resource_group: "{{ resource_group }}"
65    name: "{{ peering_name }}"
66    virtual_network: "{{ vnetname1 }}"
67    remote_virtual_network:
68      resource_group: "{{ resource_group_secondary }}"
69      name: "{{ vnetname2 }}"
70    allow_virtual_network_access: false
71    allow_forwarded_traffic: true
72  register: output
73
74- assert:
75    that: not output.changed
76
77- name: Update virtual network peering
78  azure_rm_virtualnetworkpeering:
79    resource_group: "{{ resource_group }}"
80    name: "{{ peering_name }}"
81    virtual_network: "{{ vnetname1 }}"
82    remote_virtual_network:
83      resource_group: "{{ resource_group_secondary }}"
84      name: "{{ vnetname2 }}"
85    allow_virtual_network_access: true
86    allow_forwarded_traffic: false
87  register: output
88
89- assert:
90    that: output.changed
91
92- name: Get facts
93  azure_rm_virtualnetworkpeering_facts:
94    resource_group: "{{ resource_group }}"
95    name: "{{ peering_name }}"
96    virtual_network: "{{ vnetname1 }}"
97  register: facts
98
99- name: Assert Facts
100  assert:
101    that:
102      - facts['vnetpeerings'] | length == 1
103      - facts['vnetpeerings'][0]['id']
104      - facts['vnetpeerings'][0]['peering_state']
105      - facts['vnetpeerings'][0]['remote_virtual_network']
106      - facts['vnetpeerings'][0]['provisioning_state']
107
108- name: Delete virtual network peering
109  azure_rm_virtualnetworkpeering:
110    resource_group: "{{ resource_group }}"
111    name: "{{ peering_name }}"
112    virtual_network: "{{ vnetname1 }}"
113    state: absent
114  register: output
115
116- name: Delete first virtual network
117  azure_rm_virtualnetwork:
118    name: "{{ vnetname1 }}"
119    resource_group: "{{ resource_group }}"
120    state: absent
121
122- name: Delete virtual network
123  azure_rm_virtualnetwork:
124    name: "{{ vnetname2 }}"
125    resource_group: "{{ resource_group_secondary }}"
126    state: absent