Jak korzystać z modułu rejestru Ansible

Jak korzystać z modułu rejestru Ansible
W Ansible możesz uruchomić dowolne polecenie powłoki na hostach ansible, hosty, które będziesz konfigurować z Ansible. Te polecenia powłoki mogą mieć wyjścia. Domyślnie wyjście jest ignorowane. Jeśli chcesz przechowywać wyjście w zmiennej i użyć go później, możesz użyć ansible rejestr moduł. W tym artykule pokaże, jak korzystać z Ansible rejestr Moduł do przechowywania wyjścia polecenia w zmiennej i dostępu do niego w późniejszym podręczniku Ansible.

Wymagania wstępne

Jeśli chcesz wypróbować przykłady w tym artykule, musisz:

1) mieć instalację ansible na komputerze.

2) mieć skonfigurowany host Ubuntu do automatyzacji Ansible.

Istnieje wiele artykułów na temat Linuxhint poświęconych instalacji ansible i konfiguracji hostów do automatyzacji ansible. W razie potrzeby możesz sprawdzić te artykuły.

Konfigurowanie katalogu projektów

Przed przejściem dalej, skonfiguruj nowy katalog projektu Ansible, po prostu po to, aby wszystko nie było zorganizowane.

Aby utworzyć katalog projektu Rejestr-Demo/ i wszystkie wymagane podkatalog (w bieżącym katalogu roboczym) uruchom następujące polecenie:

$ mkdir -pv rejestr -demo/podręczniki

Po utworzeniu katalogu projektu przejdź do katalogu projektu, w następujący sposób:

$ CD Register-Demo/

Stwórz zastępy niebieskie Plik zapasowy, w następujący sposób:

$ nano gospodarze

Dodaj nazwę IP lub DNS hosta hosta Ubuntu w pliku ekwipunku (jeden host na wiersz), jak pokazano na zrzucie ekranu poniżej.

Tutaj dodałem mój Ubuntu 20.04 LTS Host VM3.Nodekite.com w Ubuntu20 Grupa.

Po zakończeniu zapisz plik, naciskając + X, śledzony przez Y I .

Utwórz plik konfiguracyjny Ansible Ansible.CFG W katalogu projektu, w następujący sposób:

$ nano ansible.CFG

Następnie wpisz następujące wiersze w Ansible.CFG plik:

[domyślne]
Inwentaryzacja = hosty
host_key_checking = false

Po zakończeniu zapisz Ansible.CFG plik naciskając + X, śledzony przez Y I .

Teraz spróbuj pingować swojego gospodarza Ubuntu, w następujący sposób:

$ ansible ubuntu20 -U ansible -m ping

Jak widać, mój Ubuntu 20.04 Host VM3.Nodekite.com jest dostępny.

Przykład 1: Podstawy

W tym przykładzie pokażę ci niektóre podstawy Ansible rejestr moduł. Użyję Ansible, aby wygenerować losowe hasło w moim Ubuntu 20.04 Host za pomocą Pwgen polecenie, przechowuj hasło w zmiennej za pomocą rejestr moduł i wydrukuj hasło na ekranie.

Najpierw stwórz nowy podręcznik generate_pass.Yaml w podręczniki/ katalog, jak następuje:

$ Nano Playbooks/Generate_Pass.Yaml

Wpisz następujące wiersze w generate_pass.Yaml plik:

- Gospodarze: Ubuntu20
Użytkownik: Ansible
staje się prawdą
Zadania:
- Nazwa: Upewnij się, że PWGEN jest zainstalowany
trafny:
Nazwa: PWGEN
Stan: obecny
aktualizacja_cache: true
- Nazwa: Generuj hasło
Shell: PWGEN -N 1 -S 30
Zarejestruj się: MyPass
- Nazwa: Wydrukuj wygenerowane hasło
odpluskwić:
MSG: „Hasło to MyPass”

Po zakończeniu naciśnij + X, śledzony przez Y I , Aby uratować generate_pass.Yaml plik.

Poniższy wiersz mówi Ansible, aby uruchomił podręcznik generate_pass.Yaml na każdym gospodarze w Ubuntu20 Grupa. W moim przypadku podręcznik zostanie uruchomiony na gospodarza VM3.Nodekite.com.

W tym podręczniku zdefiniuję trzy zadania.

Pierwsze zadanie zapewni, że Pwgen Pakiet jest zainstalowany.

