Možné

Jak používat modul Ansible Register

Jak používat modul Ansible Register
V aplikaci Ansible můžete na hostitelích Ansible spustit libovolný příkaz shellu, hostitele, které budete konfigurovat pomocí Ansible. Tyto příkazy prostředí mohou mít výstupy. Ve výchozím nastavení je výstup ignorován. Pokud chcete výstup uložit do proměnné a použít jej později, můžete použít Ansible Registrovat modul. Tento článek vám ukáže, jak používat Ansible Registrovat modul pro uložení výstupu příkazu do proměnné a přístup k němu později v playbooku Ansible.

Předpoklady

Chcete-li vyzkoušet příklady v tomto článku, musíte:

1) Nechte si v počítači nainstalovat Ansible.

2) Nechte hostitele Ubuntu nakonfigurovat pro automatizaci Ansible.

Existuje mnoho článků o LinuxHint věnovaných instalaci Ansible a konfiguraci hostitelů pro automatizaci Ansible. V případě potřeby si můžete tyto články prohlédnout.

Nastavení adresáře projektu

Než budete pokračovat, vytvořte nový adresář projektu Ansible, abyste měli pořádek v organizaci.

Chcete-li vytvořit adresář projektu registrační ukázka / a všechny požadované podadresáře (ve vašem aktuálním pracovním adresáři), spusťte následující příkaz:

$ mkdir -pv register-demo / příručky

Po vytvoření adresáře projektu přejděte do adresáře projektu následujícím způsobem:

$ cd register-demo /

Vytvořit hostitelé soubor inventáře takto:

$ nano hostitelé

Přidejte IP adresu hostitele nebo název DNS vašeho hostitele Ubuntu do souboru inventáře (jeden hostitel na řádek), jak je znázorněno na následujícím obrázku.

Zde jsem přidal svůj Ubuntu 20.04 hostitel LTS vm3.nodekite.com v ubuntu20 skupina.

Až budete hotovi, uložte soubor stisknutím + X, následován Y a .

Vytvořte konfigurační soubor Ansible zodpovědný.srov v adresáři projektu takto:

$ nanoodpovědný.srov

Dále zadejte následující řádky do pole zodpovědný.srov soubor:

[výchozí]
inventář = hostitelé
host_key_checking = False

Až budete hotovi, uložte zodpovědný.srov soubor stisknutím + X, následován Y a .

Nyní zkuste provést ping na hostitele Ubuntu, a to následujícím způsobem:

$ ansible ubuntu20 -u ansible -m ping

Jak vidíte, můj Ubuntu 20.04 hostitel vm3.nodekite.com je přístupný.

Příklad 1: Základy

V tomto příkladu vám ukážu některé základy Ansible Registrovat modul. Použiji Ansible k vygenerování náhodného hesla v mém Ubuntu 20.04 hostitel pomocí pwgen příkaz, uložte heslo do proměnné pomocí Registrovat modul a vytiskněte heslo na obrazovce.

Nejprve vytvořte nový scénář generate_pass.yaml v knihy o hře / adresář takto:

$ nano playbooks / generate_pass.yaml

Do řádku zadejte následující řádky generate_pass.yaml soubor:

- hostitelé: ubuntu20
uživatel: odpovědný
stát se: Pravda
úkoly:
- name: Ujistěte se, že je nainstalován pwgen
výstižný:
jméno: pwgen
stav: přítomen
update_cache: Pravda
- name: Generovat heslo
skořápka: pwgen -N 1 -s 30
zaregistrovat: mypass
- name: Vytiskne vygenerované heslo
ladit:
msg: "Heslo je mypass"

Po dokončení stiskněte + X, následován Y a , uložit generate_pass.yaml soubor.

Následující řádek říká Ansible spustit playbook generate_pass.yaml na každém hostiteli v ubuntu20 skupina. V mém případě bude hrací kniha spuštěna na hostiteli vm3.nodekite.com.

V této příručce definuji tři úkoly.

První úkol zajistí, že pwgen balíček je nainstalován.

Druhý úkol vygeneruje náhodné heslo o délce 30 znaků pomocí pwgen příkaz. Budu používat Registrovat modul pro uložení vygenerovaného hesla do mypass proměnná.

Třetí úkol vytiskne mypass proměnná pomocí Ansible ladit modul.

