Bladeren bron

Refactor peering role, move host vars to inventory, update inventory

Markus Lindenberg 10 jaren geleden
bovenliggende
commit
2da6495205
34 gewijzigde bestanden met toevoegingen van 133 en 96 verwijderingen
  1. 1 1
      Makefile
  2. 2 0
      inventories/dortmund/group_vars/all/peering.yml
  3. 4 0
      inventories/dortmund/host_vars/map.ffdo.de/mesh.yml
  4. 2 0
      inventories/dortmund/host_vars/snode01-1.ffdo.de/dhcp.yml
  5. 4 0
      inventories/dortmund/host_vars/snode01-1.ffdo.de/mesh.yml
  6. 21 0
      inventories/dortmund/host_vars/snode01-1.ffdo.de/peering.yml
  7. 2 0
      inventories/dortmund/host_vars/snode01-2.ffdo.de/dhcp.yml
  8. 4 0
      inventories/dortmund/host_vars/snode01-2.ffdo.de/mesh.yml
  9. 2 0
      inventories/dortmund/host_vars/snode02-1.ffdo.de/dhcp.yml
  10. 4 0
      inventories/dortmund/host_vars/snode02-1.ffdo.de/mesh.yml
  11. 21 0
      inventories/dortmund/host_vars/snode02-1.ffdo.de/peering.yml
  12. 2 0
      inventories/dortmund/host_vars/snode02-2.ffdo.de/dhcp.yml
  13. 4 0
      inventories/dortmund/host_vars/snode02-2.ffdo.de/mesh.yml
  14. 8 0
      inventories/dortmund/hosts
  15. 0 8
      inventory/dortmund
  16. 0 22
      playbooks/group_vars/all/supernodes.yml
  17. 0 9
      playbooks/group_vars/all/uplinks.yml
  18. 1 1
      playbooks/supernode.yml
  19. 2 2
      roles/internal/ffdo.bird/templates/bird.conf.j2
  20. 2 2
      roles/internal/ffdo.bird/templates/bird6.conf.j2
  21. 0 5
      roles/internal/ffdo.gre-uplink/tasks/debian.yml
  22. 0 14
      roles/internal/ffdo.gre-uplink/templates/bird.conf.j2
  23. 0 23
      roles/internal/ffdo.gre-uplink/templates/uplink_interfaces.j2
  24. 0 0
      roles/internal/ffdo.peering/README.md
  25. 0 0
      roles/internal/ffdo.peering/defaults/main.yml
  26. 0 0
      roles/internal/ffdo.peering/handlers/main.yml
  27. 0 0
      roles/internal/ffdo.peering/meta/main.yml
  28. 4 0
      roles/internal/ffdo.peering/tasks/debian.yml
  29. 4 4
      roles/internal/ffdo.gre-uplink/tasks/main.yml
  30. 14 0
      roles/internal/ffdo.peering/templates/bird.conf.j2
  31. 5 5
      roles/internal/ffdo.gre-uplink/templates/bird6.conf.j2
  32. 20 0
      roles/internal/ffdo.peering/templates/peering_interfaces.j2
  33. 0 0
      roles/internal/ffdo.peering/templates/supernode.sysctl.j2
  34. 0 0
      roles/internal/ffdo.peering/vars/main.yml

+ 1 - 1
Makefile

@@ -1,4 +1,4 @@
-ANSIBLE=ansible-playbook -i inventory
+ANSIBLE=ansible-playbook -i inventories/dortmund
 
 .PHONY: setup test update manage-users check-playbooks
 

+ 2 - 0
inventories/dortmund/group_vars/all/peering.yml

@@ -0,0 +1,2 @@
+as: '65403'
+routerid: "{{mesh_ipv4|ipaddr('address')}}"

+ 4 - 0
inventories/dortmund/host_vars/map.ffdo.de/mesh.yml

@@ -0,0 +1,4 @@
+mesh_ip_v4: 10.42.0.1/16
+mesh_ip_v6: fdec:16a3:681b:865c::1/64
+mesh_mac: 00:16:3e:07:46:d1
+bat_mac: 00:16:3e:27:8f:11

+ 2 - 0
inventories/dortmund/host_vars/snode01-1.ffdo.de/dhcp.yml

@@ -0,0 +1,2 @@
+dhcp_range_start: 10.42.9.1
+dhcp_range_end: 10.42.15.254

+ 4 - 0
inventories/dortmund/host_vars/snode01-1.ffdo.de/mesh.yml

