瀏覽代碼

Added role to configure interfaces to be able to do this before including other roles which probably depend on availability of interfaces (like dhcp role)

Till Klocke 9 年之前
父節點
當前提交
bc5b95a499

+ 38 - 0
roles/supernode-interfaces/README.md

@@ -0,0 +1,38 @@
+Role Name
+=========
+
+A brief description of the role goes here.
+
+Requirements
+------------
+
+Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required.
+
+Role Variables
+--------------
+
+A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well.
+
+Dependencies
+------------
+
+A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles.
+
+Example Playbook
+----------------
+
+Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too:
+
+    - hosts: servers
+      roles:
+         - { role: username.rolename, x: 42 }
+
+License
+-------
+
+BSD
+
+Author Information
+------------------
+
+An optional section for the role authors to include contact information, or a website (HTML is not allowed).

+ 2 - 0
roles/supernode-interfaces/defaults/main.yml

@@ -0,0 +1,2 @@
+---
+# defaults file for supernode-interfaces

+ 4 - 0
roles/supernode-interfaces/handlers/main.yml

@@ -0,0 +1,4 @@
+---
+# handlers file for supernode-interfaces
+- name: Restart network
+  shell: ifdown --exclude=lo -a && ifup --exclude=lo -a

+ 135 - 0
roles/supernode-interfaces/meta/main.yml

@@ -0,0 +1,135 @@
+---
+galaxy_info:
+  author: your name
+  description: 
+  company: your company (optional)
+  # If the issue tracker for your role is not on github, uncomment the
+  # next line and provide a value
+  # issue_tracker_url: http://example.com/issue/tracker
+  # Some suggested licenses:
+  # - BSD (default)
+  # - MIT
+  # - GPLv2
+  # - GPLv3
+  # - Apache
+  # - CC-BY
+  license: license (GPLv2, CC-BY, etc)
+  min_ansible_version: 1.2
+  #
+  # Below are all platforms currently available. Just uncomment
+  # the ones that apply to your role. If you don't see your 
+  # platform on this list, let us know and we'll get it added!
+  #
+  #platforms:
+  #- name: EL
+  #  versions:
+  #  - all
+  #  - 5
+  #  - 6
+  #  - 7
+  #- name: GenericUNIX
+  #  versions:
+  #  - all
+  #  - any
+  #- name: Fedora
+  #  versions:
+  #  - all
+  #  - 16
+  #  - 17
+  #  - 18
+  #  - 19
+  #  - 20
+  #  - 21
+  #  - 22
+  #- name: SmartOS
+  #  versions:
+  #  - all
+  #  - any
+  #- name: opensuse
+  #  versions:
+  #  - all
+  #  - 12.1
+  #  - 12.2
+  #  - 12.3
+  #  - 13.1
+  #  - 13.2
+  #- name: Amazon
+  #  versions:
+  #  - all
+  #  - 2013.03
+  #  - 2013.09
+  #- name: GenericBSD
+  #  versions:
+  #  - all
+  #  - any
+  #- name: FreeBSD
+  #  versions:
+  #  - all
+  #  - 8.0
+  #  - 8.1
+  #  - 8.2
+  #  - 8.3
+  #  - 8.4
+  #  - 9.0
+  #  - 9.1
+  #  - 9.1
+  #  - 9.2
+  #- name: Ubuntu
+  #  versions:
+  #  - all
+  #  - lucid
+  #  - maverick
+  #  - natty
+  #  - oneiric
+  #  - precise
+  #  - quantal
+  #  - raring
+  #  - saucy
+  #  - trusty
+  #  - utopic
+  #  - vivid
+  #- name: SLES
+  #  versions:
+  #  - all
+  #  - 10SP3
+  #  - 10SP4
+  #  - 11
+  #  - 11SP1
+  #  - 11SP2
+  #  - 11SP3
+  #- name: GenericLinux
+  #  versions:
+  #  - all
+  #  - any
+  #- name: Debian
+  #  versions:
+  #  - all
+  #  - etch
+  #  - jessie
+  #  - lenny
+  #  - squeeze
+  #  - wheezy
+  #
+  # Below are all categories currently available. Just as with
+  # the platforms above, uncomment those that apply to your role.
+  #
+  #categories:
+  #- cloud
+  #- cloud:ec2
+  #- cloud:gce
+  #- cloud:rax
+  #- clustering
+  #- database
+  #- database:nosql
+  #- database:sql
+  #- development
+  #- monitoring
+  #- networking
+  #- packaging
+  #- system
+  #- web
+dependencies: []
+  # List your role dependencies here, one per line.
+  # Be sure to remove the '[]' above if you add dependencies
+  # to this list.
+  

+ 9 - 0
roles/supernode-interfaces/tasks/debian.yml

