Samouczek ansible dla początkujących w Linux

Samouczek ansible dla początkujących w Linux

Administrator systemu, w zdecydowanej większości przypadków, musi zadbać o więcej niż jeden serwer, więc często musi wykonywać powtarzające się zadania na wszystkich z nich. W takich przypadkach automatyzacja jest koniecznością. Ansible to oprogramowanie open source należące do Red Hat; Jest napisany w programie programowym Python i jest to oprogramowanie do zarządzania udostępnianiem i konfiguracją, które pomaga nam we wspomnianych przypadkach. W tym samouczku zobaczymy, jak go zainstalować i podstawowe koncepcje jego użycia.

W tym samouczku się nauczysz:

  • Jak zainstalować ansible w najczęściej używanych rozkładach Linux
  • Jak skonfigurować Ansible
  • Co to jest zapasy ansible
  • Jakie są moduły ansible
  • Jak uruchomić moduł z wiersza poleceń
  • Jak tworzyć i uruchomić podręcznik

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny dystrybucja
Oprogramowanie Ansible, Python
Inny Nic
Konwencje # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-wymaga wykonania Linux-commands jako zwykłego niewidzianego użytkownika

Instalowanie Ansible

Pakiet Ansible znajduje się w oficjalnych repozytoriach najczęściej używanych dystrybucji Linuksa, dzięki czemu można go łatwo zainstalować za pomocą natywnych menedżerów pakietów. Aby zainstalować go w Debian, możemy uruchomić:

$ sudo apt-get aktualizacja && apt-get instaluj ansible 

Aby zainstalować Ansible na Fedorze, zamiast tego:

$ sudo dnf instaluj ansible 

Ansible znajduje się w repozytorium „społeczności” Archlinux; Możemy go zainstalować za pomocą Pacman:

$ sudo pacman -sy ansible 

Jeśli chcemy zainstalować ansible na centro8, musimy dodać Epel-Release Źródło oprogramowania do naszego systemu, ponieważ pakiet nie jest dostępny w domyślnych repozytoriach. Aby to zrobić, uruchamiamy następujące polecenie:

$ sudo dnf instaluj https: // dl.Fedoraproject.ORG/PUB/EPEL/EPEL-Relase-Latest-8.Noarch.RPM 

Następnie możemy po prostu uruchomić:

$ sudo dnf instaluj ansible 

W przypadku innych instrukcji instalacji specyficznych dla dystrybucji możemy zapoznać się z dedykowaną stroną
Oficjalnej dokumentacji Ansible.



Przedstawiamy Ansible

Podstawową konkretnością Ansible jest to, że jest to bez agentów system rezerwowy. Oznacza to, że nie musimy instalować żadnego demona agenta lub oprogramowania na serwerach, które chcemy kontrolować. Potrzebujemy tylko zainstalowania i skonfigurowania ansible na tzw maszyna sterująca. zadania Konfigurujemy, będzie wykonywane w zdecydowanej większości przypadków, poprzez proste ssh połączenie.

Plik konfiguracyjny ansible

Ansible można skonfigurować poprzez określenie parametrów i ich wartości w jednym lub większej liczbie plików konfiguracyjnych. Aplikacja, w kolejności priorytetu, szuka następujących plików:

  1. Plik określony za pośrednictwem zmiennej ansible_config
  2. Ansible.CFG Plik w bieżącym katalogu roboczym
  3. .Ansible.CFG Plik w katalogu użytkownika
  4. /etc/ansible/ansible.CFG plik

/etc/ansible/ansible.CFG jest ostatnim, więc jest używany jako awarie i domyślnie. Z oczywistych powodów nie jest to odpowiednie miejsce do opisania wszystkich możliwych parametrów, które można określić w pliku konfiguracyjnym, jednak oto fragment zawartości pliku:

[Domyślne] #Niektóre podstawowe wartości domyślne… #inventory =/etc/ansible/hosts #Library =/usr/share/my_modules/#module_utils =/usr/share/my_module_utils/#Remote_tmp = ~//.ansible/tmp #local_tmp = ~/.ansible/tmp #plugin_filters_cfg =/etc/ansible/plugin_filters.yml #forks = 5 #poll_interval = 15 #sudo_user = root #ask_sudo_pass = true #ask_pass = true #transport = Smart #remote_port = 22 #Module_Lang = c #Module_Set_Locale = false # 

