V tomto článku se zabývám tím, jak používat Ansible k efektivnímu restartování počítače se systémem Linux nebo Windows. Ansible reboot
modul byl představen v Ansible 2.7 (2018) a nyní je tento modul součástí ansible-base
a je součástí všech instalací Ansible. Všimněte si, prosím, reboot
modul musí být spuštěn z uzlu ovladače Ansible a nebude fungovat s uzly, jako je localhost.
Proč potřebujete restartovat spravovaný uzel?
Restartování operačního systému Linux je velmi vzácné. Většinu času můžeme dosáhnout požadovaného výsledku restartem nebo opětovným načtením jednotlivých služeb po změnách konfigurace nebo aktualizacích balíčků. Ale v některých případech, jako je oprava nebo upgrade systému, je k dokončení celého pracovního postupu a efektu vyžadována operace restartu. Pokud pro správu používáte Ansible, musíte zahrnout tuto úlohu restartování, abyste dosáhli plné automatizace.
Automatizované restarty jsou v Ansible velmi snadné, protože máte několik metod, jak dosáhnout úkolu restartování systému.
Předpoklady
Ujistěte se, že remote_user— který používáte pro Ansible k přihlášení do spravovaného uzlu – má sudo
přístup a oprávnění k restartování uzlu.
Stará dobrá metoda – Reboot command and wait
V minulosti jsme používali k restartování spravovaného uzlu pomocí Ansible metodou dvou kroků. (Existuje mnoho způsobů, ale tato metoda je běžná):
- Spustíme příkaz pro restart pomocí
shell
modul. - Použijeme
wait_for_connection
modul pro kontrolu uzlu, který se po restartu vrací zpět online.
Dovolte mi ukázat vám příklad.
Prvním úkolem je jednoduchý shell
modul restartujte počítač a Ansible se odpojí od uzlu. V další úloze Ansible počká, až se uzel vrátí do režimu online, ale s časovým limitem 300 sekund nebo pěti minut.
- name: Reboot the machine
shell: "sleep 5 && reboot"
async: 1
poll: 0
- name: Wait for the machine to come back online
wait_for_connection:
connect_timeout: 60
sleep: 5
delay: 5
timeout: 300
Docela jednoduché, že? Počkejte, existuje lepší a efektivnější metoda s Ansible reboot
modulu a cíle můžete dosáhnout jediným úkolem.
[ Mohlo by se vám také líbit čtení: Představujeme nový Ansible Automation Hub ]
Nová a efektivní metoda – restart pomocí modulu Ansible reboot
Ansible reboot
modul byl představen v Ansible 2.7 (v roce 2018) a nyní je tento modul součástí ansible-base
a je součástí všech instalací Ansible. Předpoklady jsou stejné, ale potřebujete jen jednoduchý úkol s reboot
modul. Ansible reboot
modul se postará o restartování systémů nebo spravovaného uzlu, počká, až systém spadne, vrátí se online a bude reagovat na příkazy.
Můžete jednoduše restartovat počítač bez dalších možností.
- name: Reboot the machine with all defaults options
reboot:
Existují možnosti jako reboot_timeout pro čekání na časový limit nebo pre_reboot_delay , který počká do zadaného počtu sekund, než se restartuje. Podrobnosti naleznete v dokumentaci modulu Ansible Reboot Module.
Zde je tedy naše příručka s úkolem restartovat. Můžete vidět, že je to velmi jednoduché a snadno se spravuje.
---
- name: Linux Reboot Demo
hosts: rhel7-base
gather_facts: no
remote_user: devops
become: true
tasks:
- name: Reboot the machine (Wait for 5 min)
reboot:
reboot_timeout: 300
Důležité poznámky
Pokud váš remote_user je nakonfigurován pomocí sudo
heslo, nezapomeňte přidat -K
a zadejte sudo
Heslo. Zde je příklad:
$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K
Pokud používáte Ansible Tower, přidejte sudo
heslo v rozhraní pověření, jak je znázorněno zde:
Pojďme otestovat příručku.
$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K
BECOME password:
PLAY [Linux Reboot Demo] ************************************************************************************
TASK [Reboot the machine (Wait for 5 min)] ******************************************************************
changed: [rhel7-base.lab.local]
PLAY RECAP **************************************************************************************************
rhel7-base.lab.local : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Restartování počítače se systémem Windows
A co restartování počítačů se systémem Windows? Jak víte, počítače s Windows můžete spravovat pomocí Ansible a tato úloha restartu bude potřeba jako součást vašeho pracovního postupu automatizace.
Dobrou zprávou je, že stejně jako všechny ostatní alternativy Windows existuje vyhrazený Ansible win_reboot
modul, který tento úkol zvládne. Nastavení vypadá takto:
- name: Reboot a Windows Machine
ansible.windows.win_reboot:
reboot_timeout: 360
Podrobnosti naleznete v dokumentaci modulu Ansible win_reboot.
[ Bezplatný průvodce od společnosti Red Hat:5 kroků k automatizaci vašeho podnikání. ]
Sbalit
Pomocí reboot
nebo win_reboot
modul v Ansible je docela snadný a už jste se to naučili. Ujistěte se, že máte ve své knize Ansible podle potřeby správné úlohy před restartem (restartujte pouze v případě potřeby) a po restartu (pro ověření služby nebo konfigurace po restartu).
Odkazy:
- Možnost restartu
- Ansible win_reboot