infra/ansible/roles/general/tasks/udp-gro-fix.yml
Graham McIntire ee72c64246
fix: resolve best practice and lint violations
- 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
2026-06-04 14:34:23 -05:00

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