Te w przykładzie są komentowane parametry zdefiniowane za pomocą ich wartości domyślnych. Wśród nich możesz zobaczyć spis parametry, które mają /etc/ansible/hosts wartość. Zobaczymy, co to jest w następnej sekcji.

Plik „hosty” lub „inwentaryzacja”

Plik „hostów” Ansible, w zasadzie ustawiamy adres IP lub nazwy hostów maszyn, które chcemy kontrolować z Ansible (jest to „zapas” w żargonie Ansible). Na standardowej instalacji plik znajduje się w /etc/ansible informator. W pliku inwentaryzacji hosty mogą być zgrupowane Lub Ungrouped. Na przykład możemy określić hosta, na przykład:

serwer 1 

Kiedy jednak chcemy wykonywać operacje na więcej niż jednego hosta, bardzo przydatne jest umieszczenie hostów w grupach, na przykład stworzenie ich „roli” jako kryteriów. Przypuśćmy, że hosty, z którymi mamy do czynienia, są używane jako serwery internetowe, moglibyśmy napisać:

[WebServers] Server1 Server2 

Moduły ansible

Moduły Ansible to zasadniczo małe programy używane do wykonywania potrzebnych zadań; Każdy z nich ma na celu wykonanie jednej podstawowej operacji, aby zapewnić szczegółowość. Można je wykonać z wiersza poleceń lub wewnątrz podręczniki. Pełną listę wszystkich modułów można znaleźć na dedykowanej stronie oficjalnej dokumentacji. Ponownie, tutaj nie możemy zbadać wszystkich modułów, ale oto kilka przykładów.

Moduły APT, DNF i Yum są używane do zarządzania pakietami z menedżerami plików
z. Moduł Seboolean służy do zarządzania statusem Selinux Booleans, moduł użytkownika służy do zarządzania kontami użytkowników itp.



Za pomocą modułów z wiersza poleceń

Jak powiedzieliśmy w poprzedniej sekcji, moduły mogą być używane z wiersza poleceń lub z podręczników. Skoncentrujemy się na tym drugim w następnej sekcji; Tutaj pokażemy, jak użyć modułu z wiersza poleceń, z Ansible Komenda. W tym przykładzie użyjemy świst moduł. Ten moduł nie ma nic wspólnego z poleceniem ping, ale służy do sprawdzenia, czy możemy zalogować się na zdalnych serwerach i że zainstalowany jest interpreter Python. Moduł zwraca wartość „ponga” na sukcesie:

$ ansible WebServers -m ping - -cask -patas 

Wywołaliśmy polecenie ansible określające, że chcemy uruchomić zadanie na członkach hostów grupy „WebServers” i z -M Opcja, którą przekazaliśmy nazwę modułu, którego chcemy użyć. Użyliśmy również --Ask-Pass Opcja, dlaczego? Chociaż wcześniej dodałem odcisk palca zdalnych serwerów do pliku SSH SSH „Znane hosty”, nie skonfigurowałem SSH Acces. --Ask-Pass opcja tworzy, aby hasło pytano interaktywnie. Oto dane wyjściowe polecenia
powyżej:

SSH Hasło: serwer2 | Success => „ansible_facts”: „odkryte_interpreter_python”: „/usr/bin/python”, „zmieniono”: false, „ping”: „pong” serwer1 | Success => „ansible_facts”: "odkryte_interpreter_python": "/usr/bin/python", „zmieniono”: false, „ping”: „Pong” 

Ansible Playbooks

Co to jest podręcznik? Ansible Playbooks to nie inna niż pliki YAML, w których określamy zadania, które chcemy wykonać za pomocą ansible, a hosty, na których powinni być wykonywane. Zobaczmy przykład podręcznika. W poniższym pliku konfigurujemy zadanie, aby upewnić się, że edytor VIM jest zainstalowany i przy najnowszej dostępnej wersji:

--- - Nazwa: Aktualizacja WebServers Hosts: WebServers Reeote_user: EGDOC stać się: Tak Zadania: - Nazwa: Upewnij się, że vim jest zainstalowany, a przy najnowszej wersji DNF: Nazwa: VIM Stan: najnowszy… 

