From 5417445fb5b81c8afe51de54a0316090086231df Mon Sep 17 00:00:00 2001 From: Arseny <20096ninja@gmail.com> Date: Sun, 27 Sep 2026 12:42:48 +0300 Subject: [PATCH] =?UTF-8?q?[ADD]=20reboot.yml,=20=D0=BF=D0=B5=D1=80=D0=B5?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8C=20node.env=20=D1=84=D0=BB?= =?UTF-8?q?=D0=B0=D0=B3=D0=BE=D0=BC=20env=5Fforce?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++++- playbook.yml | 4 ++-- reboot.yml | 19 +++++++++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 reboot.yml diff --git a/README.md b/README.md index 1a0372e..e6b9f24 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ ansible-playbook deploy.yml # код с этой маши | `playbook.yml` | теги `base` (apt, зависимости, plugdev, udev для HackRF, fish), `hostname`, `key` (deploy-ключ Gitea), `env` (`~/node.env`, только засев) | | `wifi-off.yml` | радио выключено, NetworkManager помнит это через перезагрузку | | `deploy.yml` | `rsync` исходников без `.git` и `build`, ревизия в `~/hackrf-scanner/DEPLOYED`, `cmake` сборка, проверка бинарников | +| `reboot.yml` | перезагрузка с ожиданием возврата, печатает ядро | | `poweroff.yml` | штатное выключение и ожидание, пока узел пропадёт из сети | Ограничение по узлам и тегам как обычно: `-l node106`, `--tags base`. @@ -48,7 +49,10 @@ ansible-playbook deploy.yml # код с этой маши `inventory/hosts.yml`: адрес узла в проводной сети, `sdr_id`, серийник HackRF, координаты x, y в метрах. Координаты и `server_ip` засеваются в `~/node.env` -один раз, полевые правки на узле плейбук не перетирает. +один раз, полевые правки на узле плейбук не перетирает. После смены +расстановки в инвентаре паспорта перезаписываются явно: + + ansible-playbook playbook.yml --tags env -e env_force=true ## Приёмка diff --git a/playbook.yml b/playbook.yml index 4be6f9a..9cdb559 100644 --- a/playbook.yml +++ b/playbook.yml @@ -111,11 +111,11 @@ StrictHostKeyChecking accept-new tags: [key] - - name: ~/node.env для node.py (только засев, полевые правки не трогаем) + - name: ~/node.env для node.py (засев; перезапись из инвентаря -e env_force=true) ansible.builtin.copy: dest: ~/node.env mode: "0644" - force: false + force: "{{ env_force | default(false) }}" content: | SDR_ID={{ sdr_id }} X={{ x }} diff --git a/reboot.yml b/reboot.yml new file mode 100644 index 0000000..2eb0a06 --- /dev/null +++ b/reboot.yml @@ -0,0 +1,19 @@ +# Перезагрузка узлов с ожиданием возврата по ssh (например, после обновления +# ядра). В конце каждый узел печатает ядро, на котором поднялся. +- name: Перезагрузка узлов + hosts: all + gather_facts: false + tasks: + - name: reboot и ожидание возврата + become: true + ansible.builtin.reboot: + reboot_timeout: 300 + + - name: Ядро после перезагрузки + ansible.builtin.command: uname -r + register: kernel + changed_when: false + + - name: Итог по узлу + ansible.builtin.debug: + msg: "[+] {{ inventory_hostname }}: поднялся, ядро {{ kernel.stdout }}"