Jak zainstalować i przetestować Ansible w systemie Linux

Ansible to szeroko stosowane narzędzie do zarządzania konfiguracją napisane w języku Python, które pomaga konfigurować pojedyncze lub wiele maszyn jednocześnie. Ansible może być używane do wykonywania następujących zadań

  • Konfiguracja od zera pojedynczego lub wielu węzłów
  • Deployments
  • Zmiany konfiguracji
  • Patching
  • Zarządzanie usługami
  • i wielu innych

Ansible jest powszechnie używane ze względu na swoją prostotę. Kod Ansible jest napisany w języku YAML, nie wymaga też instalacji agenta na zdalnej maszynie. Ansible używa portu 22 (SSH), aby połączyć się ze zdalną maszyną i dokonać niezbędnych zmian.

Każda maszyna, która może połączyć się ze zdalną maszyną na porcie 22, może stać się węzłem kontrolnym. Węzeł kontrolny jest miejscem, w którym można zainstalować Ansible, a węzeł zarządzany jest zarządzany przez węzły kontrolne.

Przyjrzyjmy się instalacji Ansible na węźle kontrolnym.

Instalacja Ansible w systemie CentOS 7:

Jako że Python jest jedynym warunkiem wstępnym do zainstalowania Ansible, zainstalujmy Pythona, wykonując poniższe polecenie.

$sudo yum install python3 -y

Aby zainstalować Ansible na CentOS 7, najpierw upewnij się, że repozytorium CentOS 7 EPEL jest zainstalowane. Wykonaj poniższe polecenie, aby zainstalować repozytorium epel.

$sudo yum install epel-release

Zaktualizuj systemowy indeks pakietów, wykonując poniższe polecenie update.

$sudo yum update -y

Gdy repozytorium jest zainstalowane, zainstaluj Ansible za pomocą menedżera pakietów yum. Wykonaj poniższe polecenie, aby zainstalować Ansible.

$sudo yum install ansible -y

Sprawdź, czy Ansible jest poprawnie zainstalowany i jaka jest jego wersja.

$ansible -v

Instalacja Ansible na CentOS 8:

Spójrzmy na kroki instalacji dla CentOS 8. Zainstalujmy pythona w systemie CentOS 8.

$sudo dnf install python3

Gdy python jest zainstalowany, zainstalujmy EPEL repo, wykonując poniższe polecenie.

$sudo dnf install epel-release -y

Zaktualizujmy systemowy indeks pakietów, wykonując poniższe polecenie update.

$sudo dnf update -y

Jesteśmy teraz gotowi do zainstalowania Ansible. Wykonaj poniższe polecenie, aby zainstalować Ansible.

$sudo dnf install ansible -y

Sprawdź, czy Ansible jest zainstalowany poprawnie i w jakiej jest wersji.

$ansible -v

Instalacja Ansible na Ubuntu:

Python jest obecnie domyślnym pakietem w większości dystrybucji Linuksa. Jeśli nie masz zainstalowanego pythona, wykonaj poniższe polecenie, aby zainstalować pakiet python.

$sudo apt-get install python3

Aby zainstalować Ansible w Ubuntu, najpierw zainstalujmy repozytorium, wykonując poniższe polecenie.

$sudo apt-add-repository ppa:ansible/ansible

Zaktualizuj systemowy indeks pakietów, wykonując poniższe polecenie update.

$sudo apt-get update -y

Teraz zainstaluj Ansible.

$sudo apt-get install -y ansible

Sprawdź, czy Ansible jest zainstalowany poprawnie i w jakiej jest wersji.

$ansible -v

Instalacja Ansible za pomocą Python PIP na CentOS, Debianie i Ubuntu:

Niezależnie od tego, jakiego systemu operacyjnego używasz, możesz zainstalować Ansible za pomocą instalatora pakietów Pythona. Wykonajmy poniższe polecenie, aby zainstalować python3-pip.

Dla CentOS 7 i poniżej:

$sudo yum install python3 python3-pip -y

Dla CentOS 8:

$sudo dnf install python3 python3-pip -y

Dla Ubuntu i Debiana:

$sudo apt-get install python3 python3-pip

Jak już mamy zainstalowanego pythona i pip, wykonajmy poniższe polecenie w dowolnym systemie operacyjnym, aby zainstalować Ansible.

$sudo pip3 install ansible

Sprawdź, czy Ansible jest poprawnie zainstalowane i jaka jest jego wersja.

$ansible -v

Konfigurowanie hostów kontrolera Ansible:

Musimy najpierw skonfigurować plik „hosts”, zanim zaczniemy komunikować się z innymi węzłami. Ten plik będzie miał wszystkie IP lub nazwy hostów zarządzanych węzłów.

Uwaga: Nie zawsze jest konieczne używanie pliku hosts do łączenia się z zarządzanymi węzłami. Ale wtedy za każdym razem, musimy użyć IP lub nazwę hosta serwera zarządzanego węzła podczas wykonywania każdego polecenia.

Utwórz plik (jeśli jeszcze go nie ma) z uprawnieniami roota wykonując poniższe polecenie:

$sudo touch /etc/ansible/hosts

Przed zapisem do pliku, spójrzmy i zrozummy przykładowy plik hosts:


alias ansible_ssh_host=your_node_server_ip

Plik hosts powinien być zgodny z powyższą składnią. Spójrzmy na każdy parametr.

: Ten parametr tworzy grupę. Wszystkie adresy IP węzłów zarządzanych lub nazwy hostów pod parametrem group_name będą należeć do tej samej grupy. Na przykład, jeśli mamy wiele serwerów internetowych w naszej infrastrukturze, możemy dodać wszystkie adresy IP lub nazwy hostów węzła zarządzanego tutaj.