Spusťte příručku generate_pass.yaml pomocí následujícího příkazu:

$ ansible-playbook playbooks / generate_pass.yaml

Jak vidíte, hrací kniha proběhla úspěšně. Bylo také vygenerováno heslo.

Ale proč proměnná mypass vytisknout tolik položek?

Proměnná mypass je objekt, který obsahuje některé důležité vlastnosti.

Nejdůležitější vlastnosti každého z nich Registrovat proměnné jsou následující:

cmd - Příkaz, který byl spuštěn k vygenerování výstupu.

stdout - Výstup příkazu.

stderr - Chybový výstup příkazu.

Start - Datum a čas, kdy se příkaz začal vykonávat.

konec - Datum a čas, kdy byl příkaz dokončen.

delta - Čas potřebný ke spuštění příkazu. To je rozdíl mezi konec a Start vlastnosti.

stdout_lines - Pole obsahující každý výstupní řádek příkazu. Stejný jako stdout, ale stdout odděluje řádky pomocí znaků nového řádku (\ n) místo polí.

stderr_lines -  Pole obsahující každý chybový výstupní řádek příkazu. Stejný jako stderr, ale stderr odděluje řádky pomocí znaků nových řádků (\ n) namísto polí.

Pokud chcete pouze vytisknout / získat přístup k řetězci hesla (což je velmi pravděpodobné), můžete si vytisknout / přistupovat k stdout majetek mypass proměnná ve vaší příručce, jak je vyznačeno na snímku obrazovky níže.

$ nano playbooks / generate_pass.yaml

Až budete hotovi, spusťte příručku generate_pass.yaml znovu. Vytiskne se pouze řetězec hesla, jak vidíte na následujícím obrázku.

To pokrývá základy Ansible Registrovat modul.

Příklad 2: Uložení obsahu adresáře

V tomto příkladu vám ukážu, jak uložit obsah adresáře do proměnné pomocí Ansible Registrovat modulu a také jak je iterovat.

Nejprve vytvořte nový scénář get_dir_contents.yaml v knihy o hře / adresář.

$ nano playbooks / get_dir_contents.yaml

Dále zadejte následující řádky do pole get_dir_contents.yaml příručka:

- hostitelé: ubuntu20
uživatel: odpovědný
stát se: Pravda
úkoly:
- name: Seznam všech souborů a adresářů v / home / ansible
shell: ls / home / ansible
registr: dir_contents
- name: Vytiskne obsah adresáře pomocí smyček
ladit:
msg: "item"
smyčka: „dir_contents.stdout_lines "

Po dokončení stiskněte + X, následován Y a , uložit generate_pass.yaml soubor.

V této příručce definuji dva úkoly.

První úkol uvádí veškerý obsah souboru / home / ansible a uloží je do složky dir_contents proměnná.

Druhý úkol vytiskne dir_contents proměnná.

Spusťte get_dir_contents.yaml playbook, následovně.

$ ansible-playbook playbooks / get_dir_contents.yaml

Jak vidíte, stdout_lines vlastnost uložila obsah adresáře jako pole. The stdout Vlastnost je také uložena v obsahu adresáře. Tyto vlastnosti jsou odděleny znaky nového řádku (\ n). V tomto příkladu stdout_lines s nemovitostí se snadno pracuje.

Dále opakujte obsah adresáře pomocí smyčky.

Chcete-li to provést, otevřete get_dir_contents.yaml playbook a změňte druhý úkol, jak je vyznačeno na snímku obrazovky níže.

$ nano playbooks / get_dir_contents.yaml

Tady opakuji dir_contents.stdout_lines pole pomocí smyčky a tisk položek pole pomocí Ansible ladit modul. V tomto úkolu položka proměnná je proměnná smyčky používaná k iteraci nad prvky pole.

Spusťte get_dir_contents.yaml playbook, a to následovně:

$ ansible-playbook playbooks / get_dir_contents.yaml

Jak vidíte, obsah / home / ansible adresář jsou vytištěny na obrazovce.

Příklad 3: Zálohovat adresář

V tomto příkladu vám ukážu, jak zálohovat adresář pomocí Ansible Registrovat, soubor, a kopírovat moduly.

Nejprve vytvořte nový scénář backup_home_dir.yaml v knihy o hře / adresář takto:

