GNU/Linux >> Znalost Linux >  >> Linux

Začínáme s příkazy Ansible Ad Hoc

V našem předchozím článku jsme diskutovali o tom, co je ansible inventář a konfigurační soubor který pokládá základ k učení ansible. V tomto článku budeme diskutovat o dostupných ad hoc příkazech s několika příklady.

Úvod

Příkazy Ansible Ad hoc jsou skvělé, když chcete spouštět jakékoli rychlé úkoly a úkoly, které se často neopakují. Tyto ad hoc příkazy budou obvykle jednořádkové příkazy, které můžete spouštět přímo z terminálu nebo ze skriptu shellu.

Než se seznámíte s tím, jak pracovat s ad hoc příkazy, měli byste se seznámit s tím, co je idempotent. Ansible je idempotentní v přírodě, to znamená bez ohledu na to, kolikrát spustíte stejnou úlohu, pokud je stav objektu již změněn, pak se ansible nebude pokoušet znovu provést stejné změny na tomto objektu.

Příkazy ad hoc jsou odesílány prostřednictvím /usr/bin/ansible program. Chcete-li získat seznam podporovaných voleb pro příkaz ansible, můžete spustit následující příkaz.

$ ansible --help

Pokud nemáte žádnou ansible laboratoř, kterou byste si mohli procvičit, pak se můžete podívat na našeho průvodce, jak nastavit ansible ručně a také pomocí Vagrant a Virtualbox.

  • Nainstalujte a nakonfigurujte Ansible v systému Linux
  • Automatické nastavení Ansible Lab pomocí Vagrant a Virtualbox v Linuxu

Seznamte se s cílem

Před prací s ad hoc příkazy nebo psaním příruček byste měli mít jasnou představu o obchodních požadavcích a cílovém prostředí, se kterým budete pracovat.

Cílovým prostředím může být cokoli jako servery, síťová zařízení, kontejnery, cloudová řešení atd., které podporuje. Zde používám dva spravované uzly, na kterých běží Ubuntu 20.04.

Můžete spustit následující příkaz a zkontrolovat seznam hostitelů, které budou použity při spuštění ad hoc příkazu nebo playbooku.

#SYNTAX$ ansible --list-hosts

Název skupiny může být výchozí (všechny , neseskupeno ) nebo uživatelsky definované skupiny .

Pokud se chcete o skupinách dozvědět více, přejděte na následující odkaz.

  • Ansible Inventory and Configuration Files

Získejte seznam hostitelů pro všechny skupiny.

$ ansible all --list-hostshosts (2):managed1.anslab.com managed2.anslab.com

Získejte seznam hostitelů pro uživatelem definovanou skupinu. Zde je název mé skupiny ubuntu .

$ ansible ubuntu --list-hostshosts (2):managed1.anslab.com managed2.anslab.com

Soubor inventáře

Soubor Inventory obsahuje seznam spravovaných uzlů. Umístění souboru inventáře bude nakonfigurováno v ansible.cfg soubor. Umístění souboru inventáře můžete přepsat pomocí -i nebo --inventory příznak při spouštění ad hoc příkazů.

Mám dva soubory inventáře a výchozí soubor se jmenuje hosts. Abych mohl použít soubor host2, musím použít -i flag a předat soubor jako argument.

$ ansible all -i host2 --list-hostshosts (1):managed2.anslab.com

Pozor: Pokud je soubor inventáře v jiném umístění, musíte zadat absolutní cestu. Chcete-li zjistit pořadí priority pro soubor inventáře, můžete se podívat na následující odkaz.

  • Ansible Inventory and Configuration Files

Moduly Ansible

Ansible je nástroj s baterií, což znamená, že s ním jsou dodávány tuny modulů. Moduly jsou programy napsané v Pythonu který používá ansible ke spuštění na spravovaných uzlech k provedení úlohy. Ansible se řídí přístupem plug and play, což znamená, že si můžete napsat svůj vlastní modul a spustit jej prostřednictvím ansible.

