#!/usr/bin/env ansible-playbook --- - hosts: - isp-1.rtr.infra.auro.re - isp-2.rtr.infra.auro.re vars: bird__router_ids: isp-1.rtr.infra.auro.re: 10.203.1.5 isp-2.rtr.infra.auro.re: 10.203.1.6 bird__router_id: "{{ bird__router_ids[inventory_hostname] }}" bird__radv_interfaces: client-0: prefix: - 2a09:6841::/56 domain_search: - client-0.isp.auro.re client-1: prefix: - 2a09:6841:0:100::/56 domain_search: - client-1.isp.auro.re client-2: prefix: - 2a09:6841:0:200::/56 domain_search: - client-2.isp.auro.re client-3: prefix: - 2a09:6841:0:300::/56 domain_search: - client-3.isp.auro.re client-4: prefix: - 2a09:6841:0:400::/56 domain_search: - client-4.isp.auro.re bird__radv_dns_servers: - 2a09:6840:128::10:3 bird__asn: aurore: 43619 bird__bgp_addresses: isp-1.rtr.infra.auro.re: - 2a09:6840:203:1:5::1 - 10.203.1.5 isp-2.rtr.infra.auro.re: - 2a09:6840:203:1:6::1 - 10.203.1.6 bird__bgp_sessions: - name: edge1 local: address: "{{ bird__bgp_addresses[inventory_hostname] }}" as: "{{ bird__asn.aurore }}" remote: address: - 2a09:6840:203:1:1::1 - 10.203.1.1 as: "{{ bird__asn.aurore }}" import: - accept: true export: - accept: false - name: edge2 local: address: "{{ bird__bgp_addresses[inventory_hostname] }}" as: "{{ bird__asn.aurore }}" remote: address: - 2a09:6840:203:1:2::1 - 10.203.1.2 as: "{{ bird__asn.aurore }}" import: - accept: true export: - accept: false bird__ospf_broadcast_interfaces: ens19: null bird__ospf_stub_interfaces: - clients-0 - clients-1 - clients-2 - clients-3 - clients-4 roles: - bird - hosts: - infra-1.rtr.infra.auro.re - infra-2.rtr.infra.auro.re vars: bird__router_ids: infra-1.rtr.infra.auro.re: 10.203.1.3 infra-2.rtr.infra.auro.re: 10.203.1.4 bird__router_id: "{{ bird__router_ids[inventory_hostname] }}" bird__ospf_broadcast_interfaces: ens19: null bird__ospf_stub_interfaces: - ens20 - ens21 - ens22 - ens23 - enp2s1 - enp2s2 - enp2s3 bird__asn: aurore: 43619 bird__bgp_addresses: infra-1.rtr.infra.auro.re: - 2a09:6840:203:1:3::1 - 10.203.1.3 infra-2.rtr.infra.auro.re: - 2a09:6840:203:1:4::1 - 10.203.1.4 bird__bgp_sessions: - name: edge1 local: address: "{{ bird__bgp_addresses[inventory_hostname] }}" as: "{{ bird__asn.aurore }}" remote: address: - 2a09:6840:203:1:1::1 - 10.203.1.1 as: "{{ bird__asn.aurore }}" import: - accept: true export: - accept: false - name: edge2 local: address: "{{ bird__bgp_addresses[inventory_hostname] }}" as: "{{ bird__asn.aurore }}" remote: address: - 2a09:6840:203:1:2::1 - 10.203.1.2 as: "{{ bird__asn.aurore }}" import: - accept: true export: - accept: false roles: - bird - hosts: - edge-1.rtr.infra.auro.re - edge-2.rtr.infra.auro.re vars: bird__router_ids: edge-1.rtr.infra.auro.re: 10.203.1.1 edge-2.rtr.infra.auro.re: 10.203.1.2 bird__asn: aurore: 43619 crans: 204515 zayo: 8218 viarezo: 212424 bird__orig_prefixes: aurore: - 45.66.108.0/22 - 2a09:6840::/29 crans: - 185.230.76.0/22 - 2a0c:700::/32 viarezo: - 138.195.144.0/20 - 192.159.121.0/24 - 2a0c:b641:2f0::/44 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.rtr.infra.auro.re: - 2a09:6840:203:1:1::1 - 10.203.1.1 edge-2.rtr.infra.auro.re: - 2a09:6840:203:1:2::1 - 10.203.1.2 legacy: edge-1.rtr.infra.auro.re: - 2a09:6840:129::10:2 - 10.129.10.2 edge-2.rtr.infra.auro.re: - 2a09:6840:129::10:102 - 10.129.10.102 bird__bgp_sessions: - name: 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 - name: 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: - prefix: "{{ bird__orig_prefixes.aurore }}" sub: true accept: true - accept: false export: - bgp_proto: - crans - zayo accept: true # - name: infra1 # local: # address: "{{ bird__bgp_addresses[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:203:1:3::1 # - 10.203.1.3 # as: "{{ bird__asn.aurore }}" # import: # - accept: false # export: # - bgp_proto: # - crans # - viarezo # - zayo # accept: true # - accept: false # - name: infra2 # local: # address: "{{ bird__bgp_addresses[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:203:1:4::1 # - 10.203.1.4 # as: "{{ bird__asn.aurore }}" # import: # - accept: false # export: # - bgp_proto: # - crans # - viarezo # - zayo # accept: true # - accept: false # - name: isp1 # local: # address: "{{ bird__bgp_addresses[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:203:1:5::1 # - 10.203.1.5 # as: "{{ bird__asn.aurore }}" # import: # - accept: false # export: # - bgp_proto: # - crans # - viarezo # - zayo # accept: true # - accept: false # - name: isp2 # local: # address: "{{ bird__bgp_addresses[inventory_hostname] }}" # as: "{{ bird__asn.aurore }}" # remote: # address: # - 2a09:6840:203:1:6::1 # - 10.203.1.6 # as: "{{ bird__asn.aurore }}" # import: # - accept: false # export: # - bgp_proto: # - crans # - viarezo # - zayo # accept: true # - accept: false - name: 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'] | map('extract', bird__orig_prefixes) | flatten }}" sub: true accept: true - accept: false - name: 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 - zayo accept: true - prefix: "{{ bird__orig_prefixes.aurore }}" sub: true accept: true - accept: false # - name: 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 # - prefix: "{{ bird__orig_prefixes.aurore }}" # sub: true # accept: true # - accept: false bird__ospf_broadcast_interfaces: ens22: null bird__ospf_stub_interfaces: - ens19 - ens20 - ens21 bird__static_unreachable: "{{ bird__orig_prefixes.aurore }}" roles: - bird ...