Przeanalizujmy powyższe. --- I Możemy zobaczyć odpowiednio na początku i na końcu pliku, są częścią standardowej składni YAML: są one opcjonalny i zaznacz początek i koniec pliku. Instrukcje i ich wartości są reprezentowane w formacie słownika, jak kluczowa wartość pary.

Podręcznik może zawierać wiele tak zwanych gra; W tym przypadku właśnie zdefiniowaliśmy jeden. Rzeczywiście pierwszą rzeczą, jaką zrobiliśmy, było określenie tego nazwa, który w tym przykładzie to „aktualizacja serwisów internetowych”. Drugim kluczem, którego użyliśmy zastępy niebieskie: Dzięki temu możemy zdefiniować grupę hosta, na których zadania powinny być wykonywane. W takim przypadku określaliśmy Webservers jako wartość, która rozumie maszyny, które zdefiniowaliśmy w poprzednich przykładach (Server1 i Server2).

Następnym kluczem, którego użyliśmy, był remote_user. Dzięki temu możemy określić, co to jest użytkownik, powinniśmy się zalogować jako za pośrednictwem SSH, w zdalnych serwerach. Następnie użyliśmy stać się klucz. Ten klucz akceptuje wartość logiczną, a wraz z nią określamy, czy
Eskalacja przywileju powinien być używany do wykonywania zadań, czy nie. W takim przypadku, ponieważ logujemy się w zdalnych maszynach za pomocą użytkownika „EGDOC” i potrzebujemy uprawnień root, aby zainstalować pakiet, ustawiamy go na Tak. Należy zauważyć
ta eskalacja przywilejów jest skonfigurowana w /etc/ansible/ansible.CFG plik konfiguracyjny w sekcji dedykowanej. W takim przypadku wartości domyślne są następujące:

[uprzywilejowanie_escalacja] #stać się = true #boks_method = sudo #stać się_user = root #stać się_ask_pass = false 


Po zdefiniowaniu grać Informacje, zaczęliśmy określać naszą listę zadań. Aby to zrobić, użyliśmy zadania Słowo kluczowe. Każde zadanie ma nazwa który jest używany do dokumentacji i obsługi zadań.

Z DNF: Określiliśmy, że chcemy użyć modułu „DNF”, który, jak widzieliśmy wcześniej, służy do zarządzania pakietami za pomocą domyślnego menedżera pakietów w rodzinie dystrybucji Red Hat. Wewnątrz tej sekcji, z nazwa Słowo kluczowe
Określiliśmy nazwę pakietów. W tym przykładzie jesteśmy zainteresowani tylko jednym pakietem, ale wiele pakietów można określić za pomocą listy. Na przykład:

DNF: Nazwa: [vim, nano] 

Z państwo Słowo kluczowe DNF Moduł zasadniczo określamy, co chcemy zrobić z określonymi pakietami. W tym przypadku użyliśmy najnowszy Jako wartość: dzięki niej upewniamy się, że pakiet jest zainstalowany i w najnowszej dostępnej wersji w dystrybucji używanej na zdalnym komputerze. Inne możliwe wartości, których możemy użyć usunąć Lub nieobecny, co powoduje odinstalowanie pakietów, lub obecny które po prostu zapewniają zainstalowany pakiet. Polecam sprawdzenie oficjalnej dokumentacji modułu dla pełnej listy kluczy i wartości, które można użyć z modułem.

Proszę bardzo, właśnie zdefiniowaliśmy nasz pierwszy podręcznik. Jak możemy to uruchomić?

Uruchomienie podręcznika

Aby uruchomić podręcznik, używamy dedykowanego Ansible-Playbook Komenda. Polecenie przyjmuje serię opcji i bierze jeden lub więcej plików podręcznika jako argumenty. Aby uruchomić podręcznik, który zdefiniowaliśmy w poprzedniej sekcji, na przykład uruchomimy następujące polecenie:

$ Ansible-Playbook --ask-Pass --- Ask-become-Pass/Path/to/Playbook.yml 

