Jak stworzyć gry i podręczniki - część 5
- 1638
- 514
- Ignacy Modzelewski
W tym Część 5 z serii Ansible, wyjaśnimy, jak tworzyć Ansible Plays I Podręczniki Korzystanie z modułów Ansible.
Ansible Wysyłki z samodzielnymi skryptami o nazwie moduły które są używane w podręczniki do wykonania wyspecjalizowanych zadań w zdalnych węzłach.
Moduły Przyda się do automatyzacji zadań, takich jak zarządzanie pakietami, archiwizacja i kopiowanie plików, aby wymienić tylko kilka. Umożliwiają wprowadzanie poprawek plików konfiguracyjnych i zarządzanie urządzeniami, takimi jak routery, przełączniki, wyważone na obciążenie, zapory ogniowe i mnóstwo innych urządzeń.
Celem tego subtopii jest przedstawienie przeglądu różnych zadań, które można wykonać Moduły ansible:
Zarządzanie pakietami w Linux
Zarządzanie pakietami jest jednym z najważniejszych i najczęstszych zadań przeprowadzanych przez administratorów systemów. Ansible wysyła moduły, które pomagają wykonywać zadania zarządzania pakietami Czerwony kapelusz I Debian systemy oparte na.
Są stosunkowo łatwe do odgadnięcia. Jest Moduł apt dla APT Pakiet Management for Debian, stary moduł menogi dla zarządzania pakietami mniam i Moduł DNF Powiązane z nowszymi dystrybucjami RHEL.
Poniżej znajduje się kilka przykładów, w jaki sposób można użyć modułów w podręcznik:
Przykład 1: Instalowanie serwera Apache Webser na RHEL 8
--- - Nazwa: Zainstaluj apache Webserver Hosts: Webservers Zadania: - Nazwa: Zainstaluj httpd DNF: Nazwa: HTTPD Stan: najnowszy
Przykład 2: Instalowanie serwera Apache w Debian 10
--- - Nazwa: Zainstaluj apache Webserver Hosty: Bazy danych Zadania: - Nazwa: Zainstaluj Apache Webserver Apt: Nazwa: Apache2 Stan: najnowszy
Moduł serwisowy
Moduł serwisowy umożliwia administratorom systemowym uruchamianie, zatrzymywanie, aktualizację, aktualizację i przeładowywanie usług w systemie.
Przykład 1: Uruchamianie Apache Webserver
--- - Nazwa: Uruchom usługę httpd, jeśli nie uruchomiono usługę: Nazwa: HTTPD Stan: Rozpoczęcie
Przykład 2: Zatrzymanie Apache Webserver
--- - Nazwa: Stop Service Httpd Service: Nazwa: Httpd Stan: Zatrzymany
Przykład 3: Ponowne uruchomienie interfejsu sieciowego ENP2S0
--- - Nazwa: Uruchom ponownie usługę sieciową dla interfejsu ETH0 Usługa: Nazwa: Stan sieciowy: Restartowane Args: ENP2S0
Kopiuj moduł
Jak sama nazwa wskazuje, skopiuj moduł kopiuje pliki z jednej lokalizacji na zdalnym komputerze do innej lokalizacji na tym samym komputerze.
Przykład 1: Kopiowanie plików z lokalnego do zdalnego Linux
--- - Nazwa: Kopiuj plik z właścicielem i uprawnienia Kopiuj: src:/etc/files/tecMint.conf dest: /srv /tecmint.Właściciel Conf: TecMint Grupa: Tryb Tecmint: „0644”
Podręcznik kopiuje plik konfiguracyjny Tecmint.conf z /etc/pliki/ katalog do /srv/ katalog as Tecmint użytkownik z 0644 uprawnienia.
Uprawnienia można również reprezentować przy użyciu reprezentacji symbolicznej, jak pokazano w ostatnim wierszu.
Przykład 2: Kopiowanie plików z lokalnego do zdalnego Linux
--- - Nazwa: Kopiuj plik z właścicielem i uprawnienia Kopiuj: src:/etc/files/tecMint.conf dest: /srv /tecmint.Właściciel Conf: Tecmint Group: Tecmint Tryb: u = rw, g = r, o = r
Uprawnienia w poprzednim przykładzie można przedstawić, jak pokazano w ostatnim wierszu, użytkownik jest przypisany Czytać I pisać uprawnienia, grupie przypisuje się uprawnienia do zapisu, a resztę świata przypisuje się uprawnienia odczytu.
Moduł pliku
moduł pliku Służy do prowadzenia wielu operacji plików, w tym tworzenia plików i katalogów, przypisywania uprawnień do plików i ustawiania symbolicznych.
Przykład 1: Wykonaj uprawnienia do plików Linux
--- - Nazwa: Zmień własność pliku, grupę i uprawnienia Plik: ścieżka: /etc /tecMint.Właściciel Conf: TecMint Grupa: Tryb Tecmint: „0644”
Powyższa gra tworzy plik o nazwie Tecmint.conf w /itp Ustawienie katalogu uprawnienia do 0644.
Przykład 2: Usuń plik Linux
--- - Nazwa: Usuń plik (usuń plik) plik: ścieżka: /etc /tecMint.Conf State: nieobecny
To usuwa lub usuwa plik Tecmint.conf.
Przykład 3: Utwórz katalog
--- - Nazwa: Utwórz katalog, jeśli nie istnieje plik: ścieżka: /etc /MyDirectory stan: Tryb katalogu: „0777”
To stworzy katalog w /itp Ustawienie katalogu uprawnienia do 0777.
Przykład 4: Rekrusicie usuń katalog
--- - Nazwa: rekurencyjnie usuwanie pliku katalogu: ścieżka: /etc /tecMint.Conf State: nieobecny
Powyższa sztuka rekurencyjnie usuwa katalog.
Moduł linii
lineinfile Moduł jest pomocny, gdy chcesz zmienić pojedynczy wiersz w pliku. Może zastąpić istniejącą linię.
Przykład 1: Manipuluje plikami w Linux
--- - Nazwa: Upewnij się, że Selinux jest ustawiony na tryb egzekwowania lineinFile: Path:/etc/selinux/config regexp: '^selinux =' line: selinux = niepełnosprawny
Gra powyżej zestawów Selinux wartość do wyłączony.
SELINUX = wyłączony
Przykład 2: Zmień pliki w Linux
--- - Nazwa: Dodaj wiersz do pliku, jeśli plik nie istnieje, bez przekazywania linii linii linii linii linii linii linii Regexp: /etc /hosts: 10.200.50.51 Tecmint.com Utwórz: Tak
To dodaje wpis 10.200.50.51 Tecmint.com do /etc/hosts plik.
Moduł archiwum
Jakiś Archiwum Moduł służy do tworzenia skompresowanego archiwum jednego lub wielu plików. Zakłada, że źródło kompresji jest obecne w docelowym miejscu docelowym. Po archiwum plik źródłowy można później usunąć lub usunąć za pomocą instrukcji usuń = true
.
Przykład 1: Utwórz plik archiwum
- Nazwa: Compress Directory/Path/to/TecMint_DIR/INT/PATH/TO/TECMINT.Archiwum TGZ: ścieżka:/ścieżka/do/tecmint_dir dest:/ścieżka/do/tecmint.TGZ To kompresuje katalog/ścieżka/do/tecmint_dir do/ścieżka/do/tecmint.TGZ
Przykład 2: Utwórz plik archiwum i usuń
- Nazwa: skompresuj zwykły plik/ścieżka/do/tecmint do/ścieżka/do/foo.GZ i usuń go archiwum: ścieżka:/ścieżka/do/tecmint dest:/ścieżka/do/tecmint.TGZ Usuń: Tak
W powyższej grze plik źródłowy /ścieżka/do/tecmint jest usuwany po zakończeniu archiwum.
Przykład 3: Utwórz plik archiwum
- Nazwa: Utwórz archiwum Bz2/ścieżka/do/tecmint Archiwum: Path:/Path/to/Tecmint Format: Bz2
To tworzy skompresowany plik w BZ2 format z /ścieżka/do/tecmint plik.
Moduł git
Moduł zarządza kasami GIT repozytoriów oprogramowania.
Przykład 1: Sprawdź repozytory git
- Git: Repo: 'https: // piłkarzyka.przykład.org/ścieżka/do/repo.Git 'dest: /srv /kaseta wersja: wydanie-0.22
Moduł dowodzenia
Jeden z najczęściej używanych modułów, Komenda Moduł przyjmuje nazwę polecenia, a następnie lista argumentów. Polecenie jest przekazane w taki sam sposób, w jaki wpisałbyś w skorupce Linux.
Przykład 1: Uruchom polecenie
- Nazwa: Wykonanie polecenia za pomocą polecenia modułu polecenia: Cat Helloworld.tekst
Przykład 2: Sprawdź czas aktualnego zdalnego Linux
--- - Nazwa: Sprawdź zdalne hosta hosta hosty: Servers Zadania: - Nazwa: Wykonaj polecenie Uptime Over Moduł Polecenia Rejestr: Polecenie uptimeoutput: „Uptime” - Debug: var: uptimeoutput.StDout_Lines
Moduł poleceń pobiera czas pracy zdalnych serwerów.
Zmienne w celu pobrania wyników uruchamiających poleceń
Zazwyczaj, Ansible Podręczniki służą do wykonywania zadań na zarządzanych hostach bez wyświetlania danych wyjściowych w wierszu poleceń. Istnieją jednak przypadki, aby być konieczne do przechwytywania danych wyjściowych lub wyników. W tej sekcji przeprowadzamy Cię przez sposób przechwytywania wyjścia podręcznika w zmiennej, a później wyświetlaj.
Rejestr ansible jest używany do przechwytywania wyjścia zadania i zapisywania go zmiennej. Zmienna będzie później zawierać stadout zadania.
Załóżmy na przykład, że chcesz sprawdzić użycie dysku zarządzanych w odpowiednich katalogach głównych za pomocą katalogów głównych df -th /
Komenda. Użyjesz 'Komenda'
moduł do zdefiniowania polecenia i 'rejestr'
Aby zapisać wyjście STD w zmiennej.
Aby wyświetlić polecenie, użyjesz 'odpluskwić'
moduł obok wartości zwracanej stdout.
--- - Hosty: Wszystkie stają się: Tak Zadania: - Nazwa: Wykonanie /rozruch na komenda hostów: „df -th /” rejestr: df - debugowanie: var = df.Stdout
Teraz uruchommy podręcznik. W tym przypadku wymieniliśmy nasz podręcznik check_disk_space.yml.
# ansible-playbook check_disk_space.ymlSprawdź użycie dysku dla węzłów zarządzanych Ansible
Jak widziałeś, wyjście jest pomieszane i utrudnia podążać.
Aby wyrównać wyjście i ułatwić odczytanie, wymień Stdout Wartość zwracana z StDout_Lines.
--- - Hosty: Wszystkie stają się: Tak Zadania: - Nazwa: Wykonanie /rozruch na komenda hostów: „df -th /” rejestr: df - debugowanie: var = df.StDout_Lines
Użyj warunków warunkowych, aby kontrolować wykonanie odtwarzania
Podobnie jak w językach programowania, Instrukcje warunkowe są używane, gdy możliwe jest więcej niż jeden wynik. Rzućmy okiem na niektóre z powszechnie używanych stwierdzeń warunkowych w Ansible Playbooks.
Kiedy stwierdzenie
Czasami możesz chcieć wykonywać zadania na określonych węzłach, a nie innych. 'Kiedy'
Instrukcja warunkowa jest dość łatwa w użyciu i wdrożenie w podręczniku. Podczas korzystania z 'Kiedy'
Klauzula po prostu zadeklaruje warunek przylegający do klauzuli, jak pokazano:
Kiedy: warunek
Gdy warunek jest spełniony, zadanie jest wykonywane w systemie zdalnym.
Sprawdźmy kilka przykładów:
Przykład 1: Korzystanie z operatora
--- - Hosty: Wszystkie zadania: - Nazwa: Instaluj Nginx na Debian Apt: name = nginx stan = obecny When: ansible_os_family == „Debian”
Gra powyżej instaluje Nginx WebServer na gospodarzach prowadzący rodzinę dystrybucji Debian.
Możesz także użyć LUB
I I
operator wraz z instrukcją warunkową.
Przykład 2: Używanie i operator z kiedy
--- - Hosty: Wszystkie zadania: - Nazwa: Instaluj nginx na debian apt: name = nginx state = obecny When: ansible_os_family == „debian” i ansible_distribution_version == „18” 18 18.04 ”
Podczas korzystania z I
Operator, oba stwierdzenia muszą być spełnione, aby zadanie zostało wykonane.
Powyższa gra instaluje Nginx na węzłach z rodziną OS Debian, która jest wersją 18.04. Oczywiście będzie to Ubuntu 18.04.
Przykład 3: Używanie lub operator z kiedy
Z LUB
operator, zadanie jest wykonywane, jeśli którykolwiek z warunków jest wypełniony.
--- - Hosty: Wszystkie zadania: - Nazwa: Instaluj nginx na debian apt: name = nginx state = obecny When: ansible_os_family == „debian” lub ansible_os_family == „suse”
Powyższa gra instaluje Webservers Nginx na rodzinie OS Debian lub Suse.
NOTATKA: Zawsze upewnij się, że użyj znaku podwójnej równości ==
Podczas testowania stanu.
Warunkami w pętlach
Warunki można również stosować w pętli. Powiedzmy na przykład, że masz listę wielu pakietów, które należy zainstalować w zdalnych węzłach.
W poniższym podręcznikach mamy tablicę o nazwie pakiety zawierający listę pakietów, które należy zainstalować. Zadania te zostaną wykonane jeden po drugim, jeśli wymagany klauzula jest ustawiona na PRAWDA.
--- - Nazwa: Zainstaluj pakiety oprogramowania hosty: Wszystkie vars: Pakiety: • Nazwa: Nginx Wymagane: True • Nazwa: MySQL Wymagane: True • Nazwa: Apache Wymagane: fałszywe zadania: • Nazwa: Instaluj „Item.nazwa ”na Debian Apt: Nazwa:„ item.Nazwa ”stan: obecny, kiedy: item.wymagane == True Loop: „pakiety”
Skonfiguruj obsługę błędów
Czasami zadania zawodzą podczas uruchamiania podręczników. Załóżmy, że wykonujesz 5 zadań na 3 serwerach, jak pokazano w poniższym podręczniku. Jeśli wystąpi błąd w zadaniu 3 (uruchamianie MySQL) na serwerze 2, Ansible przestanie wykonywać pozostałe zadania na serwerze 2 i spróbuje wykonać pozostałe zadania na reszcie serwerów.
--- - Nazwa: Zainstaluj pakiety oprogramowania hosty: serwer1, serwer2, serwer3 Zadania: - Nazwa: instaluj zależności <> - Nazwa: Zainstaluj bazę danych MySQL < > - Nazwa: Start MySQL < > - Nazwa: Zainstaluj Nginx < > - Nazwa: start nginx < >
Jeśli chcesz spójność w wykonywaniu podręcznika, na przykład zatrzymaj wykonanie podręcznika, powinien być jeden z serwerów, dodaj opcję.
--- - Nazwa: Zainstaluj pakiety oprogramowania hosty: serwer1, serwer2, serwer33 Any_errors_fatal: true Zadania:
W ten sposób, jeśli jedno zadanie się nie powiedzie na jednym serwerze, Ansible powstrzyma wykonywanie całego podręcznika na wszystkich serwerach i wyjście.
Jeśli chcesz, aby poradnik zignorował błędy i kontynuować realizację pozostałego zestawu zadań, użyj ignore_errors: prawdziwa opcja.
--- - Nazwa: Zainstaluj pakiety oprogramowania hosty: serwer1, serwer2, serwer3 Zadania: - Nazwa: instaluj zależności <> ignore_errors: true
Utwórz podręczniki, aby konfigurować systemy na określony stan
W tej sekcji przyglądamy się dodatkowym opcjom, które są dostępne podczas uruchamiania podręcznika.
Zacznijmy od Sprawdzać tryb lub Próba opcja. Podczas uruchamiania podręcznika jest używana opcja suchego lub sprawdzania. Nie wprowadza jednak żadnych zmian w zdalnych węzłach.
Na przykład, aby wyschnąć uruchom podręcznik o nazwie httpd.yml
który instaluje i uruchamia Apache Webserver:
# ansible-playbook httpd.yml -sprawdźDry Run A Ansible Playbook
Inną opcją, na którą musimy spojrzeć --Rozpocznij przy pracy
opcja. Jest to używane podczas określenia nazwy zadania, w którym podręcznik powinien rozpocząć lub rozpocząć.
Weźmy przykład: Poniższy podręcznik określa 2 zadania: Pierwsza gra instaluje serwer WWW Apache, a druga instaluje narzędzie HTOP.
--- - Nazwa: Zainstaluj hosty HTTPD: Wszystkie zadania: Yum: Nazwa: HTTPD Stan: zainstalowany - Nazwa: Zainstaluj HTOP Yum: Nazwa: HTOP Stan: Rozpoczęcie
Jeśli chcesz pominąć instalację Apache Webserver i zamiast tego zainstaluj narzędzie HTOP uruchom:
# Ansible-Playbook Playbook.yml --Start-at-At-Pasek „Zainstaluj hTOP”Zainstaluj pakiety za pomocą Playbooka Ansible
Na koniec możesz oznaczyć swoje zadania lub odtwarzanie, dodając tagi opcja do swojego podręcznika, jak pokazano. Przydaje się to, gdy masz dość duży podręcznik i chcesz wykonać określone zadania z całego podręcznika.
--- - Nazwa: Zainstaluj httpd Tagi: Zainstaluj i rozpocznij Hosty: Wszystkie zadania: Yum: Nazwa: HTTPD Stan: zainstalowany Tagi: Zainstaluj • Service: Nazwa: HTTPD Stan: Rozpoczęcie
# Ansible-Playbook Playbook.YML -TAGS „Instaluj”
Aby pominąć znaczniki, użyj --Skip-Tags
Opcje, jak pokazano.
# Ansible-Playbook Playbook.yml--skip-tags „instaluj”
Wniosek
W tym temacie przeprowadziliśmy Cię przez powszechnie używane moduły w Ansible, Jak odzyskać stdout z wykonania podręcznika do analizy, używając warunków w podręczniku i jak zarządzać błędami, które mogą wystąpić podczas wykonywania zadań. Na koniec podsumowaliśmy konfigurację podręczników i sposób, w jaki możesz użyć dodatkowych opcji, aby zdecydować, które zadania należy uruchomić, jeśli nie zamierzasz uruchomić całego podręcznika.