first commit

This commit is contained in:
ace 2021-10-25 12:53:52 +03:00
commit fec1339a2d
No known key found for this signature in database
GPG Key ID: 2E47CC17BA7F8CF0
6 changed files with 95 additions and 0 deletions

0
README.md Normal file
View File

10
handlers/main.yml Normal file
View File

@ -0,0 +1,10 @@
---
- name: restart bird
systemd:
name: bird
state: restarted
daemon_reload: yes
- name: restart loopback
shell: |
ifdown lo ; ifup lo

0
meta/main.yml Normal file
View File

26
tasks/main.yml Normal file
View File

@ -0,0 +1,26 @@
---
- name: install bird
package:
name: bird2
state: present
- name: add bird config
template:
src: bird.conf.j2
dest: /etc/bird.conf
notify:
- restart bird
- name: update ifcfg-lo config
template:
src: ifcfg-lo.j2
dest: /etc/sysconfig/network-scripts/ifcfg-lo
notify:
- restart loopback
- name: start bird service
systemd:
name: bird
state: started
enabled: yes
daemon_reload: yes

44
templates/bird.conf.j2 Normal file
View File

@ -0,0 +1,44 @@
log syslog all;
router id {{ bird.bgp.common[inventory_hostname].routerid }};
protocol device {
}
protocol direct {
disabled; # Disable by default
ipv4; # Connect to default IPv4 table
ipv6; # ... and to default IPv6 table
}
protocol kernel KERNEL4 {
ipv4 { # Connect protocol to IPv4 table by channel
export all; # Export to protocol. default is export none
};
}
protocol kernel KERNEL6 {
ipv6 { export all; };
}
{% for protocol_static in bird.bgp.static %}
protocol static {{ protocol_static.name }} {
ipv4; # Again, IPv4 channel with default options
{% for network in protocol_static['networks'][inventory_hostname] %}
route {{ network.ip }}/{{ network.mask_dash }} via "lo" { bgp_local_pref = {{ network.bgp_local_pref }}; };
{% endfor %}
}
{% endfor %}
{% for protocol_bgp in bird.bgp.bgp %}
protocol bgp {{ protocol_bgp.name }} {
confederation {{ protocol_bgp.confederation }};
confederation member yes;
local as {{ protocol_bgp.local_asnum }};
neighbor {{ protocol_bgp.remote_addr }} as {{ protocol_bgp.remote_asnum }};
hold time 30;
ipv4 {
export filter {
{% for proto in protocol_bgp.export %}
if proto = "{{ proto }}" then accept;
{% endfor %}
else reject;
};
};
}
{% endfor %}

15
templates/ifcfg-lo.j2 Normal file
View File

@ -0,0 +1,15 @@
DEVICE=lo
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
{% for protocol_static in bird.bgp.static %}
{% for network in protocol_static['networks'][ansible_fqdn] %}
IPADDR{{ loop.index }}={{ network['ip'] }}
NETMASK{{ loop.index }}={{ network['mask'] }}
{% endfor %}
{% endfor %}
ONBOOT=yes
NAME=loopback