diff --git a/ansible.cfg b/ansible.cfg index 009dbb4..43f1fcf 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,2 +1,2 @@ [defaults] -inventory = hosts \ No newline at end of file +inventory = hosts.yml \ No newline at end of file diff --git a/hosts b/hosts deleted file mode 100644 index 8fe550f..0000000 --- a/hosts +++ /dev/null @@ -1,11 +0,0 @@ -[gateways] -barnitz ansible_ssh_host=195.201.117.146 external_ipv4=195.201.117.146 external_interface=eth0 ffsh_ipv4_space=10.144.48.0/20 ffsh_map_name=GW_Barnitz ffsh_ipv6_address=fddf:0bf7:80::48:1 ffsh_ipv4_address=10.144.48.1 dhcp_range=10.144.48.2-10.144.63.254 ffsh_map_mac=00:5b:27:80:00:48 ffsh_bat_mac=00:5b:27:81:00:48 owner=ulf -beste ansible_ssh_host=88.99.35.208 external_ipv4=88.99.35.208 external_interface=eth0 ffsh_ipv4_space=10.144.64.0/20 ffsh_map_name=GW_Beste ffsh_ipv6_address=fddf:0bf7:80::64:1 ffsh_ipv4_address=10.144.64.1 dhcp_range=10.144.64.2-10.144.79.254 ffsh_map_mac=00:5b:27:80:00:64 ffsh_bat_mac=00:5b:27:81:00:64 owner=ulf -bille ansible_ssh_host=5.181.50.231 external_ipv4=5.181.50.231 external_interface=eth0 ffsh_ipv4_space=10.144.80.0/20 ffsh_map_name=GW_Bille ffsh_ipv6_address=fddf:0bf7:80::80:1 ffsh_ipv4_address=10.144.80.1 dhcp_range=10.144.80.2-10.144.79.254 ffsh_map_mac=00:5b:27:80:00:80 ffsh_bat_mac=00:5b:27:81:00:80 owner=felix -brunsbach ansible_ssh_host=37.221.192.238 external_ipv4=37.221.192.238 external_interface=eth0 ffsh_ipv4_space=10.144.96.0/20 ffsh_map_name=GW_Brunsbach ffsh_ipv6_address=fddf:0bf7:80::96:1 ffsh_ipv4_address=10.144.96.1 dhcp_range=10.144.96.2-10.144.111.254 ffsh_map_mac=00:5b:27:80:00:96 ffsh_bat_mac=00:5b:27:81:00:96 owner=benjamin -heilsau ansible_ssh_host=95.216.157.253 external_ipv4=95.216.157.253 external_interface=eth0 ffsh_ipv4_space=10.144.112.0/20 ffsh_map_name=GW_Heilsau ffsh_ipv6_address=fddf:0bf7:80::112:1 ffsh_ipv4_address=10.144.112.1 dhcp_range=10.144.112.2-10.144.127.254 ffsh_map_mac=00:5b:27:80:01:12 ffsh_bat_mac=00:5b:27:81:01:12 owner=ulf -sylsbek ansible_ssh_host=195.128.103.225 external_ipv4=195.128.103.225 external_interface=eth0 ffsh_ipv4_space=10.144.192.0/20 ffsh_map_name=GW_Sylsbek ffsh_ipv6_address=fddf:0bf7:80::192:1 ffsh_ipv4_address=10.144.192.1 dhcp_range=10.144.192.2-10.144.207.254 ffsh_map_mac=00:5b:27:80:01:92 ffsh_bat_mac=00:5b:27:81:01:92 owner=ulf -trave ansible_ssh_host=88.99.86.15 external_ipv4=88.99.86.15 external_interface=eth0 ffsh_ipv4_space=10.144.208.0/20 ffsh_map_name=GW_Trave ffsh_ipv6_address=fddf:0bf7:80::208:1 ffsh_ipv4_address=10.144.208.1 dhcp_range=10.144.208.2-10.144.223.254 ffsh_map_mac=00:5b:27:80:02:08 ffsh_bat_mac=00:5b:27:81:02:08 owner=ulf - -[gateways:vars] -ansible_user=root diff --git a/hosts.yml b/hosts.yml new file mode 100644 index 0000000..5e88b46 --- /dev/null +++ b/hosts.yml @@ -0,0 +1,88 @@ +gateways: + hosts: + barnitz: + ansible_ssh_host: 195.201.117.146 + external_ipv4: 195.201.117.146 + external_interface: eth0 + ffsh_ipv4_space: 10.144.48.0/20 + ffsh_map_name: GW_Barnitz + ffsh_ipv6_address: fddf:0bf7:80::48:1 + ffsh_ipv4_address: 10.144.48.1 + dhcp_range: 10.144.48.2-10.144.63.254 + ffsh_bat_mac: 00:5b:27:80:00:48 + ffsh_fastd_mac: 00:5b:27:81:00:48 + owner: ulf + beste: + ansible_ssh_host: 88.99.35.208 + external_ipv4: 88.99.35.208 + external_interface: eth0 + ffsh_ipv4_space: 10.144.64.0/20 + ffsh_map_name: GW_Beste + ffsh_ipv6_address: fddf:0bf7:80::64:1 + ffsh_ipv4_address: 10.144.64.1 + dhcp_range: 10.144.64.2-10.144.79.254 + ffsh_bat_mac: 00:5b:27:80:00:64 + ffsh_fastd_mac: 00:5b:27:81:00:64 + owner: ulf + bille: + ansible_ssh_host: 5.181.50.231 + external_ipv4: 5.181.50.231 + external_interface: eth0 + ffsh_ipv4_space: 10.144.80.0/20 + ffsh_map_name: GW_Bille + ffsh_ipv6_address: fddf:0bf7:80::80:1 + ffsh_ipv4_address: 10.144.80.1 + dhcp_range: 10.144.80.2-10.144.79.254 + ffsh_bat_mac: 00:5b:27:80:00:80 + ffsh_fastd_mac: 00:5b:27:81:00:80 + owner: felix + brunsbach: + ansible_ssh_host: 37.221.192.238 + external_ipv4: 37.221.192.238 + external_interface: eth0 + ffsh_ipv4_space: 10.144.96.0/20 + ffsh_map_name: GW_Brunsbach + ffsh_ipv6_address: fddf:0bf7:80::96:1 + ffsh_ipv4_address: 10.144.96.1 + dhcp_range: 10.144.96.2-10.144.111.254 + ffsh_bat_mac: 00:5b:27:80:00:96 + ffsh_fastd_mac: 00:5b:27:81:00:96 + owner: benjamin + heilsau: + ansible_ssh_host: 95.216.157.253 + external_ipv4: 95.216.157.253 + external_interface: eth0 + ffsh_ipv4_space: 10.144.112.0/20 + ffsh_map_name: GW_Heilsau + ffsh_ipv6_address: fddf:0bf7:80::112:1 + ffsh_ipv4_address: 10.144.112.1 + dhcp_range: 10.144.112.2-10.144.127.254 + ffsh_bat_mac: 00:5b:27:80:01:12 + ffsh_fastd_mac: 00:5b:27:81:01:12 + owner: ulf + sylsbek: + ansible_ssh_host: 195.128.103.225 + external_ipv4: 195.128.103.225 + external_interface: eth0 + ffsh_ipv4_space: 10.144.192.0/20 + ffsh_map_name: GW_Sylsbek + ffsh_ipv6_address: fddf:0bf7:80::192:1 + ffsh_ipv4_address: 10.144.192.1 + dhcp_range: 10.144.192.2-10.144.207.254 + ffsh_bat_mac: 00:5b:27:80:01:92 + ffsh_fastd_mac: 00:5b:27:81:01:92 + owner: ulf + trave: + ansible_ssh_host: 88.99.86.15 + external_ipv4: 88.99.86.15 + external_interface: eth0 + ffsh_ipv4_space: 10.144.208.0/20 + ffsh_map_name: GW_Trave + ffsh_ipv6_address: fddf:0bf7:80::208:1 + ffsh_ipv4_address: 10.144.208.1 + dhcp_range: 10.144.208.2-10.144.223.254 + ffsh_bat_mac: 00:5b:27:80:02:08 + ffsh_fastd_mac: 00:5b:27:81:02:08 + owner: ulf + vars: + ansible_user: root \ No newline at end of file diff --git a/roles/dhcp/files/isc-dhcp-server.service b/roles/dhcp/files/isc-dhcp-server.service new file mode 100644 index 0000000..2f29c07 --- /dev/null +++ b/roles/dhcp/files/isc-dhcp-server.service @@ -0,0 +1,3 @@ +[Unit] +After=fastd@ffsh.service + diff --git a/roles/dhcp/tasks/main.yml b/roles/dhcp/tasks/main.yml index c931c47..d694328 100644 --- a/roles/dhcp/tasks/main.yml +++ b/roles/dhcp/tasks/main.yml @@ -23,9 +23,24 @@ lineinfile: path: /etc/default/isc-dhcp-server regexp: 'INTERFACESv4=""' - line: INTERFACESv4="br-ffsh" + line: INTERFACESv4="bat0" +- name: Creates directory + file: + path: /etc/systemd/system/isc-dhcp-server.service.d/ + state: directory + mode: '0644' + owner: root + group: root +- name: Change dhcp service + copy: + src: files/isc-dhcp-server.service + dest: /etc/systemd/system/isc-dhcp-server.service.d/override.conf + mode: '0644' + owner: root + group: root - name: Enable and restart service systemd: enabled: yes + daemon_reload: yes state: restarted name: isc-dhcp-server \ No newline at end of file diff --git a/roles/fastd/tasks/main.yml b/roles/fastd/tasks/main.yml index a92754b..6c2598a 100644 --- a/roles/fastd/tasks/main.yml +++ b/roles/fastd/tasks/main.yml @@ -1,8 +1,13 @@ +- name: Enable bullseye backports + lineinfile: + path: /etc/apt/sources.list + regexp: '# deb http://deb.debian.org/debian bullseye-backports main contrib non-free' + line: deb http://deb.debian.org/debian bullseye-backports main contrib non-free - name: Update apt cache ansible.builtin.apt: update_cache: yes - name: ['fastd'] - when: not ansible_check_mode +- name: Install fastd + ansible.builtin.command: apt install -t bullseye-backports fastd -y - name: Add ffsh system user user: name: ffsh diff --git a/roles/fastd/templates/fastd.conf b/roles/fastd/templates/fastd.conf index b4bb66d..e1bd5c4 100644 --- a/roles/fastd/templates/fastd.conf +++ b/roles/fastd/templates/fastd.conf @@ -17,6 +17,7 @@ mode tap; mtu 1426; # Set the methods (aes128-gcm preferred, salsa2012+umac preferred for nodes) +method "null@l2tp"; method "null"; method "salsa2012+umac"; @@ -39,16 +40,22 @@ on verify "true"; # Configure a shell command that is run when fastd comes up on up " - ip link set dev $INTERFACE address {{ ffsh_map_mac }} + ip link set dev $INTERFACE address {{ ffsh_fastd_mac }} ip link set dev $INTERFACE up - ip link set dev br-ffsh up + + batctl meshif bat0 if add $INTERFACE ip link add dev bat0 type batadv + ip addr add {{ ffsh_ipv4_address}}/16 dev bat0 + ip addr add {{ ffsh_ipv6_address}}/64 dev bat0 + ip link set address {{ ffsh_bat_mac }} dev bat0 + batctl meshif bat0 orig_interval 10000 + batctl meshif bat0 gw_mode server 100mbit/100mbit + ip rule add from all fwmark 0x1 table 42 + ip link set dev bat0 up sh /etc/fastd/ffsh/iptables_ffsh.sh "; on down " ip link set dev $INTERFACE down - ip link set dev br-ffsh down - ip link set dev bat0 down "; diff --git a/roles/fastd/templates/iptables.sh b/roles/fastd/templates/iptables.sh index 7b9676e..d05eb08 100644 --- a/roles/fastd/templates/iptables.sh +++ b/roles/fastd/templates/iptables.sh @@ -1,6 +1,6 @@ #!/bin/sh -/sbin/ip route add 10.144.0.0/16 dev br-ffsh src {{ ffsh_ipv4_address }} table 42 +/sbin/ip route add 10.144.0.0/16 dev bat0 src {{ ffsh_ipv4_address }} table 42 # Reject forwarded outgoing packets on external WAN interface to private IP addresses /sbin/iptables -I FORWARD -d 10.0.0.0/8 -o {{ external_interface }} -j REJECT diff --git a/roles/hostname/tasks/main.yml b/roles/hostname/tasks/main.yml new file mode 100644 index 0000000..8c9a1ef --- /dev/null +++ b/roles/hostname/tasks/main.yml @@ -0,0 +1,5 @@ +--- +- name: Set the hostname + ansible.builtin.hostname: + name: "{{ inventory_hostname }}" + use: debian \ No newline at end of file diff --git a/roles/motd/files/00-header b/roles/motd/files/00-header index 1e0828f..ccc5eb7 100644 --- a/roles/motd/files/00-header +++ b/roles/motd/files/00-header @@ -1,4 +1,3 @@ #!/bin/bash -/usr/bin/neofetch --config "/root/.config/neofetch/config.conf" -batctl -v \ No newline at end of file +/usr/bin/neofetch --config "/root/.config/neofetch/config.conf" \ No newline at end of file diff --git a/roles/motd/tasks/main.yml b/roles/motd/tasks/main.yml index 8672991..201c000 100755 --- a/roles/motd/tasks/main.yml +++ b/roles/motd/tasks/main.yml @@ -12,10 +12,12 @@ group: root mode: '0644' - name: Adjust neofetch config - lineinfile: - path: /root/.config/neofetch/config.conf - regexp: 'image_source="auto"' - line: 'image_source="/root/.config/neofetch/ffsh-logo.txt"' + template: + src: templates/config.conf + dest: /root/.config/neofetch/config.conf + owner: root + group: root + mode: '0644' - name: Set motd header copy: src: files/00-header diff --git a/roles/motd/templates/config.conf b/roles/motd/templates/config.conf new file mode 100644 index 0000000..d92e57e --- /dev/null +++ b/roles/motd/templates/config.conf @@ -0,0 +1,866 @@ +# See this wiki page for more info: +# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info +print_info() { + info title + info underline + + info "OS" distro + info "Host" model + info "Kernel" kernel + info "Uptime" uptime + #info "Packages" packages + info "Shell" shell + #info "Resolution" resolution + #info "DE" de + #info "WM" wm + #info "WM Theme" wm_theme + #info "Theme" theme + #info "Icons" icons + #info "Terminal" term + #info "Terminal Font" term_font + info "CPU" cpu + info "GPU" gpu + info "Memory" memory + prin "$(color 5)Owner: $(color 15){{ owner }}" + prin "$(color 5)Batman: $(color 15)$(batctl -v)" + + # info "GPU Driver" gpu_driver # Linux/macOS only + # info "CPU Usage" cpu_usage + # info "Disk" disk + # info "Battery" battery + # info "Font" font + # info "Song" song + # [[ "$player" ]] && prin "Music Player" "$player" + # info "Local IP" local_ip + # info "Public IP" public_ip + # info "Users" users + # info "Locale" locale # This only works on glibc systems. + + #info cols +} + +# Title + + +# Hide/Show Fully qualified domain name. +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --title_fqdn +title_fqdn="off" + + +# Kernel + + +# Shorten the output of the kernel function. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --kernel_shorthand +# Supports: Everything except *BSDs (except PacBSD and PC-BSD) +# +# Example: +# on: '4.8.9-1-ARCH' +# off: 'Linux 4.8.9-1-ARCH' +kernel_shorthand="on" + + +# Distro + + +# Shorten the output of the distro function +# +# Default: 'off' +# Values: 'on', 'tiny', 'off' +# Flag: --distro_shorthand +# Supports: Everything except Windows and Haiku +distro_shorthand="off" + +# Show/Hide OS Architecture. +# Show 'x86_64', 'x86' and etc in 'Distro:' output. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --os_arch +# +# Example: +# on: 'Arch Linux x86_64' +# off: 'Arch Linux' +os_arch="on" + + +# Uptime + + +# Shorten the output of the uptime function +# +# Default: 'on' +# Values: 'on', 'tiny', 'off' +# Flag: --uptime_shorthand +# +# Example: +# on: '2 days, 10 hours, 3 mins' +# tiny: '2d 10h 3m' +# off: '2 days, 10 hours, 3 minutes' +uptime_shorthand="on" + + +# Memory + + +# Show memory pecentage in output. +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --memory_percent +# +# Example: +# on: '1801MiB / 7881MiB (22%)' +# off: '1801MiB / 7881MiB' +memory_percent="off" + +# Change memory output unit. +# +# Default: 'mib' +# Values: 'kib', 'mib', 'gib' +# Flag: --memory_unit +# +# Example: +# kib '1020928KiB / 7117824KiB' +# mib '1042MiB / 6951MiB' +# gib: ' 0.98GiB / 6.79GiB' +memory_unit="mib" + + +# Packages + + +# Show/Hide Package Manager names. +# +# Default: 'tiny' +# Values: 'on', 'tiny' 'off' +# Flag: --package_managers +# +# Example: +# on: '998 (pacman), 8 (flatpak), 4 (snap)' +# tiny: '908 (pacman, flatpak, snap)' +# off: '908' +package_managers="on" + + +# Shell + + +# Show the path to $SHELL +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --shell_path +# +# Example: +# on: '/bin/bash' +# off: 'bash' +shell_path="off" + +# Show $SHELL version +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --shell_version +# +# Example: +# on: 'bash 4.4.5' +# off: 'bash' +shell_version="on" + + +# CPU + + +# CPU speed type +# +# Default: 'bios_limit' +# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'. +# Flag: --speed_type +# Supports: Linux with 'cpufreq' +# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value. +speed_type="bios_limit" + +# CPU speed shorthand +# +# Default: 'off' +# Values: 'on', 'off'. +# Flag: --speed_shorthand +# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz +# +# Example: +# on: 'i7-6500U (4) @ 3.1GHz' +# off: 'i7-6500U (4) @ 3.100GHz' +speed_shorthand="off" + +# Enable/Disable CPU brand in output. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --cpu_brand +# +# Example: +# on: 'Intel i7-6500U' +# off: 'i7-6500U (4)' +cpu_brand="on" + +# CPU Speed +# Hide/Show CPU speed. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --cpu_speed +# +# Example: +# on: 'Intel i7-6500U (4) @ 3.1GHz' +# off: 'Intel i7-6500U (4)' +cpu_speed="on" + +# CPU Cores +# Display CPU cores in output +# +# Default: 'logical' +# Values: 'logical', 'physical', 'off' +# Flag: --cpu_cores +# Support: 'physical' doesn't work on BSD. +# +# Example: +# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores) +# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores) +# off: 'Intel i7-6500U @ 3.1GHz' +cpu_cores="logical" + +# CPU Temperature +# Hide/Show CPU temperature. +# Note the temperature is added to the regular CPU function. +# +# Default: 'off' +# Values: 'C', 'F', 'off' +# Flag: --cpu_temp +# Supports: Linux, BSD +# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable +# coretemp kernel module. This only supports newer Intel processors. +# +# Example: +# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]' +# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]' +# off: 'Intel i7-6500U (4) @ 3.1GHz' +cpu_temp="off" + + +# GPU + + +# Enable/Disable GPU Brand +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --gpu_brand +# +# Example: +# on: 'AMD HD 7950' +# off: 'HD 7950' +gpu_brand="on" + +# Which GPU to display +# +# Default: 'all' +# Values: 'all', 'dedicated', 'integrated' +# Flag: --gpu_type +# Supports: Linux +# +# Example: +# all: +# GPU1: AMD HD 7950 +# GPU2: Intel Integrated Graphics +# +# dedicated: +# GPU1: AMD HD 7950 +# +# integrated: +# GPU1: Intel Integrated Graphics +gpu_type="all" + + +# Resolution + + +# Display refresh rate next to each monitor +# Default: 'off' +# Values: 'on', 'off' +# Flag: --refresh_rate +# Supports: Doesn't work on Windows. +# +# Example: +# on: '1920x1080 @ 60Hz' +# off: '1920x1080' +refresh_rate="off" + + +# Gtk Theme / Icons / Font + + +# Shorten output of GTK Theme / Icons / Font +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --gtk_shorthand +# +# Example: +# on: 'Numix, Adwaita' +# off: 'Numix [GTK2], Adwaita [GTK3]' +gtk_shorthand="off" + + +# Enable/Disable gtk2 Theme / Icons / Font +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --gtk2 +# +# Example: +# on: 'Numix [GTK2], Adwaita [GTK3]' +# off: 'Adwaita [GTK3]' +gtk2="on" + +# Enable/Disable gtk3 Theme / Icons / Font +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --gtk3 +# +# Example: +# on: 'Numix [GTK2], Adwaita [GTK3]' +# off: 'Numix [GTK2]' +gtk3="on" + + +# IP Address + + +# Website to ping for the public IP +# +# Default: 'http://ident.me' +# Values: 'url' +# Flag: --ip_host +public_ip_host="http://ident.me" + +# Public IP timeout. +# +# Default: '2' +# Values: 'int' +# Flag: --ip_timeout +public_ip_timeout=2 + + +# Desktop Environment + + +# Show Desktop Environment version +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --de_version +de_version="on" + + +# Disk + + +# Which disks to display. +# The values can be any /dev/sdXX, mount point or directory. +# NOTE: By default we only show the disk info for '/'. +# +# Default: '/' +# Values: '/', '/dev/sdXX', '/path/to/drive'. +# Flag: --disk_show +# +# Example: +# disk_show=('/' '/dev/sdb1'): +# 'Disk (/): 74G / 118G (66%)' +# 'Disk (/mnt/Videos): 823G / 893G (93%)' +# +# disk_show=('/'): +# 'Disk (/): 74G / 118G (66%)' +# +disk_show=('/') + +# Disk subtitle. +# What to append to the Disk subtitle. +# +# Default: 'mount' +# Values: 'mount', 'name', 'dir', 'none' +# Flag: --disk_subtitle +# +# Example: +# name: 'Disk (/dev/sda1): 74G / 118G (66%)' +# 'Disk (/dev/sdb2): 74G / 118G (66%)' +# +# mount: 'Disk (/): 74G / 118G (66%)' +# 'Disk (/mnt/Local Disk): 74G / 118G (66%)' +# 'Disk (/mnt/Videos): 74G / 118G (66%)' +# +# dir: 'Disk (/): 74G / 118G (66%)' +# 'Disk (Local Disk): 74G / 118G (66%)' +# 'Disk (Videos): 74G / 118G (66%)' +# +# none: 'Disk: 74G / 118G (66%)' +# 'Disk: 74G / 118G (66%)' +# 'Disk: 74G / 118G (66%)' +disk_subtitle="mount" + +# Disk percent. +# Show/Hide disk percent. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --disk_percent +# +# Example: +# on: 'Disk (/): 74G / 118G (66%)' +# off: 'Disk (/): 74G / 118G' +disk_percent="on" + + +# Song + + +# Manually specify a music player. +# +# Default: 'auto' +# Values: 'auto', 'player-name' +# Flag: --music_player +# +# Available values for 'player-name': +# +# amarok +# audacious +# banshee +# bluemindo +# clementine +# cmus +# deadbeef +# deepin-music +# dragon +# elisa +# exaile +# gnome-music +# gmusicbrowser +# gogglesmm +# guayadeque +# io.elementary.music +# iTunes +# juk +# lollypop +# mocp +# mopidy +# mpd +# muine +# netease-cloud-music +# olivia +# playerctl +# pogo +# pragha +# qmmp +# quodlibet +# rhythmbox +# sayonara +# smplayer +# spotify +# strawberry +# tauonmb +# tomahawk +# vlc +# xmms2d +# xnoise +# yarock +music_player="auto" + +# Format to display song information. +# +# Default: '%artist% - %album% - %title%' +# Values: '%artist%', '%album%', '%title%' +# Flag: --song_format +# +# Example: +# default: 'Song: Jet - Get Born - Sgt Major' +song_format="%artist% - %album% - %title%" + +# Print the Artist, Album and Title on separate lines +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --song_shorthand +# +# Example: +# on: 'Artist: The Fratellis' +# 'Album: Costello Music' +# 'Song: Chelsea Dagger' +# +# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger' +song_shorthand="off" + +# 'mpc' arguments (specify a host, password etc). +# +# Default: '' +# Example: mpc_args=(-h HOST -P PASSWORD) +mpc_args=() + + +# Text Colors + + +# Text Colors +# +# Default: 'distro' +# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' +# Flag: --colors +# +# Each number represents a different part of the text in +# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info' +# +# Example: +# colors=(distro) - Text is colored based on Distro colors. +# colors=(4 6 1 8 8 6) - Text is colored in the order above. +colors=(distro) + + +# Text Options + + +# Toggle bold text +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --bold +bold="on" + +# Enable/Disable Underline +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --underline +underline_enabled="on" + +# Underline character +# +# Default: '-' +# Values: 'string' +# Flag: --underline_char +underline_char="-" + + +# Info Separator +# Replace the default separator with the specified string. +# +# Default: ':' +# Flag: --separator +# +# Example: +# separator="->": 'Shell-> bash' +# separator=" =": 'WM = dwm' +separator=":" + + +# Color Blocks + + +# Color block range +# The range of colors to print. +# +# Default: '0', '15' +# Values: 'num' +# Flag: --block_range +# +# Example: +# +# Display colors 0-7 in the blocks. (8 colors) +# neofetch --block_range 0 7 +# +# Display colors 0-15 in the blocks. (16 colors) +# neofetch --block_range 0 15 +block_range=(0 15) + +# Toggle color blocks +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --color_blocks +color_blocks="on" + +# Color block width in spaces +# +# Default: '3' +# Values: 'num' +# Flag: --block_width +block_width=3 + +# Color block height in lines +# +# Default: '1' +# Values: 'num' +# Flag: --block_height +block_height=1 + +# Color Alignment +# +# Default: 'auto' +# Values: 'auto', 'num' +# Flag: --col_offset +# +# Number specifies how far from the left side of the terminal (in spaces) to +# begin printing the columns, in case you want to e.g. center them under your +# text. +# Example: +# col_offset="auto" - Default behavior of neofetch +# col_offset=7 - Leave 7 spaces then print the colors +col_offset="auto" + +# Progress Bars + + +# Bar characters +# +# Default: '-', '=' +# Values: 'string', 'string' +# Flag: --bar_char +# +# Example: +# neofetch --bar_char 'elapsed' 'total' +# neofetch --bar_char '-' '=' +bar_char_elapsed="-" +bar_char_total="=" + +# Toggle Bar border +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --bar_border +bar_border="on" + +# Progress bar length in spaces +# Number of chars long to make the progress bars. +# +# Default: '15' +# Values: 'num' +# Flag: --bar_length +bar_length=15 + +# Progress bar colors +# When set to distro, uses your distro's logo colors. +# +# Default: 'distro', 'distro' +# Values: 'distro', 'num' +# Flag: --bar_colors +# +# Example: +# neofetch --bar_colors 3 4 +# neofetch --bar_colors distro 5 +bar_color_elapsed="distro" +bar_color_total="distro" + + +# Info display +# Display a bar with the info. +# +# Default: 'off' +# Values: 'bar', 'infobar', 'barinfo', 'off' +# Flags: --cpu_display +# --memory_display +# --battery_display +# --disk_display +# +# Example: +# bar: '[---=======]' +# infobar: 'info [---=======]' +# barinfo: '[---=======] info' +# off: 'info' +cpu_display="off" +memory_display="off" +battery_display="off" +disk_display="off" + + +# Backend Settings + + +# Image backend. +# +# Default: 'ascii' +# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off', +# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty' +# Flag: --backend +image_backend="ascii" + +# Image Source +# +# Which image or ascii file to display. +# +# Default: 'auto' +# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/' +# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")' +# Flag: --source +# +# NOTE: 'auto' will pick the best image source for whatever image backend is used. +# In ascii mode, distro ascii art will be used and in an image mode, your +# wallpaper will be used. +image_source="/root/.config/neofetch/ffsh-logo.txt" + + +# Ascii Options + + +# Ascii distro +# Which distro's ascii art to display. +# +# Default: 'auto' +# Values: 'auto', 'distro_name' +# Flag: --ascii_distro +# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS", +# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs, +# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock, +# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD, +# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS, +# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, +# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin, +# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary, +# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD, +# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo, +# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, +# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, +# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite, +# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, +# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib, +# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner, +# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba, +# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD, +# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint, +# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix, +# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, +# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, +# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, +# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, +# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, +# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio, +# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin, +# and IRIX have ascii logos +# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants. +# Use '{distro name}_old' to use the old logos. +# NOTE: Ubuntu has flavor variants. +# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME, +# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors. +# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu, +# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android, +# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola, +# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS, +# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian, +# postmarketOS, and Void have a smaller logo variant. +# Use '{distro name}_small' to use the small variants. +ascii_distro="auto" + +# Ascii Colors +# +# Default: 'distro' +# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' +# Flag: --ascii_colors +# +# Example: +# ascii_colors=(distro) - Ascii is colored based on Distro colors. +# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors. +ascii_colors=(distro) + +# Bold ascii logo +# Whether or not to bold the ascii logo. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --ascii_bold +ascii_bold="on" + + +# Image Options + + +# Image loop +# Setting this to on will make neofetch redraw the image constantly until +# Ctrl+C is pressed. This fixes display issues in some terminal emulators. +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --loop +image_loop="off" + +# Thumbnail directory +# +# Default: '~/.cache/thumbnails/neofetch' +# Values: 'dir' +thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch" + +# Crop mode +# +# Default: 'normal' +# Values: 'normal', 'fit', 'fill' +# Flag: --crop_mode +# +# See this wiki page to learn about the fit and fill options. +# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F +crop_mode="normal" + +# Crop offset +# Note: Only affects 'normal' crop mode. +# +# Default: 'center' +# Values: 'northwest', 'north', 'northeast', 'west', 'center' +# 'east', 'southwest', 'south', 'southeast' +# Flag: --crop_offset +crop_offset="center" + +# Image size +# The image is half the terminal width by default. +# +# Default: 'auto' +# Values: 'auto', '00px', '00%', 'none' +# Flags: --image_size +# --size +image_size="auto" + +# Gap between image and text +# +# Default: '3' +# Values: 'num', '-num' +# Flag: --gap +gap=3 + +# Image offsets +# Only works with the w3m backend. +# +# Default: '0' +# Values: 'px' +# Flags: --xoffset +# --yoffset +yoffset=0 +xoffset=0 + +# Image background color +# Only works with the w3m backend. +# +# Default: '' +# Values: 'color', 'blue' +# Flag: --bg_color +background_color= + + +# Misc Options + +# Stdout mode +# Turn off all colors and disables image backend (ASCII/Image). +# Useful for piping into another command. +# Default: 'off' +# Values: 'on', 'off' +stdout="off" diff --git a/roles/network/tasks/main.yml b/roles/network/tasks/main.yml index 384b081..7b0dcb1 100644 --- a/roles/network/tasks/main.yml +++ b/roles/network/tasks/main.yml @@ -1,13 +1,12 @@ - name: Install network tools ansible.builtin.apt: name: ['bridge-utils', 'ntp', 'net-tools', 'iptables', 'bmon'] -- name: Create network configuration - ansible.builtin.template: - src: templates/60-ffsh-init.cfg - dest: /etc/network/interfaces.d/60-ffsh-init.cfg - mode: '0644' - name: Enable IP forwarding copy: src: templates/forwarding.conf dest: /etc/sysctl.d/forwarding.conf - mode: '0644' \ No newline at end of file + mode: '0644' +- name: Migration Step remove network configuration + ansible.builtin.file: + path: /etc/network/interfaces.d/60-ffsh-init.cfg + state: absent diff --git a/roles/network/templates/60-ffsh-init.cfg b/roles/network/templates/60-ffsh-init.cfg deleted file mode 100644 index b2f94af..0000000 --- a/roles/network/templates/60-ffsh-init.cfg +++ /dev/null @@ -1,47 +0,0 @@ -# -# Network interfaces -# /etc/network/interfaces.d/60-ffsh-init.cfg -# - -# Netwerkbruecke fuer Freifunk -# - Hier laeuft der Traffic von den einzelnen Routern und dem externen VPN zusammen -# - Unter der hier konfigurierten IP ist der Server selber im Freifunk Netz erreichbar -# - bridge_ports none sorgt dafuer, dass die Bruecke auch ohne Interface erstellt wird - -auto br-ffsh -iface br-ffsh inet static - address {{ ffsh_ipv4_address}} - netmask 255.255.0.0 - bridge_ports none - -iface br-ffsh inet6 static - address {{ ffsh_ipv6_address}} - hwaddress {{ ffsh_bat_mac }} - netmask 64 - - - post-up /sbin/ip rule add iif br-ffsh table 42 - pre-down /sbin/ip rule del iif br-ffsh table 42 - -# B.A.T.M.A.NAdvanced Advanced Interface -# - Erstellt das virtuelle Inteface fuer das B.A.T.M.A.N Advanced-Modul und bindet dieses an die Netzwerkbruecke -# - Die unten angelegte Routing-Tabelle wird spaeter fuer das Routing innerhalb von Freifunk (Router/VPN) verwendet -# -# Nachdem das Interface gestartet ist, wird eine IP-Regel angelegt, die besagt, dass alle Pakete, die über das bat0-Interface eingehen, -# und mit 0x1 markiert sind, über die Routing-Tabelle 42 geleitet werden. -# Dies ist wichtig, damit die Pakete aus dem Mesh wirklich über das VPN raus gehen. -# - -allow-hotplug bat0 -iface bat0 inet6 manual - pre-up batctl if add ffsh-mesh - post-up ip link set address {{ ffsh_bat_mac }} dev bat0 - post-up ip link set dev bat0 up - post-up brctl addif br-ffsh bat0 - post-up batctl it 10000 - post-up batctl gw server 100mbit/100mbit - - post-up ip rule add from all fwmark 0x1 table 42 - - pre-down brctl delif br-ffsh bat0 || true - down ip link set dev bat0 down \ No newline at end of file diff --git a/roles/radvd/templates/radvd.conf b/roles/radvd/templates/radvd.conf index 0c52a48..f124352 100644 --- a/roles/radvd/templates/radvd.conf +++ b/roles/radvd/templates/radvd.conf @@ -1,4 +1,4 @@ -interface br-ffsh { +interface bat0 { AdvSendAdvert on; IgnoreIfMissing on; AdvManagedFlag off; diff --git a/roles/respondd/files/config.json b/roles/respondd/files/config.json index ab0195b..41a0a87 100644 --- a/roles/respondd/files/config.json +++ b/roles/respondd/files/config.json @@ -1,7 +1,7 @@ { "addr": "ff02::2:1001", "batman": "bat0", - "bridge": "br-ffsh", + "bridge": "bat0", "mesh-vpn": [ "ffsh-mesh" ], "mesh-wlan": [], "fastd_socket": "/run/fastd/fastd-ffsh.socket", diff --git a/roles/respondd/files/respondd.service b/roles/respondd/files/respondd.service new file mode 100644 index 0000000..ee797a9 --- /dev/null +++ b/roles/respondd/files/respondd.service @@ -0,0 +1,13 @@ +[Unit] +Description=ext-respondd (respondd status for servers) +After=syslog.target network-online.target fastd@ffsh.service + +[Service] +Type=simple +User=root +Group=root +WorkingDirectory=/opt/ext-respondd +ExecStart=/opt/ext-respondd/ext-respondd.py + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/roles/respondd/tasks/main.yml b/roles/respondd/tasks/main.yml index 424c212..03f125a 100644 --- a/roles/respondd/tasks/main.yml +++ b/roles/respondd/tasks/main.yml @@ -1,19 +1,18 @@ - name: Clone ffggrz/ext-respondd - git: + ansible.builtin.git: repo: https://github.com/ffggrz/ext-respondd.git dest: /opt/ext-respondd/ force: yes version: master - name: Copy systemd job - copy: - remote_src: yes - src: /opt/ext-respondd/ext-respondd.service.example + ansible.builtin.copy: + src: files/respondd.service dest: /etc/systemd/system/respondd.service mode: '0644' owner: root group: root - name: Copy config - copy: + ansible.builtin.copy: src: files/config.json dest: /opt/ext-respondd/config.json mode: '0644' diff --git a/setup.yml b/setup.yml index d5c29b1..84ed7a8 100644 --- a/setup.yml +++ b/setup.yml @@ -8,6 +8,7 @@ update_cache: yes roles: - { role: network, tags: "network"} + - { role: hostname, tags: "hostname"} - { role: fail2ban, tags: "fail2ban"} - { role: batman, tags: "batman-adv", batman_version: "2021.2"} - { role: fastd, tags: "fastd", fastd_target: "fastd 21"}