alias: Ten parametr jest używany do nadania serwerowi węzła zarządzanego alias do identyfikacji serwera węzła zarządzanego. Na przykład, jeśli mamy wiele serwerów WWW w naszej infrastrukturze, możemy podać host1, host2, host3 jako alias. Główną zaletą podawania aliasu jest to, że gdy będziemy wykonywać polecenie Ansible w celu zmiany konfiguracji pojedynczego serwera, możemy użyć aliasu, aby zidentyfikować i wykonać wymagane zadanie na serwerze.

ansible_ssh_host=your_node_server_ip: Ten parametr skieruje alias na adres IP węzła zarządzanego lub nazwę hosta.

Będziemy używać CentOS 8 jako kontrolowanego węzła z Ansible. Jak wspomniano powyżej, Ansible używa 22 portu zdalnego hosta do połączenia.

Założymy, że adresy IP naszego serwera węzłów zarządzanych CentOS to 192.168.0.2, 192.168.0.3 i 192.168.0.4.

Aby umożliwić węzłowi kontrolera Ansible komunikację z węzłami zarządzanymi, musimy potwierdzić, że węzły zarządzane są dostępne na porcie 22, który jest portem SSH. Wykonaj poniższe polecenie, aby potwierdzić łączność jeden po drugim na wszystkich trzech zarządzanych węzłach z poziomu kontrolera.

$ssh [email protected]
$ssh [email protected]
$ssh [email protected]

Zostaniesz poproszony o podanie hasła użytkownika root wszystkich węzłów. Ansible działa bardzo sprawnie, jeśli masz skonfigurowane uwierzytelnianie bez hasła między kontrolerem Ansible a zarządzanymi węzłami. Przy użyciu różnych parametrów w poleceniu Ansible uwierzytelnianie za pomocą hasła również może działać.

Jako że skonfigurowaliśmy łączność ssh między kontrolerem Ansible a zarządzanymi węzłami, skonfigurujmy plik hosts, aby połączyć się ze wszystkimi zarządzanymi węzłami. Jak wspomniano wcześniej, możemy dodać wiele aliasów serwerów węzłów w jednej grupie. W tym przypadku dodajmy wszystkie trzy węzły i przypiszmy im aliasy odpowiednio jako host1, host2 i host3. Nasz plik hosts powinien wyglądać jak poniżej po dodaniu wszystkich zarządzanych węzłów. Wykonaj poniższe polecenie, aby edytować plik hosts, który utworzyliśmy wcześniej.

Otwórz plik z uprawnieniami roota wykonując poniższe polecenie:

$sudo vi /etc/ansible/hosts

Dodajmy poniższą konfigurację w pliku hosts.


host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4

Tutaj dodaliśmy wszystkie adresy IP węzłów zarządzanych i aliasy w grupie o nazwie node_servers.

Spróbujmy teraz połączyć się z zarządzanymi węzłami z poziomu kontrolera Ansible.

$ansible -m ping node_servers

Powyższe polecenie używa modułu ping do połączenia się z grupą „node_servers”, którą zdefiniowaliśmy w pliku hosts powyżej.

Możesz napotkać błędy z różnych powodów.

  1. Ansible domyślnie spróbuje połączyć się z zarządzanym węzłem używając twojej bieżącej nazwy użytkownika, jeśli jej nie podałeś. Jeśli ten użytkownik nie istnieje na serwerze węzła, otrzymasz poniższy błąd.
  2. Jeśli port ssh 22 nie jest otwarty dla połączenia na zarządzanych węzłach. (Jak wspomniano wcześniej, Ansible łączy się na porcie ssh)
  3. Jeśli IP w pliku hosts jest nieprawidłowe.

Jeśli którykolwiek z powyższych warunków zawiedzie, otrzymasz poniższy błąd.

host1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host2 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host3 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}

Specjalnie powiedzmy Ansible, że powinien łączyć się z zarządzanymi węzłami w grupie „node_servers” z użytkownikiem james. Utwórz katalog group_vars, jak wspomniano poniżej.

$sudo mkdir /etc/ansible/group_vars

Pliki w tym katalogu są specjalnie używane do konfigurowania zmiennych, których możemy używać w naszych playbookach Ansible.

Utwórzmy plik zmiennych dla naszej konfiguracji, wykonując poniższe polecenie:

$sudo vim /etc/ansible/group_vars/node_servers.yml

Dodaj poniższy kod do pliku:

---
ansible_ssh_user: james

Plik YML zawsze zaczyna się od „—” w pierwszej linii. Zapiszmy i zamknijmy ten plik, gdy skończymy. Teraz Ansible będzie zawsze używać użytkownika james dla grupy node_servers, niezależnie od bieżącego użytkownika, którego używasz do uruchomienia polecenia.

Sprawdź połączenie węzła zarządzanego:

Teraz, gdy mamy skonfigurowane nasze hosty i wystarczająco dużo szczegółów konfiguracji, aby umożliwić nam pomyślne połączenie z naszymi węzłami zarządzanymi, możemy wypróbować to samo polecenie, które uruchomiliśmy wcześniej.

$ansible -m ping servers 

Ansible zwróci dane wyjściowe takie jak to:

host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}

host3 | SUCCESS => { „changed”: false, „ping”: „pong”}

To jest podstawowy test, aby upewnić się, że Ansible ma połączenie ze swoimi zarządzanymi węzłami.

Zakończenie:

Nie jest konieczne używanie systemu operacyjnego CentOS dla zarządzanych węzłów. Możesz użyć tej samej konfiguracji testowej, której użyliśmy powyżej, dla CentOS, RedHat, Ubuntu i każdej innej dystrybucji Linuksa.

How To Install and Test Ansible on Linux

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.