From 33af395c8da40db7d54d29c1da1bb18ecfab9085 Mon Sep 17 00:00:00 2001 From: arseny Date: Tue, 15 Sep 2026 00:45:19 +0300 Subject: [PATCH] =?UTF-8?q?[ADD]=20usb-=D0=BF=D1=80=D0=B0=D0=B2=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=83=D0=B6=D0=B5=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D0=BA=D0=BB=D1=8E=D1=87=D1=91=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?HackRF,=20fish=20=D0=BF=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8E,=20run.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inventory/hosts.yml | 2 +- playbook.yml | 24 ++++++++++++++++++++++-- run.sh | 9 +++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) create mode 100755 run.sh diff --git a/inventory/hosts.yml b/inventory/hosts.yml index 787bb9a..ec34ed4 100644 --- a/inventory/hosts.yml +++ b/inventory/hosts.yml @@ -32,6 +32,6 @@ all: ansible_host: 192.168.1.42 sdr_id: 4 static_ip: 11.0.0.106 - sdr_serial: "" + sdr_serial: a32868dc346d2847 x: 0.00 y: 0.50 diff --git a/playbook.yml b/playbook.yml index 6e18621..62c14d0 100644 --- a/playbook.yml +++ b/playbook.yml @@ -19,16 +19,36 @@ - name: Зависимости сборки и утилиты HackRF become: true ansible.builtin.apt: - name: [cmake, g++, pkg-config, git, rsync, libhackrf-dev, libusb-1.0-0-dev, libfftw3-dev, hackrf] + name: [cmake, g++, pkg-config, git, rsync, libhackrf-dev, libusb-1.0-0-dev, libfftw3-dev, hackrf, fish] state: present tags: [base] - - name: pi в группе plugdev (udev HackRF) + - name: pi в группе plugdev, login-shell fish become: true ansible.builtin.user: name: pi groups: plugdev append: true + shell: /usr/bin/fish + tags: [base] + + - name: Права udev на уже подключённый HackRF (устройство старше правил) + become: true + ansible.builtin.shell: | + bad=0 + for d in /sys/bus/usb/devices/*; do + [ -f "$d/idVendor" ] || continue + case "$(cat "$d/idVendor"):$(cat "$d/idProduct")" in 1d50:6089|1d50:604b) ;; *) continue;; esac + node=/dev/bus/usb/$(printf %03d "$(cat "$d/busnum")")/$(printf %03d "$(cat "$d/devnum")") + [ "$(stat -c %G "$node")" = plugdev ] || bad=1 + done + if [ "$bad" = 1 ]; then + udevadm control --reload-rules && udevadm trigger --subsystem-match=usb && echo FIXED + else + echo OK + fi + register: usb + changed_when: "'FIXED' in usb.stdout" tags: [base] - name: Имя узла diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..5ba4d85 --- /dev/null +++ b/run.sh @@ -0,0 +1,9 @@ +#!/bin/sh +# run.sh [аргументы ansible-playbook] примеры: +# ./run.sh весь парк, все теги +# ./run.sh --tags base -l node106 +# ./run.sh --check --diff сухой прогон +set -e +cd "$(dirname "$0")" +[ -f keys/gitea_deploy ] || { echo "[!] нет keys/gitea_deploy -- запустите scripts/gen-key.sh"; exit 1; } +exec ansible-playbook playbook.yml "$@"