Refactoring into roles
This commit is contained in:
parent
1469b78faa
commit
b4b67ba15b
0
.ansible/.lock
Normal file
0
.ansible/.lock
Normal file
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
venv
|
||||||
4
.vscode/settings.json
vendored
Normal file
4
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"ansible.python.interpreterPath": "/Users/john/Projects/ham-hotspot/venv/bin/python",
|
||||||
|
"ansible.validation.lint.arguments": "--fix"
|
||||||
|
}
|
||||||
28
ansible/group_vars/all.yml
Normal file
28
ansible/group_vars/all.yml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
# Global variables for Ham Hotspot provisioning
|
||||||
|
|
||||||
|
wifi:
|
||||||
|
country: US # ISO country code, affects regulatory Wi-Fi behavior
|
||||||
|
ssid: HamHotspot # Wi-Fi SSID
|
||||||
|
password: change_me_now # Wi-Fi password
|
||||||
|
channel: 6 # Wi-Fi channel (2.4 GHz band, e.g., 6 is common)
|
||||||
|
|
||||||
|
network:
|
||||||
|
lan_subnet: 192.168.7.0/24
|
||||||
|
lan_gateway: 192.168.7.1/24
|
||||||
|
lan_dns: 8.8.8.8
|
||||||
|
lan_domain: hamhotspot.internal
|
||||||
|
|
||||||
|
radios:
|
||||||
|
- port_name: radio0
|
||||||
|
device: plughw:AllInOneCable # Could be audio device for Direwolf, or real serial
|
||||||
|
speed: 1200
|
||||||
|
mycall: KI5QKX-11
|
||||||
|
ip_address: 44.127.254.1/24
|
||||||
|
|
||||||
|
# Example for second radio (optional, add when ready)
|
||||||
|
# - port_name: radio1
|
||||||
|
# device: /dev/ttyUSB1
|
||||||
|
# speed: 1200
|
||||||
|
# mycall: N0CALL-1
|
||||||
|
# ip_address: 44.31.1.2
|
||||||
@ -1,184 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Ham Hotspot Bootstrap
|
|
||||||
hosts: localhost
|
|
||||||
become: yes
|
|
||||||
connection: local
|
|
||||||
|
|
||||||
vars_files:
|
|
||||||
- ../config/desired_state.yml
|
|
||||||
|
|
||||||
handlers:
|
|
||||||
- import_tasks: ../handlers/main.yml
|
|
||||||
|
|
||||||
tasks:
|
|
||||||
- name: Install base apt packages
|
|
||||||
apt:
|
|
||||||
name:
|
|
||||||
- ax25-tools
|
|
||||||
- ax25-apps
|
|
||||||
- libax25
|
|
||||||
- dnsmasq
|
|
||||||
- hostapd
|
|
||||||
- python3-flask
|
|
||||||
- build-essential
|
|
||||||
- cmake
|
|
||||||
- git
|
|
||||||
- alsa-utils
|
|
||||||
- libasound2-dev
|
|
||||||
- libudev-dev
|
|
||||||
- avahi-daemon
|
|
||||||
- libavahi-client-dev
|
|
||||||
state: present
|
|
||||||
update_cache: yes
|
|
||||||
|
|
||||||
- name: Clone Direwolf from GitHub
|
|
||||||
git:
|
|
||||||
repo: 'https://github.com/wb2osz/direwolf.git'
|
|
||||||
dest: /usr/local/src/direwolf
|
|
||||||
update: no
|
|
||||||
|
|
||||||
- name: Build Direwolf
|
|
||||||
shell: |
|
|
||||||
mkdir -p /usr/local/src/direwolf/build
|
|
||||||
cd /usr/local/src/direwolf/build
|
|
||||||
cmake ..
|
|
||||||
make -j4
|
|
||||||
args:
|
|
||||||
chdir: /usr/local/src/direwolf
|
|
||||||
creates: /usr/local/src/direwolf/build/direwolf
|
|
||||||
|
|
||||||
- name: Install Direwolf
|
|
||||||
shell: |
|
|
||||||
cd /usr/local/src/direwolf/build
|
|
||||||
make install
|
|
||||||
args:
|
|
||||||
chdir: /usr/local/src/direwolf/build
|
|
||||||
creates: /usr/local/bin/direwolf
|
|
||||||
|
|
||||||
- name: Copy systemd service templates
|
|
||||||
copy:
|
|
||||||
src: ../systemd/
|
|
||||||
dest: /lib/systemd/system/
|
|
||||||
mode: '0644'
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
|
|
||||||
- name: Create /etc/ham-hotspot directory
|
|
||||||
file:
|
|
||||||
path: /etc/ham-hotspot
|
|
||||||
state: directory
|
|
||||||
mode: '0755'
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
|
|
||||||
- name: Deploy Direwolf configuration
|
|
||||||
template:
|
|
||||||
src: ../templates/direwolf.conf.j2
|
|
||||||
dest: /etc/ham-hotspot/direwolf-{{ radio.port_name }}.conf
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: Deploy hostapd configuration
|
|
||||||
template:
|
|
||||||
src: ../templates/hostapd.conf.j2
|
|
||||||
dest: /etc/hostapd/hostapd.conf
|
|
||||||
mode: '0644'
|
|
||||||
notify: Restart hostapd
|
|
||||||
|
|
||||||
- name: Deploy dnsmasq configuration
|
|
||||||
template:
|
|
||||||
src: ../templates/dnsmasq.conf.j2
|
|
||||||
dest: /etc/dnsmasq.d/ham-hotspot.conf
|
|
||||||
mode: '0644'
|
|
||||||
notify: Restart dnsmasq
|
|
||||||
|
|
||||||
- name: Deploy axports configuration
|
|
||||||
template:
|
|
||||||
src: ../templates/axports.j2
|
|
||||||
dest: /etc/ax25/axports
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: Enable IP forwarding
|
|
||||||
copy:
|
|
||||||
dest: /etc/sysctl.d/ham-hotspot.conf
|
|
||||||
content: |
|
|
||||||
net.ipv4.ip_forward=1
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: Unmask hostapd service
|
|
||||||
systemd:
|
|
||||||
name: hostapd
|
|
||||||
masked: no
|
|
||||||
|
|
||||||
- name: Ensure /etc/wpa_supplicant/wpa_supplicant.conf exists
|
|
||||||
file:
|
|
||||||
path: /etc/wpa_supplicant/wpa_supplicant.conf
|
|
||||||
state: touch
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: Ensure Wi-Fi country is set in wpa_supplicant.conf
|
|
||||||
blockinfile:
|
|
||||||
path: /etc/wpa_supplicant/wpa_supplicant.conf
|
|
||||||
marker: "# {mark} ANSIBLE MANAGED BLOCK - Wi-Fi Country Setting"
|
|
||||||
block: |
|
|
||||||
country={{ wifi.country }}
|
|
||||||
when: ansible_facts['distribution'] in ['Debian', 'Raspbian']
|
|
||||||
|
|
||||||
- name: Install unblock-wlan.service
|
|
||||||
copy:
|
|
||||||
src: ../systemd/unblock-wlan.service
|
|
||||||
dest: /etc/systemd/system/unblock-wlan.service
|
|
||||||
mode: '0644'
|
|
||||||
owner: root
|
|
||||||
group: root
|
|
||||||
|
|
||||||
- name: Reload systemd daemon
|
|
||||||
systemd:
|
|
||||||
daemon_reload: yes
|
|
||||||
|
|
||||||
- name: Enable and start unblock-wlan.service
|
|
||||||
systemd:
|
|
||||||
name: unblock-wlan.service
|
|
||||||
enabled: yes
|
|
||||||
state: started
|
|
||||||
|
|
||||||
- name: Enable and start Direwolf instance
|
|
||||||
systemd:
|
|
||||||
name: direwolf@radio0.service
|
|
||||||
enabled: yes
|
|
||||||
state: started
|
|
||||||
|
|
||||||
- name: Enable and start KISS TNC instance
|
|
||||||
systemd:
|
|
||||||
name: kisstnc@radio0.service
|
|
||||||
enabled: yes
|
|
||||||
state: started
|
|
||||||
|
|
||||||
- name: Enable and start AX.25 daemon
|
|
||||||
systemd:
|
|
||||||
name: ax25d.service
|
|
||||||
enabled: yes
|
|
||||||
state: started
|
|
||||||
|
|
||||||
- name: Assign static IP to ax0
|
|
||||||
shell: |
|
|
||||||
ip addr add {{ radio.ip_address }}/24 dev ax0 || true
|
|
||||||
ip link set ax0 up
|
|
||||||
|
|
||||||
- name: Enable and start hostapd
|
|
||||||
systemd:
|
|
||||||
name: hostapd.service
|
|
||||||
enabled: yes
|
|
||||||
state: started
|
|
||||||
|
|
||||||
- name: Assign static IP to wlan0
|
|
||||||
shell: |
|
|
||||||
ip addr add {{ network.lan_gateway }}/24 dev wlan0 || true
|
|
||||||
ip link set wlan0 up
|
|
||||||
|
|
||||||
- name: Enable and start dnsmasq
|
|
||||||
systemd:
|
|
||||||
name: dnsmasq.service
|
|
||||||
enabled: yes
|
|
||||||
state: started
|
|
||||||
13
ansible/site.yml
Normal file
13
ansible/site.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
- name: Configure Ham Hotspot
|
||||||
|
hosts: localhost
|
||||||
|
connection: local
|
||||||
|
become: true
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- base
|
||||||
|
- networking
|
||||||
|
- direwolf
|
||||||
|
- ax25
|
||||||
|
# - tuning
|
||||||
|
# - webui
|
||||||
@ -1,19 +0,0 @@
|
|||||||
# Configuration state for Ham Hotspot
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
country: US
|
|
||||||
ssid: HamHotspot
|
|
||||||
password: change_me_now
|
|
||||||
channel: 6
|
|
||||||
|
|
||||||
network:
|
|
||||||
lan_subnet: 192.168.73.0/24
|
|
||||||
lan_gateway: 192.168.73.1
|
|
||||||
|
|
||||||
radio:
|
|
||||||
device: plughw:AllInOneCable
|
|
||||||
speed: 1200
|
|
||||||
mycall: KI5QKX-11
|
|
||||||
port_name: radio0
|
|
||||||
ip_address: 44.31.1.1/24
|
|
||||||
ptt: CM108
|
|
||||||
@ -1,4 +1,8 @@
|
|||||||
---
|
---
|
||||||
|
- name: Reload systemd
|
||||||
|
systemd:
|
||||||
|
daemon_reload: yes
|
||||||
|
|
||||||
- name: Restart hostapd
|
- name: Restart hostapd
|
||||||
systemd:
|
systemd:
|
||||||
name: hostapd
|
name: hostapd
|
||||||
|
|||||||
38
roles/ax25/tasks/main.yml
Normal file
38
roles/ax25/tasks/main.yml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
- name: Deploy axports configuration
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: axports.j2
|
||||||
|
dest: /etc/ax25/axports
|
||||||
|
mode: "0644"
|
||||||
|
|
||||||
|
- name: Enable and start Direwolf instance
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: direwolf@{{ radio.port_name }}.service
|
||||||
|
enabled: true
|
||||||
|
state: started
|
||||||
|
|
||||||
|
- name: Enable and start KISS TNC instance
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: kisstnc@{{ radio.port_name }}.service
|
||||||
|
enabled: true
|
||||||
|
state: started
|
||||||
|
|
||||||
|
- name: Enable and start AX.25 daemon
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: ax25d.service
|
||||||
|
enabled: true
|
||||||
|
state: started
|
||||||
|
|
||||||
|
# Deploy AX.25 systemd-networkd configs
|
||||||
|
- name: Deploy AX.25 systemd-networkd configs
|
||||||
|
loop: "{{ radios }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: radio
|
||||||
|
vars:
|
||||||
|
ax_iface: "{{ 'ax' + loop.index0 | string }}"
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: ax.network.j2
|
||||||
|
dest: "/etc/systemd/network/{{ ax_iface }}.network"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
5
roles/ax25/templates/ax.network.j2
Normal file
5
roles/ax25/templates/ax.network.j2
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[Match]
|
||||||
|
Name={{ ax_iface }}
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
Address={{ radio.ip_address }}
|
||||||
3
roles/ax25/templates/axports.j2
Normal file
3
roles/ax25/templates/axports.j2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{% for radio in radios %}
|
||||||
|
{{ radio.port_name }} {{ radio.mycall }} {{ radio.speed }} 255 7 Ham Hotspot Radio {{ loop.index0 }}
|
||||||
|
{% endfor %}
|
||||||
47
roles/base/tasks/main.yml
Normal file
47
roles/base/tasks/main.yml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
- name: Install base system packages
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- ax25-tools
|
||||||
|
- ax25-apps
|
||||||
|
- libax25
|
||||||
|
- dnsmasq
|
||||||
|
- hostapd
|
||||||
|
- python3-flask
|
||||||
|
- build-essential
|
||||||
|
- cmake
|
||||||
|
- git
|
||||||
|
- alsa-utils
|
||||||
|
- libasound2-dev
|
||||||
|
state: present
|
||||||
|
update_cache: yes
|
||||||
|
|
||||||
|
- name: Install unblock-wlan service
|
||||||
|
template:
|
||||||
|
src: unblock-wlan.service.j2
|
||||||
|
dest: /etc/systemd/system/unblock-wlan.service
|
||||||
|
mode: '0644'
|
||||||
|
notify: Reload systemd
|
||||||
|
|
||||||
|
- name: Ensure /etc/wpa_supplicant/wpa_supplicant.conf exists
|
||||||
|
file:
|
||||||
|
path: /etc/wpa_supplicant/wpa_supplicant.conf
|
||||||
|
state: touch
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: '0644'
|
||||||
|
|
||||||
|
- name: Ensure Wi-Fi country is set
|
||||||
|
blockinfile:
|
||||||
|
path: /etc/wpa_supplicant/wpa_supplicant.conf
|
||||||
|
marker: "# {mark} ANSIBLE MANAGED BLOCK - Wi-Fi Country Setting"
|
||||||
|
block: |
|
||||||
|
country={{ wifi.country }}
|
||||||
|
when: ansible_facts['distribution'] in ['Debian', 'Raspbian']
|
||||||
|
notify: Restart unblock-wlan service
|
||||||
|
|
||||||
|
- name: Unmask hostapd service
|
||||||
|
systemd:
|
||||||
|
name: hostapd
|
||||||
|
masked: no
|
||||||
|
notify: Reload systemd
|
||||||
44
roles/direwolf/tasks/main.yml
Normal file
44
roles/direwolf/tasks/main.yml
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
- name: Clone Direwolf from GitHub
|
||||||
|
git:
|
||||||
|
repo: 'https://github.com/wb2osz/direwolf.git'
|
||||||
|
dest: /usr/local/src/direwolf
|
||||||
|
update: no
|
||||||
|
|
||||||
|
- name: Build Direwolf
|
||||||
|
shell: |
|
||||||
|
mkdir -p /usr/local/src/direwolf/build
|
||||||
|
cd /usr/local/src/direwolf/build
|
||||||
|
cmake ..
|
||||||
|
make -j4
|
||||||
|
args:
|
||||||
|
chdir: /usr/local/src/direwolf
|
||||||
|
creates: /usr/local/src/direwolf/build/direwolf
|
||||||
|
|
||||||
|
- name: Install Direwolf
|
||||||
|
shell: |
|
||||||
|
cd /usr/local/src/direwolf/build
|
||||||
|
make install
|
||||||
|
args:
|
||||||
|
chdir: /usr/local/src/direwolf/build
|
||||||
|
creates: /usr/local/bin/direwolf
|
||||||
|
|
||||||
|
- name: Deploy Direwolf configuration
|
||||||
|
template:
|
||||||
|
src: direwolf.conf.j2
|
||||||
|
dest: /etc/ham-hotspot/direwolf-{{ radio.port_name }}.conf
|
||||||
|
mode: '0644'
|
||||||
|
|
||||||
|
- name: Deploy Direwolf systemd service
|
||||||
|
template:
|
||||||
|
src: direwolf@.service.j2
|
||||||
|
dest: /etc/systemd/system/direwolf@.service
|
||||||
|
mode: '0644'
|
||||||
|
notify: Reload systemd
|
||||||
|
|
||||||
|
- name: Deploy kisstnc systemd service
|
||||||
|
template:
|
||||||
|
src: kisstnc@.service.j2
|
||||||
|
dest: /etc/systemd/system/kisstnc@.service
|
||||||
|
mode: '0644'
|
||||||
|
notify: Reload systemd
|
||||||
22
roles/networking/handlers/main.yml
Normal file
22
roles/networking/handlers/main.yml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
- name: Reload systemd
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
daemon_reload: true
|
||||||
|
|
||||||
|
- name: Restart systemd-networkd
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: systemd-networkd
|
||||||
|
state: restarted
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
- name: Restart systemd-resolved
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: systemd-resolved
|
||||||
|
state: restarted
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
- name: Restart hostapd
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: hostapd
|
||||||
|
state: restarted
|
||||||
|
enabled: true
|
||||||
39
roles/networking/tasks/legacy_networking.yml
Normal file
39
roles/networking/tasks/legacy_networking.yml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
- name: Disable and stop legacy services
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: "{{ item }}"
|
||||||
|
enabled: false
|
||||||
|
state: stopped
|
||||||
|
masked: true
|
||||||
|
loop:
|
||||||
|
- networking
|
||||||
|
- ifupdown
|
||||||
|
- ifupdown-pre
|
||||||
|
- dhcpcd
|
||||||
|
- dnsmasq
|
||||||
|
- isc-dhcp-client
|
||||||
|
- isc-dhcp-server
|
||||||
|
- isc-dhcp-common
|
||||||
|
- rsyslog
|
||||||
|
|
||||||
|
- name: Remove legacy configuration files
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: absent
|
||||||
|
loop:
|
||||||
|
- /etc/network
|
||||||
|
- /etc/dhcp
|
||||||
|
|
||||||
|
- name: Remove legacy packages
|
||||||
|
ansible.builtin.package:
|
||||||
|
name:
|
||||||
|
- ifupdown
|
||||||
|
- isc-dhcp-client
|
||||||
|
- isc-dhcp-server
|
||||||
|
- isc-dhcp-common
|
||||||
|
- dnsmasq
|
||||||
|
- rsyslog
|
||||||
|
- network-manager
|
||||||
|
- avahi-daemon
|
||||||
|
- libnss-mdns
|
||||||
|
state: absent
|
||||||
30
roles/networking/tasks/main.yml
Normal file
30
roles/networking/tasks/main.yml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
- name: Set up systemd networking
|
||||||
|
ansible.builtin.import_tasks:
|
||||||
|
file: systemd_networking.yml
|
||||||
|
tags: systemd_networking
|
||||||
|
|
||||||
|
- name: Set up devices
|
||||||
|
ansible.builtin.import_tasks:
|
||||||
|
file: systemd_networking_devices.yml
|
||||||
|
tags: devices
|
||||||
|
|
||||||
|
- name: Shut down legacy networking
|
||||||
|
ansible.builtin.import_tasks:
|
||||||
|
file: legacy_networking.yml
|
||||||
|
tags: legacy_networking
|
||||||
|
|
||||||
|
# Deploy hostapd configuration
|
||||||
|
- name: Deploy hostapd configuration
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: hostapd.conf.j2
|
||||||
|
dest: /etc/hostapd/hostapd.conf
|
||||||
|
mode: "0644"
|
||||||
|
notify: Restart hostapd
|
||||||
|
|
||||||
|
# Start hostapd
|
||||||
|
- name: Enable and start hostapd
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: hostapd
|
||||||
|
enabled: true
|
||||||
|
state: started
|
||||||
27
roles/networking/tasks/systemd_networking.yml
Normal file
27
roles/networking/tasks/systemd_networking.yml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
- name: Install systemd networking packages
|
||||||
|
ansible.builtin.package:
|
||||||
|
name:
|
||||||
|
- systemd-networkd
|
||||||
|
- systemd-resolved
|
||||||
|
- libnss-resolve
|
||||||
|
- libnss-mdns
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Create symlink for resolv.conf
|
||||||
|
ansible.builtin.file:
|
||||||
|
src: /run/systemd/resolve/stub-resolv.conf
|
||||||
|
dest: /etc/resolv.conf
|
||||||
|
state: link
|
||||||
|
|
||||||
|
- name: Enable and start systemd-networkd
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: systemd-networkd
|
||||||
|
enabled: true
|
||||||
|
state: started
|
||||||
|
|
||||||
|
- name: Enable and start systemd-resolved
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: systemd-resolved
|
||||||
|
enabled: true
|
||||||
|
state: started
|
||||||
41
roles/networking/tasks/systemd_networking_devices.yml
Normal file
41
roles/networking/tasks/systemd_networking_devices.yml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
# Create the bridge device (br0)
|
||||||
|
- name: Deploy br0 systemd-networkd bridge device (netdev)
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: br0.netdev.j2
|
||||||
|
dest: /etc/systemd/network/br0.netdev
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
notify: Restart systemd-networkd
|
||||||
|
|
||||||
|
# Configure br0 (assign IP and start DHCP server)
|
||||||
|
- name: Deploy br0 systemd-networkd network config
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: br0.network.j2
|
||||||
|
dest: /etc/systemd/network/br0.network
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
notify: Restart systemd-networkd
|
||||||
|
|
||||||
|
# Configure wlan0 to be a bridge device
|
||||||
|
- name: Deploy wlan0 systemd-networkd bridge config
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: wlan0.network.j2
|
||||||
|
dest: /etc/systemd/network/wlan0.network
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
notify: Restart systemd-networkd
|
||||||
|
|
||||||
|
# Configure eth0 to be a bridge device
|
||||||
|
- name: Deploy eth0 systemd-networkd bridge config
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: eth0.network.j2
|
||||||
|
dest: /etc/systemd/network/eth0.network
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0644"
|
||||||
|
failed_when: false # (in case eth0 doesn't exist, e.g., Pi Zero)
|
||||||
|
notify: Restart systemd-networkd
|
||||||
3
roles/networking/templates/br0.netdev
Normal file
3
roles/networking/templates/br0.netdev
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[NetDev]
|
||||||
|
Name=br0
|
||||||
|
Kind=bridge
|
||||||
15
roles/networking/templates/br0.network.j2
Normal file
15
roles/networking/templates/br0.network.j2
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[Match]
|
||||||
|
Name=br0
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
Address={{ network.lan_gateway }}
|
||||||
|
DHCPServer=yes
|
||||||
|
IPMasquade=ipv4
|
||||||
|
MulticastDNS=yes
|
||||||
|
LLMNR=yes
|
||||||
|
|
||||||
|
[DHCPServer]
|
||||||
|
PoolOffset=100
|
||||||
|
PoolSize=100
|
||||||
|
DNS={{ network.lan_dns }}
|
||||||
|
DomainName={{ network.lan_domain }}
|
||||||
9
roles/networking/templates/eth0.network.j2
Normal file
9
roles/networking/templates/eth0.network.j2
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[Match]
|
||||||
|
Name=eth0
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
# Bridge=br0 # We could bridge it with wlan, but that would leave us with no internet uplink
|
||||||
|
LLMNR=yes
|
||||||
|
MulticastDNS=yes
|
||||||
|
DHCP=ipv4
|
||||||
|
|
||||||
5
roles/networking/templates/wlan0.network.j2
Normal file
5
roles/networking/templates/wlan0.network.j2
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[Match]
|
||||||
|
Name=wlan0
|
||||||
|
|
||||||
|
[Network]
|
||||||
|
Bridge=br0
|
||||||
23
roles/tuning/tasks/main.yml
Normal file
23
roles/tuning/tasks/main.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
- name: Deploy AX.25 tuning systemd templates
|
||||||
|
template:
|
||||||
|
src: ../templates/ax-tune@.service.j2
|
||||||
|
dest: /etc/systemd/system/ax-tune@.service
|
||||||
|
mode: '0644'
|
||||||
|
|
||||||
|
- name: Prune old AX.25 tuning services
|
||||||
|
import_tasks: prune_old_ax_tune.yml
|
||||||
|
|
||||||
|
- name: Enable and start AX.25 tuning services
|
||||||
|
loop: "{{ radios }}"
|
||||||
|
loop_control:
|
||||||
|
loop_var: radio
|
||||||
|
vars:
|
||||||
|
ax_iface: "{{ 'ax' + loop.index0|string }}"
|
||||||
|
radio_port: "{{ radio.port_name }}"
|
||||||
|
block:
|
||||||
|
- name: Enable tuning service for {{ ax_iface }}
|
||||||
|
systemd:
|
||||||
|
name: "ax-tune@{{ ax_iface }}.service"
|
||||||
|
enabled: yes
|
||||||
|
state: started
|
||||||
@ -1 +0,0 @@
|
|||||||
radio0 {{ radio.mycall }} 0 255 1 PiRadio AX.25 port
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
interface=wlan0
|
|
||||||
dhcp-range={{ network.lan_gateway | regex_replace('\.1$', '.100') }},{{ network.lan_gateway | regex_replace('\.1$', '.200') }},12h
|
|
||||||
dhcp-option=3,{{ network.lan_gateway }}
|
|
||||||
dhcp-option=6,8.8.8.8
|
|
||||||
Loading…
Reference in New Issue
Block a user