Вот такой скрипт позволяет перезагрузить хост, собрав перед этим основную статистику, такую как vmstat. Бывает очень нужно, когда сперва перезагрузился, а потом думаешь "а как мне посмотреть использование CPU за прошлый сеанс?" А вот:
—
- set_fact: _timestamp_utc="{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}"
- set_fact: _time_utc="{{ lookup('pipe', 'date') }}"
- set_fact: _reboot_log_file=/var/log/ansible-reboot/reboot_{{_timestamp_utc}}.log
- file: path=/var/log/ansible-reboot/ state=directory
- file: dest=_reboot_log_file state=touch
- shell: 'echo "{{_time_utc}}\n" >> {{_reboot_log_file}}'
- shell: 'echo "Kernel: " >> {{_reboot_log_file}} && uname -a >> {{_reboot_log_file}} && echo "\n" >> {{_reboot_log_file}}'
- shell: 'echo "Uptime: " >> {{_reboot_log_file}} && uptime >> {{_reboot_log_file}} && echo "\n" >> {{_reboot_log_file}}'
- shell: 'echo "Vmstat: " >> {{_reboot_log_file}} && vmstat -S m >> {{_reboot_log_file}} && echo "\n" >> {{_reboot_log_file}}'
- shell: 'echo "IOstat: " >> {{_reboot_log_file}} && iostat >> {{_reboot_log_file}} && echo "\n" >> {{_reboot_log_file}}'
- file: src={{_reboot_log_file}} dest=/var/log/ansible-reboot/last_reboot.log state=link
- name: restart host
command: shutdown -r now "Ansible updates triggered"
async: 0
poll: 0
ignore_errors: true
- name: waiting for host to reboot
local_action: wait_for host={{inventory_hostname}} port=22 state=stopped
sudo: false
- name: waiting for host to come back
local_action: wait_for host={{ansible_ssh_host}} port=22
sudo: false
не всё полезно, что в swap полезло