- Convert ~290 short module names to FQCNs across all roles - Change become: yes/no to become: true/false, gather_facts: no to false - Remove deprecated inject_facts_as_vars from ansible.cfg - Add missing task names to import_tasks/include_role calls - Add become: yes to librenms clone task (partial-become fix) - Add pipefail to risky shell command in udp-gro-fix.yml - Quote all octal mode values - Harden .ansible-lint with production profile and empty skip_list - Update findings.md with all fixes
66 lines
No EOL
1.8 KiB
YAML
66 lines
No EOL
1.8 KiB
YAML
---
|
|
# Fix UDP GRO configuration for Tailscale on bridge interfaces
|
|
# See https://tailscale.com/s/ethtool-config-udp-gro
|
|
|
|
- name: Check if ethtool is installed
|
|
ansible.builtin.package:
|
|
name: ethtool
|
|
state: present
|
|
tags:
|
|
- network
|
|
- tailscale
|
|
|
|
- name: Get list of bridge interfaces
|
|
ansible.builtin.shell:
|
|
cmd: "set -o pipefail; ip link show type bridge | grep -E '^[0-9]+:' | cut -d: -f2 | tr -d ' '"
|
|
executable: /bin/bash
|
|
register: bridge_interfaces
|
|
changed_when: false
|
|
failed_when: false
|
|
tags:
|
|
- network
|
|
- tailscale
|
|
|
|
- name: Disable UDP GRO on bridge interfaces
|
|
ansible.builtin.command: "ethtool -K {{ item }} rx-udp-gro-forwarding off rx-gro-list off"
|
|
loop: "{{ bridge_interfaces.stdout_lines }}"
|
|
when: bridge_interfaces.stdout_lines is defined and bridge_interfaces.stdout_lines | length > 0
|
|
failed_when: false
|
|
changed_when: true
|
|
tags:
|
|
- network
|
|
- tailscale
|
|
|
|
- name: Create systemd service to persist UDP GRO settings
|
|
ansible.builtin.copy:
|
|
dest: /etc/systemd/system/disable-udp-gro@.service
|
|
content: |
|
|
[Unit]
|
|
Description=Disable UDP GRO on %i for Tailscale
|
|
After=network-online.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
ExecStart=/usr/sbin/ethtool -K %i rx-udp-gro-forwarding off rx-gro-list off
|
|
RemainAfterExit=yes
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
tags:
|
|
- network
|
|
- tailscale
|
|
|
|
- name: Enable systemd service for each bridge interface
|
|
ansible.builtin.systemd:
|
|
name: "disable-udp-gro@{{ item }}.service"
|
|
enabled: true
|
|
daemon_reload: true
|
|
state: started
|
|
loop: "{{ bridge_interfaces.stdout_lines }}"
|
|
when: bridge_interfaces.stdout_lines is defined and bridge_interfaces.stdout_lines | length > 0
|
|
tags:
|
|
- network
|
|
- tailscale |