Příkaz Ad-Hoc je jednořádkový ansible příkaz, který provádí jeden úkol na cílovém hostiteli. Umožňuje provádět jednoduchou jednořádkovou úlohu proti jednomu nebo skupině hostitelů definovaných v konfiguraci souboru inventáře. Příkaz Ad-Hoc bude mít pouze dva parametry, skupinu hostitele, kterého chcete provést, a modul Ansible, který se má spustit.
Příkaz Ad-Hoc vám dává větší výhodu pro zkoumání samotného ansible. Můžete provádět úkoly, aniž byste museli nejprve vytvořit playbook, jako je restartování serverů, správa služeb, úprava konfigurace linky, kopírování souboru pouze na jednoho hostitele, instalace pouze jednoho balíčku.
V tomto tutoriálu ukážu základní použití příkazu Ansible Ad-Hoc. Příkaz Ad-Hoc budu používat k provádění jednoduchých úkolů, které můžete jako správce systému potřebovat každý den.
Předpoklady
V této příručce budeme používat dva servery Ubuntu 18.04 LTS, Bionic Beaver. Ansible server získá název hostitele 'ansible-node' s IP adresou 10.5.5.20 a Provision server s názvem hostitele 'provision' a IP adresou 10.5.5.21.
Co uděláme?
- Základní ad-hoc příkaz
- Přenos souborů
- Aktualizovat a upgradovat
- Spravovat balíček
- Správa služeb
- Kontrola systému
Základní použití ad-hoc příkazů
Nejprve se naučíme základní použití Ansible Ad-Hoc pro správu serverů. Naučíme se základní příkaz Ansible Ad-Hoc, použití příkazu Ad-Hoc s ověřením hesla ssh, eskalaci oprávnění a použití příkazu Ad-Hoc proti skupině hostitelů.
1. Základní příkaz
Základní příkaz ansible ad-hoc proti „všem“ hostitelům v souboru inventáře a pomocí modulu „ping“.
ansible all -m ping
- První parametr 'all' pro všechny hostitele v souboru inventáře.
- Druhý parametr uvnitř možnosti '-m' pro modul, spouští modul ping.
Nyní získáte výsledek, jak je uvedeno níže.
Příkaz Ad-Hoc proti prováděcímu serveru byl „ÚSPĚŠNÝ“, aniž by na serveru byly provedeny jakékoli změny, a my dostáváme výsledek modulu „ping“ z prováděcího serveru „pong“.
2. Filtrovat skupinu hostitelů a jednoho hostitele
Nyní můžete použít příkaz Ad-Hoc proti skupině hostitelů, kteří jsou již definováni v souboru inventáře. Můžete použít svůj vlastní soubor inventáře nebo použít výchozí soubor inventáře '/etc/ansible/hosts'.
Níže je uveden příklad spuštění ad-hoc příkazu proti skupině hostitelů s názvem 'hakase-testing', kteří jsou již definováni ve výchozím konfiguračním souboru inventáře.
ansible hakase-testing -m setup -a "filter=ansible_distribution*"
Pokud používáte vlastní soubor inventáře, přidejte za názvem souboru inventáře možnost „-i“.
ansible hakase-testing -i hosts -m setup -a "filter=ansible_distribution*"
Dostanete stejný výsledek.
Pokud nyní chcete v konfiguraci inventáře běžet proti jednomu hostiteli, můžete použít název hostitele, jak je uvedeno níže.
ansible provision -m setup -a "filter=ansible_distribution*"
A příkaz ad-hoc bude spuštěn pouze na serveru 'provision'.
3. Pomocí hesla SSH
Nyní provedeme příkaz Ad-Hoc pomocí výzvy k ověření hesla ssh. A abyste to mohli udělat, musíte nainstalovat další balíček s názvem 'sshpass' na 'ansible-node'.
Nainstalujte balíček sshpass pomocí příkazu apt níže.
sudo apt install sshpass -y
Nyní spusťte ad-hoc příkaz a na konec přidejte možnost '--ask-pass'.
ansible hakase-testing -m ping --ask-pass
A budete požádáni o 'Heslo SSH' pro server.
Zadejte své heslo ssh a příkaz ad-hoc bude spuštěn na serveru.
4. Eskalace oprávnění
Ansible poskytuje funkce pro eskalaci oprávnění vůči serverům. Pokud chcete spustit příkaz ad-hoc jako uživatel bez oprávnění root, můžete použít volbu '--become' pro získání oprávnění root a volbu '-K' pro vyžádání hesla.
Spusťte ad-hoc příkaz 'fdisk -l' jako uživatel 'hakase' s možností oprávnění '--become' a '-K', aby se zobrazilo 'SUDO Password'.
ansible hakase-testing -m shell -a 'fdisk -l' -u hakase --become -K
Níže je výsledek.
Přenos souborů
Nyní použijeme příkaz Ad-Hoc pro přenos souborů na server a ze serveru. Můžeme přenést soubor na zajišťovací server pomocí modulu 'copy' a stáhnout soubor ze serveru pomocí modulu 'fetch'.
1. Nahrát soubor na hostitele
V tomto příkladu spustíme příkaz ad-hoc a pomocí modulu 'copy' nahrajeme konfiguraci sudoers pro uživatele hakase do adresáře '/etc/sudoers.d' ve skupině 'hakase-testing'.
Spusťte níže uvedený ad-hoc příkaz.
ansible hakase-testing -m copy -a 'src=/home/hakase/hakase-sudo.conf dest=/etc/sudoers.d/hakase owner=root mode=0644' -u hakase --become -K
Nyní budete požádáni o „Heslo SUDO“ pro uživatele hakase. Zadejte heslo a získáte výsledek, jak je uvedeno níže.
Soubor byl nahrán do cílového adresáře 'dest' a vy dostanete 'změněný' výsledek jako 'true'.
2. Stáhnout soubor z hostitele
Nyní použijeme ad-hoc příkaz s modulem 'fetch' pro stažení souboru z prováděcího serveru na místní server 'ansible-node'.
Stáhněte si konfigurační soubor '/etc/sudoers.d/hakase' ze serveru 'provision' do místního adresáře s názvem 'backup'.
ansible provision -m fetch -a 'src=/etc/sudoers.d/hakase dest=/home/hakase/backup/hakase-sudoers flat=yes'
A získáte soubor s názvem 'hakase-sudoers' v adresáři 'backup'.
Krok 3 – Aktualizace úložiště a balíčků upgradů
Chcete-li aktualizovat a upgradovat úložiště serverů Ubuntu, můžeme použít příkaz ad-hoc s modulem apt.
Aktualizujte úložiště na skupinovém hakase-testing.
ansible hakase-testing -m apt -a 'update_cache=yes' --become
Nyní aktualizujte úložiště a upgradujte všechny balíčky na nejnovější verzi pomocí možnosti 'upgrade=dist'.
ansible hakase-testing -m apt -a 'upgrade=dist update_cache=yes' --become
Počkej na všechny balíčky se aktualizují.
Správa balíčků
To je velmi užitečné, když se snažíte sestavit a odladit vlastní playbook. Protože někdy je potřeba do systému nainstalovat další balíček. Tento ad-hoc příkaz vám tedy poskytne snadný způsob instalace balíčku bez přihlášení ke každému serveru.
1. Nainstalujte balíček
Nainstalujte jeden balíček pomocí příkazu ad-hoc s modulem apt, jak je uvedeno níže.
ansible hakase-testing -m apt -a 'name=nginx state=latest' --become
2. Odebrat balíček
Odstraňte balíček a vyčistěte veškerou konfiguraci související s balíčkem.
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes' --become
3. Automatické odstranění
Níže uvedený příklad je odstranění balíčku nginx a vyčištění všech souvisejících s konfigurací a poté odstranění všech nepoužívaných balíčků v systému.
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes autoremove=yes' --become
Správa služeb
V tomto kroku použijeme servisní modul na příkazu ad-hoc pro správu systémové služby na zřizovacím serveru.
1. Spusťte služby
Spusťte službu nginx a přidejte ji do času spouštění.
ansible hakase-testing -m service -a 'name=nginx state=started enabled=yes' --become
Získáte „změněno“ a „povoleno“ výsledek jako „pravda“.
2. Restartujte službu
Pokud chcete službu restartovat, můžete použít následující příkaz.
ansible hakase-testing -m service -a 'name=nginx state=restarted' --become
Služba nginx byla restartována.
3. Zastavte službu
Chcete-li službu zastavit, změňte hodnotu 'stav' na 'zastaveno'.
ansible hakase-testing -m service -a 'name=nginx state=stopped' --become
Služba nginx na serverech 'hakase-testing' byla zastavena.
Kontrola systému
Nyní použijeme modul 'shell' uvnitř příkazu ad-hoc. A budeme provádět jednoduché monitorování systému pomocí jednoduchého linuxového příkazu prostřednictvím Ansible ad-hoc.
Nejprve nainstalujte balíček 'sysstat' na všechny servery pomocí ad-hoc příkazu níže.
ansible hakase-testing -m apt -a 'name=sysstat state=latest' --become
Počkejte na instalaci balíčku 'sysstat'.
Po dokončení jste připraveni zkontrolovat všechny servery.
1. Disk je k dispozici
Zkontrolujte disk dostupný v kořenovém oddílu pomocí příkazu fdisk.
ansible hakase-testing -m shell -a 'df -h /dev/sda2' --become
Změňte '/dev/sda2' svou vlastní cestou.
2. Využití paměti RAM
Nyní zkontrolujte využití paměti RAM na všech serverech pomocí příkazu 'free -m'.
ansible hakase-testing -m shell -a 'free -m' --become
A zobrazí se vám výsledek, jak je uvedeno níže.
3. Využití CPU
Kontrola využití CPU všech serverů pomocí příkazu mpstat.
ansible hakase-testing -m shell -a 'mpstat -P ALL' --become
Příkaz mpstat je součástí balíčku 'sysstat'.
4. Otevřete Porty
Kontrola otevřených portů na všech systémech pomocí netstat pomocí příkazu ad-hoc.
ansible hakase-testing -m shell -a 'netstat -plntu' --become
5. Doba provozu
Nyní zkontrolujte dobu provozuschopnosti každého serveru.
ansible hakase-testing -m shell -a 'uptime' --become