main.yml 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. ---
  2. - name: Add VLAN definition
  3. nxos_vlans:
  4. config:
  5. - vlan_id: "{{ vlan_id }}"
  6. enabled: True
  7. name: "{{ vlan_name }}"
  8. tags:
  9. - NXOS
  10. - vlan
  11. - nxos-vlan
  12. - add-vlan
  13. - add-nxos-vlan
  14. - name: Generate list of interfaces (stretched)
  15. set_fact: iflist="{{ port_channels | list }}"
  16. when: generate_iflist is True and is_stretched is True
  17. tags:
  18. - NXOS
  19. - vlan
  20. - nxos-vlan
  21. - allow-vlan
  22. - name: Generate list of interfaces (non-stretched)
  23. set_fact: iflist="{{ iflist }} + [{{ item }}]"
  24. with_items: "{{ port_channels | list }}"
  25. when: generate_iflist is True and is_stretched is False and port_channels[item] is False
  26. tags:
  27. - NXOS
  28. - vlan
  29. - nxos-vlan
  30. - allow-vlan
  31. - name: Associate interfaces to VLAN
  32. nxos_config:
  33. lines:
  34. - switchport trunk allowed vlan add {{ vlan_id }}
  35. parents: interface {{ item }}
  36. with_items: "{{ iflist }}"
  37. when: iflist is defined
  38. tags:
  39. - NXOS
  40. - vlan
  41. - nxos-vlan
  42. - allow-vlan
  43. - name: Add SVI definition
  44. nxos_interfaces:
  45. config:
  46. - name: Vlan{{ vlan_id }}
  47. enabled: True
  48. mode: layer3
  49. mtu: "{{ svi_mtu }}"
  50. description: "{{ svi_descr }}"
  51. when: svi_mtu is defined and svi_descr is defined
  52. tags:
  53. - NXOS
  54. - vlan
  55. - nxos-vlan
  56. - add-svi
  57. - name: Set per-DC v4 IDF ID
  58. set_fact: v4_idf_id={{ idf_id }}
  59. when: is_stretched is False and build_v4 is True
  60. tags:
  61. - NXOS
  62. - vlan
  63. - nxos-vlan
  64. - add-svi-l3
  65. - add-svi-l3-v4
  66. - name: Set stretched v4 IDF ID
  67. set_fact: v4_idf_id={{ stretched_idf_id }}
  68. when: is_stretched is True and build_v4 is True
  69. tags:
  70. - NXOS
  71. - vlan
  72. - nxos-vlan
  73. - add-svi-l3
  74. - add-svi-l3-v4
  75. - name: Construct SVI IPv4 address
  76. set_fact: svi_v4_prefix={{ base_major_net }}.{{ vlan_id }}.{{ v4_idf_id }}
  77. when: build_v4 is True
  78. tags:
  79. - NXOS
  80. - vlan
  81. - nxos-vlan
  82. - add-svi-l3
  83. - add-svi-l3-v4
  84. - name: Set SVI subnet length
  85. set_fact: svi_subnet_len="24"
  86. when: build_v4 is True
  87. tags:
  88. - NXOS
  89. - vlan
  90. - nxos-vlan
  91. - add-svi-l3
  92. - add-svi-l3-v4
  93. - name: Add SVI v4 L3 parameters
  94. nxos_l3_interfaces:
  95. config:
  96. - name: Vlan{{ vlan_id }}
  97. ipv4:
  98. - address: "{{ svi_v4_prefix }}.{{ core_svi_v4_suffix }}/{{ svi_subnet_len }}"
  99. when: svi_v4_prefix is defined
  100. tags:
  101. - NXOS
  102. - vlan
  103. - nxos-vlan
  104. - add-svi-l3
  105. - add-svi-l3-v4
  106. - name: Set per-DC v6 IDF ID
  107. set_fact: v6_idf_id="{{ '%0x' % idf_id|int }}"
  108. when: is_stretched is False and build_v6 is True
  109. tags:
  110. - NXOS
  111. - vlan
  112. - nxos-vlan
  113. - add-svi-l3
  114. - add-svi-l3-v6
  115. - name: Set stretched v6 IDF ID
  116. set_fact: v6_idf_id="{{ '%0x' % stretched_idf_id|int }}"
  117. when: is_stretched is True and build_v6 is True
  118. tags:
  119. - NXOS
  120. - vlan
  121. - nxos-vlan
  122. - add-svi-l3
  123. - add-svi-l3-v6
  124. - name: Construct SVI v6 address
  125. set_fact: svi_v6_network="{{ base_v6_prefix }}:{{ '%0x' % vlan_id|int }}{{ v6_idf_id }}::"
  126. when: build_v6 is True
  127. tags:
  128. - NXOS
  129. - vlan
  130. - nxos-vlan
  131. - add-svi-l3
  132. - add-svi-l3-v6
  133. - name: Add SVI v6 L3 parameters
  134. nxos_l3_interfaces:
  135. config:
  136. - name: Vlan{{ vlan_id }}
  137. ipv6:
  138. - address: "{{ svi_v6_network }}{{ core_svi_v6_suffix }}/64"
  139. when: svi_v6_network is defined
  140. tags:
  141. - NXOS
  142. - vlan
  143. - nxos-vlan
  144. - add-svi-l3
  145. - add-svi-l3-v6
  146. - name: Add SVI v6 L3 parameters
  147. nxos_config:
  148. lines:
  149. - ipv6 address use-link-local-only
  150. parents: interface Vlan{{ vlan_id }}
  151. when: svi_v6_link_local is defined
  152. tags:
  153. - NXOS
  154. - vlan
  155. - nxos-vlan
  156. - add-svi-l3
  157. - add-svi-l3-v6
  158. - name: Add SVI OSPFv2 parameters
  159. nxos_interface_ospf:
  160. area: 0.0.0.0
  161. ospf: "{{ ospf_pid }}"
  162. interface: Vlan{{ vlan_id }}
  163. when: svi_v4_prefix is defined
  164. tags:
  165. - NXOS
  166. - vlan
  167. - nxos-vlan
  168. - add-ospf
  169. - add-ospfv2
  170. - name: Add additional SVI OSPFv2 parameters
  171. nxos_config:
  172. lines:
  173. - ip ospf network {{ ospf_type }}
  174. parents: interface Vlan{{ vlan_id }}
  175. when: svi_v4_prefix is defined
  176. tags:
  177. - NXOS
  178. - vlan
  179. - nxos-vlan
  180. - add-ospf
  181. - add-ospfv2
  182. - name: Disable SVI OSPFv2 passive interface
  183. nxos_config:
  184. lines:
  185. - no ip ospf passive-interface
  186. parents: interface Vlan{{ vlan_id }}
  187. when: svi_v4_prefix is defined and not passive_interface is defined
  188. tags:
  189. - NXOS
  190. - vlan
  191. - nxos-vlan
  192. - add-ospf
  193. - add-ospfv2
  194. - name: Add SVI OSPFv3 parameters
  195. nxos_config:
  196. lines:
  197. - ipv6 router ospfv3 1 area 0.0.0.0
  198. - ospfv3 network {{ ospf_type }}
  199. parents: interface Vlan{{ vlan_id }}
  200. when: svi_v6_network is defined or svi_v6_link_local is defined
  201. tags:
  202. - NXOS
  203. - vlan
  204. - nxos-vlan
  205. - add-ospf
  206. - add-ospfv3
  207. - name: Disable SVI OSPFv3 passive interface
  208. nxos_config:
  209. lines:
  210. - no ospfv3 passive-interface
  211. parents: interface Vlan{{ vlan_id }}
  212. when: (svi_v6_network is defined or svi_v6_link_local is defined) and not passive_interface is defined
  213. tags:
  214. - NXOS
  215. - vlan
  216. - nxos-vlan
  217. - add-ospf
  218. - add-ospfv3
  219. - name: Add addition SVI parameters
  220. nxos_config:
  221. lines:
  222. - no ip redirects
  223. - no ipv6 redirects
  224. parents: interface Vlan{{ vlan_id }}
  225. when: svi_v4_prefix is defined or svi_v6_network is defined
  226. tags:
  227. - NXOS
  228. - vlan
  229. - nxos-vlan
  230. - add-svi-l3
  231. - name: Enable HSRP
  232. nxos_config:
  233. lines:
  234. - hsrp version 2
  235. parents: interface Vlan{{ vlan_id }}
  236. when: (svi_v4_prefix is defined or svi_v6_network is defined) and use_hsrp is defined
  237. tags:
  238. - NXOS
  239. - vlan
  240. - nxos-vlan
  241. - add-hsrp
  242. - name: Add HSRP v4 configuration
  243. nxos_config:
  244. lines:
  245. - authentication md5 key-chain HSRP_KEY
  246. - preempt
  247. - priority {{ core_hsrp_priority }}
  248. - timers 1 3
  249. - ip {{ svi_v4_prefix }}.{{ core_hsrp_vip_v4_suffix }}
  250. - track {{ core_hsrp_v4_track }} decrement 20
  251. parents:
  252. - interface Vlan{{ vlan_id }}
  253. - hsrp 1
  254. when: svi_v4_prefix is defined and use_hsrp is defined
  255. tags:
  256. - NXOS
  257. - vlan
  258. - nxos-vlan
  259. - add-hsrp
  260. - add-hsrp-v4
  261. - name: Add HSRP v6 configuration
  262. nxos_config:
  263. lines:
  264. - authentication md5 key-chain HSRP_KEY
  265. - preempt
  266. - priority {{ core_hsrp_priority }}
  267. - timers 1 3
  268. - ip {{ svi_v6_network }}{{ core_hsrp_vip_v6_suffix }}
  269. - track {{ core_hsrp_v6_track }} decrement 20
  270. parents:
  271. - interface Vlan{{ vlan_id }}
  272. - hsrp 2 ipv6
  273. when: svi_v6_network is defined and use_hsrp is defined
  274. tags:
  275. - NXOS
  276. - vlan
  277. - nxos-vlan
  278. - add-hsrp
  279. - add-hsrp-v6