#!/usr/bin/env ansible-playbook --- - hosts: - infra - isp - vpn roles: - bird #- hosts: # - isp-1.back.infra.auro.re # - isp-2.back.infra.auro.re # vars: # bird__router_ids: # isp-1.back.infra.auro.re: 10.203.1.5 # isp-2.back.infra.auro.re: 10.203.1.6 # bird__router_id: "{{ bird__router_ids[inventory_hostname] }}" # bird__radv_interfaces: # client0: # prefix: # - 2a09:6841::/64 # domain_search: # - client0.isp.auro.re # client1: # prefix: # - 2a09:6841:0:1::/64 # domain_search: # - client1.isp.auro.re # client2: # prefix: # - 2a09:6841:0:2::/64 # domain_search: # - client2.isp.auro.re # client3: # prefix: # - 2a09:6841:0:3::/64 # domain_search: # - client3.isp.auro.re # client4: # prefix: # - 2a09:6841:0:400::/64 # domain_search: # - client4.isp.auro.re # bird__radv_dns_servers: # - 2a09:6840:128::10:103 # - 2a09:6840:128::10:3 # bird__asn: # aurore: 43619 # bird__bgp_addresses: # isp-1.back.infra.auro.re: # - 2a09:6840:203::1:5 # - 10.203.1.5 # isp-2.back.infra.auro.re: # - 2a09:6840:203::1:6 # - 10.203.1.6 # bird__bgp_sessions: # edge1: # local: # address: "{{ bird__bgp_addresses[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:203::1:1 # - 10.203.1.1 # as: "{{ bird__asn.aurore }}" # import: # - accept: true # export: # - accept: false # edge2: # local: # address: "{{ bird__bgp_addresses[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:203::1:2 # - 10.203.1.2 # as: "{{ bird__asn.aurore }}" # import: # - accept: true # export: # - accept: false # bird__ospf_broadcast_interfaces: # back0: null # bird__ospf_stub_interfaces: # - client0 # - client1 # - client2 # - client3 # - client4 # roles: # - bird #- hosts: # - infra-1.back.infra.auro.re # - infra-2.back.infra.auro.re # vars: # bird__router_ids: # infra-1.back.infra.auro.re: 10.203.1.3 # infra-2.back.infra.auro.re: 10.203.1.4 # bird__router_id: "{{ bird__router_ids[inventory_hostname] }}" # bird__ospf_broadcast_interfaces: # back0: null # bird__ospf_stub_interfaces: # - monit0 # - wifi0 # - int0 # - pub0 # - bmc0 # - pve0 # - isp0 # - mgmt0 # bird__asn: # aurore: 43619 # bird__bgp_addresses: # infra-1.back.infra.auro.re: # - 2a09:6840:203::1:3 # - 10.203.1.3 # infra-2.back.infra.auro.re: # - 2a09:6840:203::1:4 # - 10.203.1.4 # bird__bgp_sessions: # edge1: # local: # address: "{{ bird__bgp_addresses[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:203::1:1 # - 10.203.1.1 # as: "{{ bird__asn.aurore }}" # import: # - accept: true # export: # - accept: false # edge2: # local: # address: "{{ bird__bgp_addresses[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: ## address: # - 2a09:6840:203::1:2 # - 10.203.1.2 # as: "{{ bird__asn.aurore }}" # import: # - accept: true # export: # - accept: false # roles: # - bird #- hosts: # - edge-1.back.infra.auro.re # - edge-2.back.infra.auro.re # vars: # bird__router_ids: # edge-1.back.infra.auro.re: 10.203.1.1 # edge-2.back.infra.auro.re: 10.203.1.2 # bird__asn: # aurore: 43619 # crans: 204515 # zayo: 8218 # viarezo: 212424 # rezel: 199116 # bird__orig_prefixes: # aurore: # - 45.66.108.0/22 # - 2a09:6840::/32 # - 2a09:6841::/32 # - 2a09:6842::/32 # crans: # - 185.230.76.0/22 # - 2a0c:700::/32 # viarezo: # - 138.195.144.0/20 # - 192.159.121.0/24 # - 2a0c:b641:2f0::/44 # rezel: # - 137.194.8.0/22 # - 2a09:6847::/32 # martians: # - 10.0.0.0/8 # - 172.16.0.0/12 # - 192.168.0.0/16 # - 100.64.0.0/10 # - 127.0.0.0/8 # - 169.254.0.0/16 # - 192.0.0.0/24 # - 192.0.2.0/24 # - 198.18.0.0/15 # - 198.51.100.0/24 # - 203.0.113.0/24 # - 224.0.0.0/4 # - 240.0.0.0/4 # - ::/128 # - ::1/128 # - ::ffff:0:0/96 # - ::/96 # - 100::/64 # - 2001:10::/28 # - 2001:db8::/32 # - fc00::/7 # - fe80::/10 # - fec0::/10 # - ff00::/8 # bird__router_id: "{{ bird__router_ids[inventory_hostname] }}" # bird__bgp_addresses: # edge: # edge-1.back.infra.auro.re: # - 2a09:6840:203::1:1 # - 10.203.1.1 # edge-2.back.infra.auro.re: # - 2a09:6840:203::1:2 # - 10.203.1.2 # legacy: # edge-1.back.infra.auro.re: # - 2a09:6840:129::10:2 # - 10.129.10.2 # edge-2.back.infra.auro.re: # - 2a09:6840:129::10:102 # - 10.129.10.102 # rezel: # edge-1.back.infra.auro.re: # - 2a09:6842:19:9116::1 # - 45.66.111.1 # edge-2.back.infra.auro.re: # - 2a09:6842:19:9116::3 # - 45.66.111.3 # bird__bgp_sessions: # edge: # local: # address: "{{ bird__bgp_addresses.edge[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: "{{ bird__bgp_addresses.edge # | dict2items # | selectattr('key', '!=', inventory_hostname) # | map(attribute='value') # | first }}" # as: "{{ bird__asn.aurore }}" # import: # - accept: true # export: # - local_pref: 75 # accept: true # vpn1: # local: # address: "{{ bird__bgp_addresses.edge[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:203::1:7 # - 10.203.1.7 # as: "{{ bird__asn.aurore }}" # import: # - accept: false # export: # - accept: true # vpn2: # local: # address: "{{ bird__bgp_addresses.edge[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:203::1:8 # - 10.203.1.8 # as: "{{ bird__asn.aurore }}" # import: # - accept: false # export: # - accept: false # legacy: # next_hop_self: true # local: # address: "{{ bird__bgp_addresses.legacy[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:129::240 # - 10.129.0.240 # as: "{{ bird__asn.aurore }}" # import: # - accept: false # export: # - bgp_proto: # - crans # - zayo # - rezel1 # - rezel2 # accept: true # - accept: false # zayo: # local: # address: # - 83.167.52.69 # - 2001:1b48:2:103::d7:2 # as: "{{ bird__asn.aurore }}" # remote: # address: # - 83.167.52.68 # - 2001:1b48:2:103::d7:1 # as: "{{ bird__asn.zayo }}" # import: # - prefix: "{{ bird__orig_prefixes.martians }}" # sub: true # accept: false # - accept: true # export: # - prefix: "{{ ['aurore', 'crans', 'viarezo', 'rezel'] # | map('extract', bird__orig_prefixes) # | flatten }}" # sub: true # accept: true ## - accept: false # crans: # local: # address: # - 185.230.79.254 # - 2a0c:700:28::2 # as: "{{ bird__asn.aurore }}" # remote: # address: # - 185.230.79.253 # - 2a0c:700:28::1 # as: "{{ bird__asn.crans }}" # import: # - prefix: "{{ bird__orig_prefixes.crans }}" # sub: true # accept: true # - accept: false # export: # - bgp_proto: # - viarezo # - rezel1 # - rezel2 # - zayo # accept: true # - prefix: "{{ bird__orig_prefixes.aurore }}" # sub: true # accept: true # - accept: false # rezel1: # local: # address: "{{ bird__bgp_addresses.rezel[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6842:19:9116::2 # - 45.66.111.2 # as: "{{ bird__asn.rezel }}" # import: # - prefix: "{{ bird__orig_prefixes.rezel }}" # sub: true # accept: true # - accept: false # export: # - bgp_proto: # - edge # - viarezo # - crans # - zayo # accept: true # - prefix: "{{ bird__orig_prefixes.aurore }}" # sub: true # accept: true # - accept: false # rezel2: # local: # address: "{{ bird__bgp_addresses.rezel[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6842:19:9116::4 # - 45.66.111.4 # as: "{{ bird__asn.rezel }}" # import: # - local_pref: 75 # - prefix: "{{ bird__orig_prefixes.rezel }}" # sub: true # accept: true # - accept: false # export: # - bgp_proto: # - edge # - viarezo # - crans # - zayo # accept: true # - prefix: "{{ bird__orig_prefixes.aurore }}" # sub: true # accept: true # - accept: false # viarezo: # local: # address: # - 192.159.121.134 # - 2a0c:b641:2ff::6 # as: "{{ bird__asn.aurore }}" # remote: # address: # - 192.159.121.133 # - 2a0c:b641:2ff::5 # as: "{{ bird__asn.viarezo }}" # import: # - prefix: "{{ bird__orig_prefixes.martians }}" # accept: false # - prefix: "{{ bird__orig_prefixes.viarezo }}" # sub: true # negate: true # local_pref: 50 # - accept: true # export: # - prefix: "{{ bird__orig_prefixes.aurore }}" # as_prepend: # asn: "{{ bird__asn.aurore }}" # size: 5 # - bgp_proto: # - crans # - zayo # accept: true # - accept: false # bird__ospf_broadcast_interfaces: # back0: null # bird__ospf_stub_interfaces: # - crans0 # - zayo0 # - rezel0 # - viarezo0 # bird__static_unreachable: "{{ bird__orig_prefixes.aurore }}" # roles: # - bird #- hosts: # - vpn-1.back.infra.auro.re # - vpn-2.back.infra.auro.re # vars: # bird__asn: # aurore: 43619 # bird__router_ids: # vpn-1.back.infra.auro.re: 10.203.1.7 # vpn-2.back.infra.auro.re: 10.203.1.8 # bird__router_id: "{{ bird__router_ids[inventory_hostname] }}" # bird__bgp_addresses: # vpn-1.back.infra.auro.re: # - 2a09:6840:203::1:7 # - 10.203.1.7 # vpn-2.back.infra.auro.re: # - 2a09:6840:203::1:8 # - 10.203.1.8 # bird__bgp_sessions: # edge1: # local: # address: "{{ bird__bgp_addresses[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:203::1:1 # - 10.203.1.1 # as: "{{ bird__asn.aurore }}" # import: # - accept: true # export: # - accept: false # edge2: # local: # address: "{{ bird__bgp_addresses[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:203::1:2 # - 10.203.1.2 # as: "{{ bird__asn.aurore }}" # import: # - accept: true # export: # - accept: false # bird__ospf_broadcast_interfaces: # back0: null # bird__ospf_stub_interfaces: ## - wg0 # roles: # - bird ...