Drugie zadanie wygeneruje losowe, 30-znakowe hasło za pomocą Pwgen Komenda. Użyję rejestr moduł do przechowywania wygenerowanego hasła w myPass zmienny.

Trzecie zadanie wydrukuje myPass zmienna za pomocą ansible odpluskwić moduł.

Uruchom podręcznik generate_pass.Yaml Korzystanie z następującego polecenia:

$ Ansible-Playbook Playbooks/Generate_Pass.Yaml

Jak widać, podręcznik działał pomyślnie. Wygenerowano również hasło.

Ale dlaczego zmienna myPass Wydrukuj tak wiele przedmiotów?

Cóż, zmienna myPass jest obiektem, który zawiera niektóre ważne właściwości.

Najważniejsze właściwości każdego z rejestr Zmienne są następujące:

CMD - Polecenie, które pobiegło w celu wygenerowania danych wyjściowych.

Stdout - Wyjście polecenia.

Stderr - Wyjście błędu polecenia.

początek - Data i godzina, kiedy polecenie zaczęło wykonywać.

koniec - Data i godzina, kiedy polecenie zakończyło się wykonywanie.

delta - Czas potrzebny na uruchomienie polecenia. To jest różnica między koniec i początek nieruchomości.

StDout_Lines - Tablica zawierająca każdy wiersz wyjściowy polecenia. Taki sam jak Stdout, Ale Stdout oddziela linie za pomocą znaków nowej (\ n) zamiast tablic.

Stderr_Lines - Tablica zawierająca każdy wiersz wyjściowy błędu polecenia. Taki sam jak Stderr, Ale Stderr oddziela linie za pomocą znaków Newlines (\ n) zamiast tablic.

Jeśli chcesz wydrukować/uzyskać dostęp do ciągu hasła (co jest bardzo prawdopodobne), możesz wydrukować/uzyskać dostęp do Stdout własność myPass zmienna w swoim podręczniku, jak zaznaczono na zrzucie ekranu poniżej.

$ Nano Playbooks/Generate_Pass.Yaml

Po zakończeniu uruchom podręcznika generate_pass.Yaml Ponownie. Tylko ciąg haseł zostanie wydrukowany, jak widać na zrzucie ekranu poniżej.

Który obejmuje podstawy Ansible rejestr moduł.

Przykład 2: Treść katalogu sklepu

W tym przykładzie pokażę, jak przechowywać zawartość katalogu w zmiennej za pomocą ansible rejestr moduł, a także jak iterować.

Najpierw stwórz nowy podręcznik get_dir_contents.Yaml w podręczniki/ informator.

$ nano boiska/get_dir_contents.Yaml

Następnie wpisz następujące wiersze w get_dir_contents.Yaml Playbook:

- Gospodarze: Ubuntu20
Użytkownik: Ansible
staje się prawdą
Zadania:
- Nazwa: Wymień wszystkie pliki i katalogi w /home /ansible
Shell: LS /Home /Ansible
Zarejestruj się: dir_contents
- Nazwa: Drukuj zawartość katalogu za pomocą pętli
odpluskwić:
MSG: "item"
pętla: "dir_contents.stdout_lines "

Po zakończeniu naciśnij + X, śledzony przez Y I , Aby uratować generate_pass.Yaml plik.

W tym podręczniku zdefiniuję dwa zadania.

Pierwsze zadanie zawiera wszystkie zawartość /dom/ansible katalog i przechowuje je w dir_contents zmienny.

Drugie zadanie drukuje dir_contents zmienny.

Uruchom get_dir_contents.Yaml podręcznik, w następujący sposób.

$ Ansible-Playbook Playbooks/get_dir_contents.Yaml

Jak widać, StDout_Lines Własność przechowywana przez zawartość katalogu jako tablicę. Stdout Własność jest również przechowywana w zawartości katalogu. Te właściwości są oddzielone znakami Newline (\ n). W tym przykładzie StDout_Lines nieruchomość jest łatwa w obsłudze.

Następnie iteruj zawartość katalogu za pomocą pętli.

Aby to zrobić, otwórz get_dir_contents.Yaml podręcznik i zmień drugie zadanie, jak zaznaczono na zrzucie ekranu poniżej.

$ nano boiska/get_dir_contents.Yaml

Tutaj iteruję nad dir_contents.StDout_Lines tablica za pomocą pętli i drukowania elementów tablicy za pomocą ansible odpluskwić moduł. W tym zadaniu przedmiot Zmienna to zmienna pętli używana do iteracji elementów tablicy.

