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
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
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é: ubuntu20už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
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é: ubuntu20už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
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.yamlJak 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.yamlJak 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é: ubuntu20už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
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é: ubuntu20už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
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.yamlJak 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.