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 }}"