Ответ
В Ansible для проверки состояния узлов без внесения изменений используется режим --check (Dry Run) в сочетании с модулем ping для базовой проверки доступности.
1. Проверка подключения (Ad-Hoc команда):
ansible all -i inventory.ini -m ping
# Успешный ответ: {"ping": "pong"}
2. Пробный запуск плейбука (Dry Run):
ansible-playbook site.yml --check --diff
Этот режим показывает, какие изменения были бы применены, но не выполняет их. Он критически важен для проверки конфигураций на production-серверах.
3. Использование модуля wait_for для проверки конкретных сервисов:
- name: Wait for web server to start on port 8080
ansible.builtin.wait_for:
host: "{{ inventory_hostname }}"
port: 8080
delay: 5
timeout: 60
Также для комплексного мониторинга состояния в DevOps-стеке используются внешние системы: Health Checks в оркестраторах (Kubernetes Readiness/Liveness Probes), мониторинг (Prometheus) и алертинг (Alertmanager).
Ответ 18+ 🔞
Да ты посмотри, какая тема интересная! Ну то есть ты хочешь проверить свои сервера, но так, чтобы нихуя им не сломать? Правильно, мужик, подход грамотный. Не лезть в продакшн с шашкой наголо — это святое.
Смотри, в Ансибле для этого есть режим --check, он же сухой прогон. Это как примерить костюм перед свадьбой — посмотреть, как сидит, но не надевать его нахуй в магазине. Идеально, чтобы не накосячить.
1. Самый простой способ — просто пингануть всех. Тыкаешь такую команду, и смотришь, кто живой, а кто уже накрылся медным тазом.
ansible all -i inventory.ini -m ping
Если в ответ прилетело {"ping": "pong"}, то, ёпта, с подключением всё окей. Если тишина — значит, где-то проводки поотваливались или сервер лег.
2. А вот если у тебя целый плейбук, и ты хочешь посмотреть, что он сделал бы, но не делать. Тут уже включаем режим параноика по полной.
ansible-playbook site.yml --check --diff
Эта штука покажет тебе овердохуища полезной инфы: какие файлы бы изменила, какие службы перезапустила, но нихуя не тронет. Волнение ебать, но безопасно. Обязательно гоняй так на проде перед любыми изменениями — доверия ебать ноль ко всем, даже к себе.
3. Ну и бывает, что тебе не просто пинг нужен, а дождаться, когда какой-то сервис поднимется.
Например, веб-сервер на порту 8080. Для этого есть модуль wait_for. В плейбуке это выглядит как-то так:
- name: Wait for web server to start on port 8080
ansible.builtin.wait_for:
host: "{{ inventory_hostname }}"
port: 8080
delay: 5
timeout: 60
Перевод на русский: «Эй, сервак, я буду тебя ебать каждые 5 секунд, стучаться на 8080-й порт. И буду это делать минуту. Если за минуту не откликнешься — считай, что ты пидарас шерстяной, и пойду искать причину».
Конечно, это всё базовые проверки. В нормальном девопс-стеке за здоровьем сервисов следят уже другие, более навороченные системы. Тот же кубер с его Health Checks (Readiness/Liveness Probes) будет постоянно тыкать палкой в твои поды, прометеус метрики собирать, а алертменеджер — будить тебя ночью, если что-то горит. Но начинается-то всё часто с простого ansible-playbook --check, чтобы самому не стать причиной этого пожара. Умно, чё.