Freifunkknoten mit Ansible konfigurieren
An dieser Stelle habe ich meine Vorgehensweise beschrieben wie ich einen einzelnen Router so konfiguriere das er bestimmte Rechner nicht verbindet.
Da ich dies zukünftig nicht nur auf einem Router machen muss und auch noch weitere Konfigurationen auf verschiedenen Routern verwalten muss bietet es sich natürlich an hier wie auf meinen anderen Servern auch Ansible zu verwenden.
Leider gibt es aktuell noch kein richtiges Modul um die Paket- und Variablenverwaltung anzusprechen aber mit dem Modul “raw” kann man die Befehle selbst ausführen. Es fehlt zwar die Rückmeldung über das Ergebnis aber es ist immer noch besser als einloggen und “befehle pasten”
Zuerst brauchen wir in unserem Inventory Gruppen mit den Routernamen.
[freifunk]
su-mck-1
[ff-update-server]
su-mck-1
[ff-nodes-with-acl]
su-mck-1
Für jeden Router habe ich eine Datei mit Host spezifischen Variablen.
more host_vars/su-mck-1
---
ansible_port: 22
ansible_host: 192.168.xxx.yy
ansible_user : root
ff_acl_enabled_radios:
- radio0
- radio1
ff_acl_enabled_macs: "00:11:22:33:C6:2C 00:yy:ee:34"
Der Router hat zwei Antennen und in der Variable ff_acl_enabled_macs stehen die verbotenen Mac Adressen.
Das Playbook selbst sieht so aus (Da werden zukünftig noch weiter Aufgaben dazukommen)
more freifunk.yml
---
- name: manage-ff-nodes
hosts: freifunk
gather_facts: no
roles:
- freifunk
Im Role Verzeichnis habe ich die dazugehörigen Dateien
more roles/freifunk/tasks/main.yml
---
- include : set-acl-list.yml hosts=ff-nodes-with-acl
more roles/freifunk/tasks/set-acl-list.yml
---
- name: enable deny for configured radios
raw: uci set wireless.client_.macfilter=deny
with_items: ""
- name: set denied mac addresses
raw: uci set wireless.client_.maclist=''
with_items: ""
ignore_errors: yes
notify:
- uci commit
- reload network
Fehlt noch die Datei mit dem “Handler”
more roles/freifunk/handlers/main.yml
---
- name: uci commit
raw: uci commit
- name: reload network
raw: /etc/init.d/network reload
Jetzt kann ich mit einem Befehl auf allen Routern für die ich in den Hostvars die verschiedenen Antennen und unterschiedlichen Mac Adressen angegeben habe den Router konfigurieren.
ansible-playbook freifunk.yml
PLAY [manage-ff-nodes] ************
TASK [freifunk : enable deny for configured radios]**
changed: [su-mck-1] => (item=radio0)
changed: [su-mck-1] => (item=radio1)
TASK [freifunk : set denied mac addresses] **
changed: [su-mck-1] => (item=radio0)
changed: [su-mck-1] => (item=radio1)
RUNNING HANDLER [freifunk : uci commit] **
changed: [su-mck-1]
RUNNING HANDLER [freifunk : reload network] ***
changed: [su-mck-1]
PLAY RECAP ************************************
su-mck-1 : ok=4 changed=4 unreachable=0 failed=0