Uruchom get_dir_contents.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/get_dir_contents.Yaml

Jak widać, zawartość /dom/ansible katalog jest wydrukowany na ekranie.

Przykład 3: kopie zapasowe katalogu

W tym przykładzie pokażę, jak wykonać kopię zapasową katalogu za pomocą ansible rejestr, plik, I Kopiuj moduły.

Najpierw stwórz nowy podręcznik backup_home_dir.Yaml w podręczniki/ katalog, jak następuje:

$ Nano Playbooks/Backup_home_dir.Yaml

Następnie wpisz następujące wiersze w backup_home_dir.Yaml plik.

- Gospodarze: Ubuntu20
Użytkownik: Ansible
staje się prawdą
Zadania:
- Nazwa: Pobierz do domu katalog /home /ansible treści
Shell: LS /Home /Ansible
Zarejestruj się: dir_contents
- Nazwa: Utwórz nowy katalog /tmp /ansible
plik:
ścieżka: /tmp /ansible
Stan: Directory
- Nazwa: kopia zapasowa katalogu domowego /dom /ansible do /tmp /ansible
Kopiuj:
src:/home/ansible/item
dest:/tmp/ansible/
Remote_src: True
pętla: "dir_contents.stdout_lines

Po zakończeniu naciśnij + X, śledzony przez Y I , Aby uratować backup_home_dir.Yaml plik.

W tym podręczniku zdefiniuję trzy zadania.

Pierwsze zadanie przechowuje zawartość /dom/ansible katalog (katalog, który będę tworzył kopię zapasową) w dir_contents zmienna za pomocą ansible rejestr moduł.

Drugie zadanie tworzy nowy katalog /tmp/ansible Korzystanie z Ansible plik moduł. To jest katalog, w którym zapasowy będzie przechowywany.

Trzeci zadanie pętli przez dir_contents.StDout_Lines tablica i używa ansible Kopiuj moduł do skopiowania każdego katalogu do /tmp/ansible/ informator.

Uruchom backup_home_dir.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/Backup_home_dir.Yaml

Jak widać, na moim Ubuntu 20.04 LTS Host, kopia zapasowa zakończyła się powodzeniem.

Przykład 4: Uruchom lub pomiń zadania

W tym przykładzie pokażę, jak uruchomić lub pomijać zadania, w zależności od zarejestrowanej zmiennej, używając rejestr moduł.

Najpierw stwórz nowy podręcznik Register_conditions.Yaml w podręczniki/ katalog w następujący sposób:

$ Nano Playbooks/Register_Conditions.Yaml

Następnie wpisz następujące wiersze w Register_conditions.Yaml plik.

- Gospodarze: Ubuntu20
Użytkownik: Ansible
staje się prawdą
Zadania:
- Nazwa: List Directory Treść
Shell: LS/Home/Ansible/Test3
Zarejestruj się: dir_contents
- Nazwa: Sprawdź, czy katalog jest pusty
odpluskwić:
MSG: „Katalog jest pusty."
Kiedy: dir_contents.stdout == ""

Po zakończeniu naciśnij + X, śledzony przez Y I , Aby uratować Register_conditions.Yaml plik.

W tym podręczniku zdefiniowałem dwa zadania.

Pierwsze zadanie przechowuje zawartość /dom/ansible/test3 katalog w dir_contents zmienny.

Drugie zadanie sprawdza, czy dir_contents.Stdout jest pustym ciągiem, czy też katalog /dom/ansible/test3 jest pusty. Jeśli katalog jest pusty, wiadomość Katalog jest pusty wydrukuje.

Uruchom Register_conditions.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/Register_Conditions.Yaml

Jak widać, podręcznik działał pomyślnie.

Od katalogu /dom/ansible/test3 jest pusty, podręcznik wydrukował wiadomość Katalog jest pusty.

Następnie utwórz nowy plik w /dom/ansible/test3 informator.

$ Touch Test3/myfile

Od /dom/ansible/test3 Katalog nie jest już pusty, zadanie Sprawdź, czy katalog jest pusty jest pomijany, jak widać na zrzucie ekranu poniżej.

$ Ansible-Playbook Playbooks/Register_Conditions.Yaml

Wniosek

Ansible rejestr Moduł jest bardzo przydatny do automatyzacji serwera. Ten artykuł pokazał podstawy rejestr moduł, w tym przykłady korzystania z ansible rejestr moduł do przechowywania i kopii zapasowej katalogu oraz do działających zadań katalogu.