diff --git a/roles/bird/handlers/main.yml b/roles/bird/handlers/main.yml new file mode 100644 index 0000000..90c34d8 --- /dev/null +++ b/roles/bird/handlers/main.yml @@ -0,0 +1,7 @@ +--- + +- name: Restart bird + service: name=bird state=restarted + +- name: Restart bird6 + service: name=bird6 state=restarted diff --git a/roles/bird/tasks/main.yml b/roles/bird/tasks/main.yml new file mode 100644 index 0000000..c014448 --- /dev/null +++ b/roles/bird/tasks/main.yml @@ -0,0 +1,14 @@ +--- + +- name: Install bird + apt: package={{ item }} + with_items: + - bird + - bird6 + +- name: Configure bird + template: src=bird.conf.j2 dest=/etc/bird/bird.conf + notify: Restart bird + +- name: Enable bird + service: name=bird state=started enabled=yes diff --git a/roles/bird/templates/bird.conf.j2 b/roles/bird/templates/bird.conf.j2 new file mode 100644 index 0000000..3825cdd --- /dev/null +++ b/roles/bird/templates/bird.conf.j2 @@ -0,0 +1,29 @@ +# {{ ansible_managed }} + +log syslog all; + +router id {{ ansible_default_ipv4.address }}; + +timeformat protocol iso long; + +protocol device { + scan time 10; +} + +protocol kernel { + metric 64; # Use explicit kernel route metric to avoid collisions + # with non-BIRD routes in the kernel routing table + import none; + export all; # Actually insert routes into the kernel routing table +} + +protocol ospf bbmesh { + area 0 { + interface "br-*" { + stub yes; + }; + interface "tun-*" { + type ptp; + }; + }; +} diff --git a/site.yml b/site.yml index 784fc88..88c304d 100644 --- a/site.yml +++ b/site.yml @@ -11,6 +11,7 @@ hosts: [gw11.regensburg.freifunk.net, gw21.regensburg.freifunk.net, gw31.regensburg.freifunk.net] roles: - batman + - bird - fastd - mesh-interfaces - exit-ipv4