Хоть Linux и не требует своей перезагрузки так часто как Windows, но тем не менее такой вариант надо знать тоже. Мы инсталировали софт в Linux с помощью Ansible, значит и перегружать ее будем с помощью того же Ansible.
Итак, пишем наш плейбук:
- name: Linux system reboot
apt: name=git update_cache=yes
hosts: test
become: yes
tasks:
#Первая задача: непосредственно сам ребут
- name: Reboot host
command: shutdown -r now "Ansible system reboot"
async: 3600
poll: 0
register: linux_clone
#вторая задача: отследим когда ребут завершится - вариант первый
- name: Wait for linux to complete
async_status:
jid: "{{ linux_clone.ansible_job_id }}"
register: result
until: result.finished
retries: 3600
#вторая задача: отследим когда ребут завершится - вариант второй
- name: Wait for the host to finish rebooting
local_action: wait_for host={{ inventory_hostname }} state=started
become: false
delegate_to: localhost
#вторая задача отследим когда ребут завершится - вариант третий
- name: Wait for the host to finish rebooting
wait_for:
host: "{{ inventory_hostname }}"
state: started
delay: 5
timeout: 40
delegate_to: localhost
где:
1) аsync говорит о том, что команду надо запустить асинхронно (т.е. продолжить выполнение, после ее запуска не дожидаясь ответа). Аsync = 3600 - выполнять не более 3600 секунд.
2) poll говорит о том, через сколько попробовать получить результат выполнения команды.
poll = 0 - т.е. можно перейти к следующей задаче не ожидая окончания выполнения текущей
3) register: linux_clone - захватим результат чтобы работать с ним дальше
4) async_status: - читаем результат задачи linux_clone
5) jid: "{{ linux_clone.ansible_job_id }}" - по идентификатору
register: result
6) until: result.finished - перечитываем результат повторно много раз.
No comments:
Post a Comment
А что вы думаете по этому поводу?