$ nano playbooks / backup_home_dir.yaml

Dále zadejte následující řádky do pole backup_home_dir.yaml soubor.

- hostitelé: ubuntu20
uživatel: odpovědný
stát se: Pravda
úkoly:
- name: Získat domovský adresář / home / ansible obsah
shell: ls / home / ansible
registr: dir_contents
- name: Vytvořte nový adresář / tmp / ansible
soubor:
cesta: / tmp / ansible
stát: adresář
- name: Záložní domovský adresář / home / ansible to / tmp / ansible
kopírovat:
src: / home / ansible / item
cíl: / tmp / ansible /
remote_src: True
smyčka: „dir_contents.stdout_lines

Po dokončení stiskněte + X, následován Y a , uložit backup_home_dir.yaml soubor.

V této příručce definuji tři úkoly.

První úkol ukládá obsah souboru / home / ansible adresář (adresář, který budu zálohovat) v dir_contents proměnná pomocí Ansible Registrovat modul.

Druhý úkol vytvoří nový adresář / tmp / ansible pomocí Ansible soubor modul. Toto je adresář, kam bude uložena záloha.

Třetí úkol prochází skrz dir_contents.stdout_lines pole a používá Ansible kopírovat modul pro zkopírování každého adresáře do / tmp / ansible / adresář.

Spusťte backup_home_dir.yaml playbook, a to následovně:

$ ansible-playbook playbooks / backup_home_dir.yaml

Jak vidíte, na mém Ubuntu 20.04 hostitele LTS, záloha byla úspěšná.

Příklad 4: Spouštění nebo přeskakování úkolů

V tomto příkladu vám ukážu, jak spustit nebo přeskočit úkoly, v závislosti na proměnné, kterou jste zaregistrovali, pomocí Registrovat modul.

Nejprve vytvořte nový scénář register_conditions.yaml v knihy o hře / adresář takto:

$ nano playbooks / register_conditions.yaml

Dále zadejte následující řádky do pole register_conditions.yaml soubor.

- hostitelé: ubuntu20
uživatel: odpovědný
stát se: Pravda
úkoly:
- name: Seznam obsahu adresáře
shell: ls / home / ansible / test3
registr: dir_contents
- name: Zkontrolujte, zda je adresář prázdný
ladit:
msg: "Adresář je prázdný."
když: dir_contents.stdout == ""

Po dokončení stiskněte + X, následován Y a , uložit register_conditions.yaml soubor.

V této příručce jsem definoval dva úkoly.

První úkol ukládá obsah souboru / home / ansible / test3 adresář v dir_contents proměnná.

Druhý úkol zkontroluje, zda dir_contents.stdout je prázdný řetězec, nebo zda adresář / home / ansible / test3 je prázdný. Pokud je adresář prázdný, zobrazí se zpráva Adresář je prázdný vytiskne.

Spusťte register_conditions.yaml playbook, a to následovně:

$ ansible-playbook playbooks / register_conditions.yaml

Jak vidíte, hrací kniha proběhla úspěšně.

Od adresáře / home / ansible / test3 je prázdný, hrací kniha vytiskla zprávu Adresář je prázdný.

Dále vytvořte nový soubor v / home / ansible / test3 adresář.

$ touch test3 / myfile

Protože / home / ansible / test3 adresář již není prázdný, úkol Zkontrolujte, zda je adresář prázdný je přeskočeno, jak vidíte na obrázku níže.

$ ansible-playbook playbooks / register_conditions.yaml

Závěr

Možné Registrovat modul je velmi užitečný pro automatizaci serveru. Tento článek vám ukázal základy Registrovat modul, včetně příkladů použití Ansible Registrovat modul pro ukládání a zálohování adresářů a pro spouštění adresářových úloh.

Hry Top 5 karet pro zachycení hry
Top 5 karet pro zachycení hry
Všichni jsme viděli a milovali streamování her na YouTube. PewDiePie, Jakesepticye a Markiplier jsou jen někteří z nejlepších hráčů, kteří vydělali mi...
Hry Jak vyvíjet hru na Linuxu
Jak vyvíjet hru na Linuxu
Před deseti lety by jen málo uživatelů Linuxu předpovídalo, že jejich oblíbený operační systém bude jednoho dne populární herní platformou pro komerčn...
Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...