Главная

Monday, 19 October 2020

Reboot Linux by Ansible.

Всем привет.

Хоть 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

А что вы думаете по этому поводу?