Ansible podporuje spoustu balíčků, které byly vytvořeny open-source komunitou a různými prodejci produktů. Chcete-li získat seznam všech modulů nainstalovaných na vašem počítači, spusťte následující příkaz.

$ ansible-doc -l # SEZNAM VŠECH DOSTUPNÝCH MODULY$ ansible-doc -l | grep -i -w ^apt # KONKRÉTNÍ MODUL GREP (APT) MODUL

Chcete-li zobrazit dokumentaci k modulu, můžete spustit následující příkaz. Zde si prohlížím dokumentaci k modulu apt, což je modul správce balíčků pro distribuce založené na Debian/Ubuntu.

$ ansible-doc apt

Níže uvedený obrázek ukazuje dokumentaci k modulu ansible apt.

Syntaxe příkazu ad hoc

Existuje několik vstupů, které musíte zadat při spuštění příkazu ad hoc.

  • Musíte určit cíle (spravované uzly). Můžete použít výchozí skupiny „všechny/neseskupené“ nebo skupiny definované uživatelem.
  • Musíte předat název modulu jako argument do -m vlajka.
  • Každý modul přijímá sadu možností. Tyto volby by měly být předány jako argumenty parametru -a. Pokud existuje více možností, měly by být uzavřeny v uvozovkách.
$ ansible [skupina] -m [modul] -a [argumenty modulu]

Můžete kombinovat další argumenty, které jsme viděli v předchozích částech, do ad hoc příkazů.

Ověřte připojení pomocí modulu Ping

První modul, který spustíte po nastavení ansible, je "ping" modul. Modul ping se používá k ověření, zda je konektivita s řadičem a spravovanými uzly v pořádku. Pokud je připojení úspěšné, dostanete odpověď jako "ping :pong" .

$ ansible all -m ping

Výstup můžete také zhustit pomocí -o vlajka.

$ ansible all -m ping -o

Provádění příkazů prostřednictvím modulu Shell

Modul prostředí se používá k provedení jakéhokoli příkazu, který můžete spustit přes terminál. Je to prostě jako spouštění příkazů přes terminál Linux.

Měli byste použít -a flag a předat příkazy jako argumenty modulu shellu.

$ ansible all -m shell -a "argumenty"

Níže jsou uvedeny některé z příkazů, které jsem spustil prostřednictvím modulu ansible shell.

$ ansible all -m shell -a "echo $USER" 
$ ansible all -m shell -a "uptime"
$ ansible all -m shell -a "cat /etc/os-release | grep -i PRETTY_NAME"
$ ansible all -m shell -a "touch /tmp/abc.txt"
$ ansible all -m shell -a "ls -l /tmp/abc.txt"

Alternativně k modulu shell můžete také použít příkazový modul, který je výchozím modulem v ansible. Můžete přímo použít -a příkazy flag a pass jako argument, protože příkazový modul je výchozí modul.

$ ansible all -m příkaz -a "uptime" # EXKLUZIVNĚ PŘEDÁVÁM PŘÍKAZOVÝ MODUL$ ansible all -a "uptime" # NEPOUŽÍVÁ -m TO PASS MODUL

Rozdíl mezi shellem a příkazovým modulem je v tom, že příkazový modul máte přístup k některým speciálním proměnným a nemůžete používat roury, přesměrování a logické operátory AND.

Spusťte následující příkaz a zobrazí se chyba.

$ ansible all -m příkaz -a "test -f /etc/hosts &&echo 'hosts file present'"

Stejný příkaz můžete spustit přes modul shellu a poběží dobře.

$ ansible all -m shell -a "test -f /etc/hosts &&echo 'hosts file present'"

Spouštění skriptů prostřednictvím modulu skriptů

Pokud chcete spustit jakýkoli skript (python, shell atd.), můžete použít modul skriptu, který zkopíruje skript z vašeho řídicího počítače do všech spravovaných uzlů a poté skript spustí.

