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]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.YamlWpisz następujące wiersze w generate_pass.Yaml plik:
- Gospodarze: Ubuntu20Po 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.YamlJak 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.YamlPo 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.YamlNastępnie wpisz następujące wiersze w get_dir_contents.Yaml Playbook:
- Gospodarze: Ubuntu20Po 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.YamlJak 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.YamlTutaj 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.YamlJak 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.YamlNastępnie wpisz następujące wiersze w backup_home_dir.Yaml plik.
- Gospodarze: Ubuntu20Po 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.YamlJak 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.YamlNastępnie wpisz następujące wiersze w Register_conditions.Yaml plik.
- Gospodarze: Ubuntu20Po 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.YamlJak 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.YamlWniosek
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.