@@ -0,0 +1,4 @@
+mesh_mac: 00:16:3e:7f:3b:9e
+bat_mac: 00:16:3e:04:49:a2
+mesh_ipv4: 10.42.8.1/16
+mesh_ipv6: fdec:16a3:681b:865c::8/64

+ 21 - 0
inventories/dortmund/host_vars/snode01-1.ffdo.de/peering.yml

@@ -0,0 +1,21 @@
+peers:
+  - name: ffrg-25
+    as: '65079'
+    source_ip4: 10.0.6.2
+    peer_ip4: 10.0.6.1
+    source_ip6: 2a03:2260:50:5a::2
+    peer_ip6: 2a03:2260:50:5a::1
+    gre:
+      ip: 10.0.6.2/30
+      ip6: 2a03:2260:50:5a::2/64
+      endpoint: 5.39.121.115
+  - name: ffrg11
+    as: '65079'
+    source_ip4: 10.0.6.6
+    peer_ip4: 10.0.6.5
+    source_ip6: 2a03:2260:50:5b::2
+    peer_ip6: 2a03:2260:50:5b::1
+    gre:
+      ip: 10.0.6.6/30
+      ip6: 2a03:2260:50:5b::2/64
+      endpoint: 85.14.244.128

+ 2 - 0
inventories/dortmund/host_vars/snode01-2.ffdo.de/dhcp.yml

@@ -0,0 +1,2 @@
+dhcp_range_start: 10.42.25.1
+dhcp_range_end: 10.42.31.254

+ 4 - 0
inventories/dortmund/host_vars/snode01-2.ffdo.de/mesh.yml

@@ -0,0 +1,4 @@
+mesh_mac: 00:16:3e:2d:30:c6
+bat_mac: 00:16:3e:33:6a:1f
+mesh_ipv4: 10.42.24.1/16
+mesh_ipv6: fdec:16a3:681b:865c::24/64

+ 2 - 0
inventories/dortmund/host_vars/snode02-1.ffdo.de/dhcp.yml

@@ -0,0 +1,2 @@
+dhcp_range_start: 10.42.17.1
+dhcp_range_end: 10.42.23.254

+ 4 - 0
inventories/dortmund/host_vars/snode02-1.ffdo.de/mesh.yml

@@ -0,0 +1,4 @@
+mesh_mac: 00:16:3e:22:e1:93
+bat_mac: 00:16:3e:17:85:15
+mesh_ipv4: 10.42.16.1/16
+mesh_ipv6: fdec:16a3:681b:865c::16/64

+ 21 - 0
inventories/dortmund/host_vars/snode02-1.ffdo.de/peering.yml

@@ -0,0 +1,21 @@
+peers:
+  - name: ffrg25
+    as: '65079'
+    source_ip4: 10.0.6.10
+    peer_ip4: 10.0.6.9
+    source_ip6: 2a03:2260:50:5c::2
+    peer_ip6: 2a03:2260:50:5c::1
+    gre:
+      ip: 10.0.6.10/30
+      ip6: 2a03:2260:50:5c::2/64
+      endpoint: 5.39.121.115
+  - name: ffrg11
+    as: '65079'
+    source_ip4: 10.0.6.14
+    peer_ip4: 10.0.6.13
+    source_ip6: 2a03:2260:50:5d::2
+    peer_ip6: 2a03:2260:50:5d::1
+    gre:
+      ip: 10.0.6.14/30
+      ip6: 2a03:2260:50:5d::2/64
+      endpoint: 85.14.244.128

+ 2 - 0
inventories/dortmund/host_vars/snode02-2.ffdo.de/dhcp.yml

@@ -0,0 +1,2 @@
+dhcp_range_start: 10.42.33.1
+dhcp_range_end: 10.42.39.254

+ 4 - 0
inventories/dortmund/host_vars/snode02-2.ffdo.de/mesh.yml

@@ -0,0 +1,4 @@
+mesh_mac: 00:16:3e:06:8e:ce
+bat_mac: 00:16:3e:16:3c:54
+mesh_ipv4: 10.42.32.1/16
+mesh_ipv6: fdec:16a3:681b:865c::32/64

+ 8 - 0
inventories/dortmund/hosts

@@ -0,0 +1,8 @@
+[supernodes]
+snode01-1.ffdo.de
+snode01-2.ffdo.de
+snode02-1.ffdo.de
+snode02-2.ffdo.de
+
+[mapservers]
+map.ffdo.de

+ 0 - 8
inventory/dortmund

@@ -1,8 +0,0 @@
-[supernodes]
-node01-1.do.freifunk.ruhr
-node01-2.do.freifunk.ruhr
-node02-1.do.freifunk.ruhr
-node02-2.do.freifunk.ruhr
-
-[mapservers]
-map.do.freifunk.ruhr

