You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/playbooks/bird.yml

485 lines
13 KiB
YAML

#!/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
...