V mém /tmp mám následující kód pythonu adresář.

import sys,osprint("AKTUÁLNÍ VERZE PYTHONU =", sys.version_info)print("HOSTNAME =", os.uname()[1])print("AKTUÁLNÍ DIRECTORY =", os.getcwd()) 

Chcete-li ke spuštění skriptu použít modul skriptu, spusťte následující příkaz. Modul skriptu podporuje další argumenty v závislosti na tom, jak skript spouštíte. V mém případě spouštím python skript, takže se snažím předat další argument "executable=python3" spolu s cestou skriptu.

$ ansible all -m skript -a "/tmp/get_host_details.py executable=python3"

Moduly správy balíčků

Existují moduly pro práci se správci balíčků OS, jako je dnf , apt , pacman , atd. Zde používám apt protože používám Ubuntu. Ale syntaxe bude stejná pro všechny správce balíčků s rozdíly v parametrech. Měli byste se podívat na příslušnou dokumentaci, abyste se o ní dozvěděli více.

Chcete-li nainstalovat balíčky, můžete spustit následující příkaz a nastavit stav na "přítomný" . Měli byste zvolit -b nebo -become příznak ke spuštění modulu pomocí sudo oprávnění ve spravovaných uzlech. Pokud jste nastavili heslo pro uživatele sudo, měli byste předat -K spolu s -b příznak, který vás vyzve k státu heslo.

$ ansible all -m apt -a "name=cowsay,vim,cmatrix state=present" -b -K

Chcete-li se dozvědět, jak funguje eskalace oprávnění, podívejte se na náš článek pomocí odkazu níže.

  • Ansible SSH autentizace a eskalace oprávnění

Pro odstranění balíčků můžete spustit následující příkaz a nastavit stav na "absent" .

$ ansible all -m apt -a "name=cowsay,vim,cmatrix state=absent" -b -K

Doposud jsem ukázal, jak používat různé moduly pro různé úkoly. To vám mohlo poskytnout dobré pochopení toho, jak věci fungují, když spouštíte příkazy ad hoc.

Existuje spousta dalších modulů a tento článek nebude stačit na to, abychom je prošli všemi. Doporučuji vám tedy vybrat modul podle vašeho případu použití a začít procvičovat s ad hoc příkazy.

Výstupní barvy

Když spustíte příkazy ad hoc, měli byste vidět výstup ve třech různých barvách. Každá barva má svůj význam.

ČERVENÁ – Selhání ŽLUTÁ – Úspěch se změnami ZELENÁ – Úspěch, ale nedošlo k žádným změnám

ČERVENÁ – Selhání

Pokud se vaše úloha nezdaří, bude vytištěna červeně.

ŽLUTÁ – Úspěch se změnami

Když je stav nastaven na změnu, výstup bude ve žluté barvě.

ZELENÁ – Úspěch, ale žádné změny

Pokud se stav objektu nezmění, výstup bude v zelené barvě.

Závěr

V tomto článku jsme diskutovali o tom, co jsou příkazy ad hoc a jak používat příkazy ad hoc v Ansible. Jako začátečníkovi vám ad hoc příkazy poskytnou dobré pochopení toho, jak ansible používá moduly k dosažení úkolu. Na další úrovni začnete psát playbooky ve formátu YAML, kterým se budeme podrobně věnovat v samostatném článku.

Další informace:

  • Práce s Ansible Playbooks

Zdroje:

  • https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html
  • https://www.redhat.com/sysadmin/ansible-ad-hoc-commands

Linux
  1. Začínáme se Zsh

  2. Začínáme se Správcem souborů Plesk

  3. Začínáme s ls

  1. Začínáme s příkazem tac systému Linux

  2. Začínáme s PostgreSQL na Linuxu

  3. Jak na to:Začínáme s Ansible

  1. Začínáme s GnuCash

  2. Začínáme s Etcher.io

  3. Začínáme s regulárními výrazy