Możesz zauważyć, że w tym przypadku wywołaliśmy polecenie za pomocą --Ask-Become-Pass opcje. Ta opcja jest potrzebna, ponieważ w pliku podręcznika przypisaliśmy Tak wartość do stać się Klucz, ponieważ potrzebujemy eskalacji uprawnień w celu zainstalowania pakietów na zdalnych maszynach. --Ask-Become-Pass opcja tworzy, aby sudo Hasło jest pytane, kiedy uruchamiamy podręcznik. W takim przypadku, ponieważ użyliśmy również --Ask-Pass, Hasło SSH będzie używane jako domyślne hasło do eskalacji uprawnień. Oto dane wyjściowe, które otrzymujemy, gdy uruchamiamy podręcznik:

SSH Hasło: Zostań hasłem [domyślnie do hasła SSH]: odtwarzaj [aktualizacja WebServers] ********************************* ***************************************************** ***************************************************** ****** Zadanie [gromadzenie faktów] *************************************** ***************************************************** ***************************************************** ** OK: [Server1] OK: [Server2] Zadanie [upewnij się, że vim jest zainstalowany w najnowszej wersji] ************************* ***************************************************** ********************************** ***************************************************** ***************************************************** ************************************************* serwer 1 : OK = 2 Zmieniono = 1 nieosiągalny = 0 nieudany = 0 pomijany = 0 uratowany = 0 ignorowany = 0 serwer2:OK = 2 Zmieniony = 1 nieosiągalny = 0 nieudany = 0 pomijany = 0 uratowany = 0 ignorowany = 0 

Najpierw jesteśmy proszeni o podanie hasła „SSH”, a następnie „stać się”. Jak już powiedzieliśmy, hasło SSH będzie używane jako wartość domyślna w tym przypadku. Jak widać przed zadaniem, które określiliśmy w podręczniku, wykonano kolejne zadanie: „Zbieranie faktów”. To zadanie jest domyślnie wykonywane w celu zebrania przydatnych zmiennych na temat zdalnych hostów, które można używać w podręcznikach.

Po wykonaniu zadań otrzymujemy podsumowanie określiliśmy sztukę (. W takim przypadku widzimy, że dwa zadania zostały poprawnie wykonane (OK = 2), a jedno zadanie spowodowało zmianę (zmienione = 1). Ma to sens: zmiana nastąpiła od momentu zainstalowania pakietu VIM.

Teraz, jeśli spróbujemy ponownie wykonać podręcznik, możemy zobaczyć, że nie wystąpią żadne zmiany, ponieważ VIM jest już zainstalowany i na ostatniej dostępnej wersji:

Zagraj podsumowanie ************************************************ ***************************************************** ***************************************************** ***** Server1: OK = 2 Zmieniono = 0 nieosiągalne = 0 nieudane = 0 pomijane = 0 uratowane = 0 ignorowane = 0 serwer2: OK = 2 ZMIENIONE = 0 Nieosiągalne = 0 nieudane = 0 pomijane = 0 uratowane = 0 ignorowane = 0 ignorowane = 0 ignorowane = 0 ignorowane = 0 ignorowane = 0 ignorowane = 0 ignorowane = 0 ignorowane = 0 ignorowane = 0 ignorowane = 0 ignorowane = 0 0 

Wnioski

W tym samouczku dowiedzieliśmy się, czym jest Ansible i jakie są jego szczególności. Widzieliśmy, jak go zainstalować w niektórych najczęściej używanych dystrybucjach Linux, jak go skonfigurować i niektóre podstawowe pojęcia: co to jest zapas i co to jest
Moduły ansible. Widzieliśmy również, jak uruchomić moduł z wiersza poleceń i jak pisać i uruchomić podręcznik. Miało to na celu jako wprowadzenie do świata Ansible; Zabrudz ci ręce, eksperymentuj i przeczytaj oficjalną dokumentację, aby uzyskać bardziej dogłębną wiedzę!

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Mastering Bash Script Loops
  • Rzeczy do zainstalowania na Ubuntu 22.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Ubuntu 20.04 Przewodnik
  • Zagnieżdżone pętle w skryptach Bash
  • Jak często musisz ponownie uruchomić serwer Linux?
  • Hung Linux System? Jak uciec do wiersza poleceń i…