#!/usr/bin/env ansible-playbook --- - 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 ...