@@ -0,0 +1,9 @@
+- name: Install network config
+  when: supernode_interfaces is defined
+  template: src=interfaces.j2 dest=/etc/network/interfaces
+  register: networ_template_installed
+#  notify: Restart network
+
+- name: Restart network
+  when: networ_template_installed|changed
+  shell: "ifdown --exclude=lo --exclude=eth0 -a && ifup --exclude=lo --exclude=eth0 -a"

+ 8 - 0
roles/supernode-interfaces/tasks/main.yml

@@ -0,0 +1,8 @@
+---
+# tasks file for supernode-interfaces
+
+- include: debian.yml
+  when: ansible_distribution == 'Debian'
+
+- include: debian.yml
+  when: ansible_distribution == 'Ubuntu'

+ 106 - 0
roles/supernode-interfaces/templates/interfaces.j2

@@ -0,0 +1,106 @@
+# This file describes the network interfaces available on your system
+# and how to activate them. For more information, see interfaces(5).
+
+#
+# This file is generated by ansible
+#
+
+## Host Interfaces
+
+auto lo
+iface lo inet loopback
+
+{%for interface in supernode_interfaces %}
+{% if interface.auto is defined and interface.auto %}
+auto {{interface.name}}
+{% endif %}
+{% if interface.hotplug is defined and interface.hotplug %}
+allow-hotplug {{interface.name}}
+{% endif %}
+iface {{interface.name}} {{interface.proto}} {{interface.type}}
+{% if interface.config is defined %}
+{% for config in interface.config %}
+    {{config.key}} {{config.value}}
+{% endfor %}
+{% endif %}
+
+{% endfor %}
+
+## Supernode / Node Mesh
+
+# Dummy-Interface als MainIF mit manueller MAC fuer batman-adv
+auto meshdummy0
+iface meshdummy0 inet manual
+    pre-up ip link add $IFACE type dummy
+    pre-up ip link set address {{supernode_mesh_mac}} dev $IFACE
+    pre-up ip link set up dev $IFACE
+    post-down ip link set down dev $IFACE
+    post-down ip link del dev $IFACE
+    up batctl if add $IFACE
+
+# batman-adv Mesh Interface, wird von meshdummy0 per Hotplug aktiviert
+allow-hotplug bat0
+iface bat0 inet static
+    address {{supernode_mesh_ipv4}}
+    netmask {{supernode_mesh_netmask_ipv4}}
+    hwaddress {{supernode_bat_macaddress}}
+    pre-up ip rule add from {{supernode_mesh_net_cidr}} table 42
+    pre-up ip rule add to {{supernode_mesh_net_cidr}} table 42
+    pre-up batctl it 5000
+    pre-up batctl bl 0
+    pre-up batctl gw server 48mbit/48mbit
+    pre-up echo 120 > /sys/class/net/$IFACE/mesh/hop_penalty
+    post-down ip rule del from {{supernode_mesh_net_cidr}} table 42
+    post-down ip rule del to {{supernode_mesh_net_cidr}} table 42
+    # Paralleles Macvlan-Interface mit fixer MTU fuer Alfred
+    up ip link add link $IFACE alfred0 type macvlan
+    up ip link set dev alfred0 mtu 1280
+    up ip link set up dev alfred0
+    down ip link set down dev alfred0
+    down ip link del dev alfred0
+
+iface bat0 inet6 static
+    address {{supernode_mesh_ipv6}}
+    pre-up ip -6 rule add from {{supernode_mesh_net_ipv6}} table 42
+    pre-up ip -6 rule add to {{supernode_mesh_net_ipv6}} table 42
+    post-down ip -6 rule del from {{supernode_mesh_net_ipv6}} table 42
+    post-down ip -6 rule del to {{supernode_mesh_net_ipv6}} table 42
+    #pre-up ebtables -A FORWARD -p IPv6 -i $IFACE --ip6-proto ipv6-icmp --ip6-icmp-type router-advertisement -j DROP
+
+{% if supernode_mesh_backbones is defined %}
+{% for backbone in supernode_mesh_backbones %}
+{% if backbone.comment is defined %}
+# {{backbone.comment}}
+{% endif %}
+auto {{backbone.name}}
+iface {{backbone.name}} inet manual
+    pre-up ip link add $IFACE type gretap local {{supernode_local_ip}} remote {{backbone.remote_ip}} dev eth0
+    pre-up ip link set up dev $IFACE
+    up batctl if add $IFACE
+    post-down ip link set down dev $IFACE
+{% endfor %}
+{% endif %}
+
+## 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}}
+    endpoint {{uplink.endpoint}}
+    mtu 1400
+    ttl 64
+
+iface {{uplink.name}} inet6 static
+    address {{uplink.address_v6}}
+
+{% endfor %}
+{% endif %}

+ 2 - 0
roles/supernode-interfaces/vars/main.yml

@@ -0,0 +1,2 @@
+---
+# vars file for supernode-interfaces