+ 0 - 22
playbooks/group_vars/all/supernodes.yml

@@ -1,22 +0,0 @@
-supernode_top_domain: ff.test
-supernodes:
-  - name: node02
-    public_ip: 192.168.77.22/24
-    mesh_ip_v4: 10.42.0.16/16
-    mesh_ip_v6: fdec:16a3:681b:865c::16/64
-    mesh_mac: c2:e1:c6:e5:68:4c
-    bat_mac: 1e:f5:dc:71:bb:5f
-    dhcp_range_start: 10.42.6.2
-    dhcp_range_end: 10.42.8.254
-    public_interface: eth1
-    #uplink_tunnel_ip: 172.16.43.2/30
-    #uplink_tunnel_ip_v6: fd30:db1d:2377:4144::2/64
-  - name: map
-    public_ip: 192.168.77.29/24
-    mesh_ip_v4: 10.42.0.128/16
-    mesh_ip_v6: fdec:16a3:681b:865c::80/64
-    mesh_mac: 12:78:92:f8:1b:42
-    bat_mac: f6:9c:fe:9d:d4:da
-    public_interface: eth1
-
-supernode_as: '65403'

+ 0 - 9
playbooks/group_vars/all/uplinks.yml

@@ -1,9 +0,0 @@
-uplinks:
-- name: uplink01
-  public_ip: 192.178.77.31/24
-  as: '65079'
-  public_interface: eth1
-  tunnel:
-  - tunnel_ip: 172.16.42.1/30
-    address_v6: fd30:db1d:2377:4143::1/64
-    supernode: "{{supernodes[0]}}"

+ 1 - 1
playbooks/supernode.yml

@@ -5,5 +5,5 @@
   roles:
   - ffdo.batman
   - ffdo.mesh-interfaces
-  - ffdo.gre-uplink
+  - ffdo.peering
   - ffdo.supernode

+ 2 - 2
roles/internal/ffdo.bird/templates/bird.conf.j2

@@ -3,7 +3,7 @@
 #
 
 log syslog all;
-router id {{mesh_ipv4|ipaddr('address')}};
+router id {{routerid}};
 
 include "/etc/bird.d/*.cfg"
 
