main.yml 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389
  1. ---
  2. - name: Add VLAN definition
  3. nxos_vlan:
  4. vlan_id: "{{ vlan_id }}"
  5. admin_state: up
  6. name: "{{ vlan_name }}"
  7. when: delete_vlan is not defined or not delete_vlan|bool
  8. tags:
  9. - nxos
  10. - vlan
  11. - nxos-vlan
  12. - add-vlan
  13. - add-nxos-vlan
  14. - name: Initialize iflist
  15. set_fact:
  16. iflist: []
  17. when: generate_iflist|bool
  18. tags:
  19. - nxos
  20. - vlan
  21. - nxos-vlan
  22. - allow-vlan
  23. - allow-nxos-vlan
  24. - remove-vlan
  25. - remove-ucs-vlan
  26. - name: Generate list of interfaces (stretched)
  27. set_fact:
  28. iflist: "{{ iflist + [item.key] }}"
  29. with_items: "{{ lookup('dict', port_channels) }}"
  30. when: generate_iflist|bool and is_stretched|bool
  31. tags:
  32. - nxos
  33. - vlan
  34. - nxos-vlan
  35. - allow-vlan
  36. - allow-nxos-vlan
  37. - remove-vlan
  38. - remove-ucs-vlan
  39. - name: Generate list of interfaces (non-stretched)
  40. set_fact:
  41. iflist: "{{ iflist + [item.key] }}"
  42. with_items: "{{ lookup('dict', port_channels) }}"
  43. when: generate_iflist|bool and not is_stretched|bool and not port_channels[item.key]|bool
  44. tags:
  45. - nxos
  46. - vlan
  47. - nxos-vlan
  48. - allow-vlan
  49. - allow-nxos-vlan
  50. - remove-vlan
  51. - remove-ucs-vlan
  52. - name: Associate interfaces to VLAN
  53. nxos_config:
  54. lines:
  55. - switchport trunk allowed vlan add {{ vlan_id }}
  56. parents: interface {{ item }}
  57. with_items: "{{ iflist }}"
  58. when: (delete_vlan is not defined or not delete_vlan|bool) and iflist is defined
  59. tags:
  60. - nxos
  61. - vlan
  62. - nxos-vlan
  63. - allow-vlan
  64. - allow-nxos-vlan
  65. - name: Add SVI definition
  66. nxos_interfaces:
  67. config:
  68. - name: Vlan{{ vlan_id }}
  69. enabled: True
  70. mtu: "{{ svi_mtu }}"
  71. description: "{{ svi_descr }}"
  72. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_mtu is defined and svi_descr is defined
  73. tags:
  74. - nxos
  75. - vlan
  76. - nxos-vlan
  77. - add-svi
  78. - name: Set per-DC v4 IDF ID
  79. set_fact: v4_idf_id={{ idf_id }}
  80. when: (delete_vlan is not defined or not delete_vlan|bool) and not is_stretched|bool and build_v4|bool
  81. tags:
  82. - nxos
  83. - vlan
  84. - nxos-vlan
  85. - add-svi-l3
  86. - add-svi-l3-v4
  87. - name: Set stretched v4 IDF ID
  88. set_fact: v4_idf_id={{ stretched_idf_id }}
  89. when: (delete_vlan is not defined or not delete_vlan|bool) and is_stretched|bool and build_v4|bool
  90. tags:
  91. - nxos
  92. - vlan
  93. - nxos-vlan
  94. - add-svi-l3
  95. - add-svi-l3-v4
  96. - name: Construct SVI IPv4 address
  97. set_fact: svi_v4_prefix={{ base_major_net }}.{{ vlan_id }}.{{ v4_idf_id }} svi_subnet_len="24"
  98. when: (delete_vlan is not defined or not delete_vlan|bool) and build_v4|bool
  99. tags:
  100. - nxos
  101. - vlan
  102. - nxos-vlan
  103. - add-svi-l3
  104. - add-svi-l3-v4
  105. - name: Add SVI v4 L3 parameters
  106. nxos_l3_interfaces:
  107. config:
  108. - name: Vlan{{ vlan_id }}
  109. ipv4:
  110. - address: "{{ svi_v4_prefix }}.{{ core_svi_v4_suffix }}/{{ svi_subnet_len }}"
  111. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v4_prefix is defined
  112. tags:
  113. - nxos
  114. - vlan
  115. - nxos-vlan
  116. - add-svi-l3
  117. - add-svi-l3-v4
  118. - name: Set per-DC v6 IDF ID
  119. set_fact: v6_idf_id="{{ '%0x' % idf_id|int }}"
  120. when: (delete_vlan is not defined or not delete_vlan|bool) and not is_stretched|bool and build_v6|bool
  121. tags:
  122. - nxos
  123. - vlan
  124. - nxos-vlan
  125. - add-svi-l3
  126. - add-svi-l3-v6
  127. - name: Set stretched v6 IDF ID
  128. set_fact: v6_idf_id="{{ '%0x' % stretched_idf_id|int }}"
  129. when: (delete_vlan is not defined or not delete_vlan|bool) and is_stretched|bool and build_v6|bool
  130. tags:
  131. - nxos
  132. - vlan
  133. - nxos-vlan
  134. - add-svi-l3
  135. - add-svi-l3-v6
  136. - name: Construct SVI v6 address
  137. set_fact: svi_v6_network="{{ base_v6_prefix }}:{{ '%0x' % vlan_id|int }}{{ v6_idf_id }}::"
  138. when: (delete_vlan is not defined or not delete_vlan|bool) and build_v6|bool
  139. tags:
  140. - nxos
  141. - vlan
  142. - nxos-vlan
  143. - add-svi-l3
  144. - add-svi-l3-v6
  145. - name: Add SVI v6 L3 parameters
  146. nxos_l3_interfaces:
  147. config:
  148. - name: Vlan{{ vlan_id }}
  149. ipv6:
  150. - address: "{{ svi_v6_network }}{{ core_svi_v6_suffix }}/64"
  151. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v6_network is defined
  152. tags:
  153. - nxos
  154. - vlan
  155. - nxos-vlan
  156. - add-svi-l3
  157. - add-svi-l3-v6
  158. - name: Add SVI v6 L3 parameters
  159. nxos_config:
  160. lines:
  161. - ipv6 address use-link-local-only
  162. parents: interface Vlan{{ vlan_id }}
  163. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v6_link_local is defined
  164. tags:
  165. - nxos
  166. - vlan
  167. - nxos-vlan
  168. - add-svi-l3
  169. - add-svi-l3-v6
  170. - name: Add SVI OSPFv2 parameters
  171. nxos_interface_ospf:
  172. area: 0.0.0.0
  173. ospf: "{{ ospf_pid }}"
  174. interface: Vlan{{ vlan_id }}
  175. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v4_prefix is defined
  176. tags:
  177. - nxos
  178. - vlan
  179. - nxos-vlan
  180. - add-ospf
  181. - add-ospfv2
  182. - name: Add additional SVI OSPFv2 parameters
  183. nxos_config:
  184. lines:
  185. - ip ospf network {{ ospf_type }}
  186. parents: interface Vlan{{ vlan_id }}
  187. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v4_prefix is defined
  188. tags:
  189. - nxos
  190. - vlan
  191. - nxos-vlan
  192. - add-ospf
  193. - add-ospfv2
  194. - name: Disable SVI OSPFv2 passive interface
  195. nxos_config:
  196. lines:
  197. - no ip ospf passive-interface
  198. parents: interface Vlan{{ vlan_id }}
  199. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v4_prefix is defined and not passive_interface is defined
  200. tags:
  201. - nxos
  202. - vlan
  203. - nxos-vlan
  204. - add-ospf
  205. - add-ospfv2
  206. - name: Add SVI OSPFv3 parameters
  207. nxos_config:
  208. lines:
  209. - ipv6 router ospfv3 1 area 0.0.0.0
  210. - ospfv3 network {{ ospf_type }}
  211. parents: interface Vlan{{ vlan_id }}
  212. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v6_network is defined or svi_v6_link_local is defined
  213. tags:
  214. - nxos
  215. - vlan
  216. - nxos-vlan
  217. - add-ospf
  218. - add-ospfv3
  219. - name: Disable SVI OSPFv3 passive interface
  220. nxos_config:
  221. lines:
  222. - no ospfv3 passive-interface
  223. parents: interface Vlan{{ vlan_id }}
  224. when: (delete_vlan is not defined or not delete_vlan|bool) and (svi_v6_network is defined or svi_v6_link_local is defined) and not passive_interface is defined
  225. tags:
  226. - nxos
  227. - vlan
  228. - nxos-vlan
  229. - add-ospf
  230. - add-ospfv3
  231. - name: Add addition SVI parameters
  232. nxos_config:
  233. lines:
  234. - no ip redirects
  235. - no ipv6 redirects
  236. parents: interface Vlan{{ vlan_id }}
  237. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v4_prefix is defined or svi_v6_network is defined
  238. tags:
  239. - nxos
  240. - vlan
  241. - nxos-vlan
  242. - add-svi-l3
  243. - name: Enable HSRP
  244. nxos_config:
  245. lines:
  246. - hsrp version 2
  247. parents: interface Vlan{{ vlan_id }}
  248. when: (delete_vlan is not defined or not delete_vlan|bool) and (svi_v4_prefix is defined or svi_v6_network is defined) and use_hsrp is defined
  249. tags:
  250. - nxos
  251. - vlan
  252. - nxos-vlan
  253. - add-hsrp
  254. - name: Add HSRP v4 configuration
  255. nxos_config:
  256. lines:
  257. - authentication md5 key-chain HSRP_KEY
  258. - preempt
  259. - priority {{ core_hsrp_priority }}
  260. - timers 1 3
  261. - ip {{ svi_v4_prefix }}.{{ core_hsrp_vip_v4_suffix }}
  262. - track {{ core_hsrp_v4_track }} decrement 20
  263. parents:
  264. - interface Vlan{{ vlan_id }}
  265. - hsrp 1
  266. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v4_prefix is defined and use_hsrp is defined
  267. tags:
  268. - nxos
  269. - vlan
  270. - nxos-vlan
  271. - add-hsrp
  272. - add-hsrp-v4
  273. - name: Add HSRP v6 configuration
  274. nxos_config:
  275. lines:
  276. - authentication md5 key-chain HSRP_KEY
  277. - preempt
  278. - priority {{ core_hsrp_priority }}
  279. - timers 1 3
  280. - ip {{ svi_v6_network }}{{ core_hsrp_vip_v6_suffix }}
  281. - track {{ core_hsrp_v6_track }} decrement 20
  282. parents:
  283. - interface Vlan{{ vlan_id }}
  284. - hsrp 2 ipv6
  285. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v6_network is defined and use_hsrp is defined
  286. tags:
  287. - nxos
  288. - vlan
  289. - nxos-vlan
  290. - add-hsrp
  291. - add-hsrp-v6
  292. - name: Add DHCP relays
  293. nxos_config:
  294. lines:
  295. - ip dhcp relay address {{ item }}
  296. parents: interface Vlan{{ vlan_id }}
  297. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v4_prefix is defined
  298. with_items: "{{ dhcp_servers }}"
  299. tags:
  300. - nxos
  301. - vlan
  302. - nxos-vlan
  303. - add-dhcp-relay
  304. - name: Add v4 ACL
  305. nxos_acl_interface:
  306. direction: ingress
  307. interface: Vlan{{ vlan_id }}
  308. name: "{{ v4_acl_name }}"
  309. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v4_prefix is defined and add_acl|bool
  310. tags:
  311. - nxos
  312. - vlan
  313. - nxos-vlan
  314. - add-v4-acl
  315. - name: Add v6 ACL
  316. nxos_config:
  317. lines:
  318. - ipv6 traffic-filter {{ v6_acl_name }} in
  319. parents: interface Vlan{{ vlan_id }}
  320. when: (delete_vlan is not defined or not delete_vlan|bool) and svi_v6_network and add_acl|bool
  321. tags:
  322. - nxos
  323. - vlan
  324. - nxos-vlan
  325. - add-v6-acl
  326. - name: Remove SVI
  327. nxos_interfaces:
  328. config:
  329. - name: Vlan{{ vlan_id }}
  330. state: deleted
  331. when: delete_vlan is defined and delete_vlan|bool
  332. tags:
  333. - nxos
  334. - vlan
  335. - nxos-vlan
  336. - delete-svi
  337. - name: Remove VLAN from interfaces
  338. nxos_config:
  339. lines:
  340. - switchport trunk allowed vlan remove {{ vlan_id }}
  341. parents: interface {{ item }}
  342. with_items: "{{ iflist }}"
  343. when: delete_vlan is defined and delete_vlan|bool and iflist is defined
  344. tags:
  345. - nxos
  346. - vlan
  347. - nxos-vlan
  348. - remove-vlan
  349. - remove-ucs-vlan
  350. - name: Delete VLAN definition
  351. nxos_vlan:
  352. vlan_id: "{{ vlan_id }}"
  353. state: absent
  354. when: delete_vlan is defined and delete_vlan|bool
  355. tags:
  356. - nxos
  357. - vlan
  358. - nxos-vlan
  359. - delete-vlan
  360. - delete-nxos-vlan