@@ -23,7 +23,7 @@ protocol device {
 };
 
 template bgp ibgp {
-        local as {{supernode_as}};
+        local as {{as}};
         import all;
         export all;
         next hop self;

+ 2 - 2
roles/internal/ffdo.bird/templates/bird6.conf.j2

@@ -3,7 +3,7 @@
 #
 
 log syslog all;
-router id {{mesh_ipv4|ipaddr('address')}};
+router id {{routerid}};
 
 include "/etc/bird6.d/*.cfg"
 
@@ -30,8 +30,8 @@ protocol device {
 }
 
 template bgp ibgp {
+        local as {{as}};
         source address {{mesh_ipv6|ipaddr('address')}};
-        local as {{supernode_as}};
         import all;
         export all;
         next hop self;

+ 0 - 5
roles/internal/ffdo.gre-uplink/tasks/debian.yml

@@ -1,5 +0,0 @@
-
-
-- name: Restart network
-  when: network_template_installed|changed
-  shell: "ifdown --exclude=lo --exclude={{supernode_public_interface}} -a && ifup --exclude=lo --exclude={{supernode_public_interface}} -a"

+ 0 - 14
roles/internal/ffdo.gre-uplink/templates/bird.conf.j2

@@ -1,14 +0,0 @@
-#
-# This file is managed by ansible. Do not edit by hand!
-#
-
-{% if supernode_uplinks is defined %}
-{% for uplink in supernode_uplinks %}
-protocol bgp {{uplink.name}} from ibgp {
-        source address {{uplink.address}};
-        neighbor {{uplink.dstaddr}} as {{uplink.as}};
-        default bgp_med 2;
-};
-
-{% endfor %}
-{% endif %}

+ 0 - 23
roles/internal/ffdo.gre-uplink/templates/uplink_interfaces.j2

@@ -1,23 +0,0 @@
-## Uplink-Tunnel zum FFRG/FFRL-Backbone
-
-{% if supernode_uplinks is defined %}
-{% for uplink in supernode_uplinks %}
-{% if uplink.comment is defined %}
-# {{uplink.comment}}
-{% endif %}
-auto {{uplink.name}}
-iface {{uplink.name}} inet tunnel
-    mode gre
-    address {{uplink.address}}
-    dstaddr {{uplink.dstaddr}}
-    netmask {{uplink.netmask}}
-    local {{supernode_local_ip|ipaddr('address')}}
-    endpoint {{uplink.endpoint}}
-    mtu 1400
-    ttl 64
-
-iface {{uplink.name}} inet6 static
-    address {{uplink.address_v6}}
-
-{% endfor %}
-{% endif %}

roles/internal/ffdo.gre-uplink/README.md → roles/internal/ffdo.peering/README.md


roles/internal/ffdo.gre-uplink/defaults/main.yml → roles/internal/ffdo.peering/defaults/main.yml


roles/internal/ffdo.gre-uplink/handlers/main.yml → roles/internal/ffdo.peering/handlers/main.yml


roles/internal/ffdo.gre-uplink/meta/main.yml → roles/internal/ffdo.peering/meta/main.yml


+ 4 - 0
roles/internal/ffdo.peering/tasks/debian.yml

@@ -0,0 +1,4 @@
+---
+- name: Restart network
+  when: network_template_installed|changed
+  shell: "ifdown --exclude=lo --exclude={{ansible_default_ipv4.alias}} -a && ifup --exclude=lo --exclude={{ansible_default_ipv4.alias}} -a"

+ 4 - 4
roles/internal/ffdo.gre-uplink/tasks/main.yml

@@ -19,13 +19,13 @@
     dest: "/etc/network/interfaces.d/{{item.file}}"
     src: "{{item.template}}"
   with_items:
-  - file: uplink.cfg
-    template: uplink_interfaces.j2
+  - file: peering.cfg
+    template: peering_interfaces.j2
 
 - name: Install bird.conf
-  template: src=bird.conf.j2 dest=/etc/bird.d/uplinks.conf
+  template: src=bird.conf.j2 dest=/etc/bird.d/peering.conf
   notify: Restart bird daemons
 
 - name: Install bird6.conf
-  template: src=bird6.conf.j2 dest=/etc/bird6.d/bird6.conf
+  template: src=bird6.conf.j2 dest=/etc/bird6.d/peering6.conf
   notify: Restart bird daemons

+ 14 - 0
roles/internal/ffdo.peering/templates/bird.conf.j2

@@ -0,0 +1,14 @@
+#
+# This file is managed by ansible. Do not edit by hand!
+#
+
+{% if peers is defined %}
+{% for peer in peers %}
+protocol bgp {{peer.name}} from ibgp {
+        source address {{peer.source_ip4}};
+        neighbor {{peer.peer_ip4}} as {{peer.as}};
+        default bgp_med 2;
+};
+
+{% endfor %}
+{% endif %}

+ 5 - 5
roles/internal/ffdo.gre-uplink/templates/bird6.conf.j2

@@ -2,9 +2,8 @@
 # This file is managed by ansible. Do not edit by hand!
 #
 
-{% if supernode_uplinks is defined %}
 template bgp uplink {
-        local as {{supernode_uplinks[0].as}};
+        local as {{as}};
         import all;
         export all;
         next hop self;
@@ -12,9 +11,10 @@ template bgp uplink {
         multihop 64;
 }
 
-{% for uplink in supernode_uplinks %}
-protocol bgp {{uplink.name}} from uplink {
-        neighbor {{uplink.address_v6|ipaddr('address')}} as {{uplink.as}};
+{% if peers is defined %}
+{% for peer in peers %}
+protocol bgp {{peer.name}} from uplink {
+        neighbor {{peer.peer_ip6}} as {{peer.as}};
         default bgp_med 2;
 }
 

+ 20 - 0
roles/internal/ffdo.peering/templates/peering_interfaces.j2

@@ -0,0 +1,20 @@
+{% if peers is defined %}
+{% for peer in peers %}
+{% if peer.gre is defined %}
+auto gre-{{peer.name}}
+iface gre-{{peer.name}} inet tunnel
+    mode gre
+    address {{peer.gre.ip|ipaddr('address')}}
+    dstaddr {{peer.peer_ip4}}
+    netmask {{peer.gre.ip|ipaddr('netmask')}}
+    local {{ansible_default_ipv4.address}}
+    endpoint {{peer.gre.endpoint}}
+    mtu 1400
+    ttl 64
+
+iface gre-{{peer.name}} inet6 static
+    address {{peer.gre.ip6}}
+
+{% endif %}
+{% endfor %}
+{% endif %}

roles/internal/ffdo.gre-uplink/templates/supernode.sysctl.j2 → roles/internal/ffdo.peering/templates/supernode.sysctl.j2


roles/internal/ffdo.gre-uplink/vars/main.yml → roles/internal/ffdo.peering/vars/main.yml