Ansible jest używany do zarządzania i administrowania wieloma serwerami z centralnego komputera. Jest to narzędzie do zarządzania serwerami. Ansible nie wymaga żadnej konfiguracji po stronie serwera, tak jak Chef czy Puppet. Wystarczy zainstalować Ansible na swoim komputerze i zarządzać lub administrować serwerami przez SSH. Jest to bardzo proste i łatwe w użyciu. W tym artykule pokażę Ci, jak zainstalować i używać Ansible na CentOS 8. Więc, zaczynajmy.

Instalacja Ansible:

Ansible jest dostępne w repozytorium EPEL systemu CentOS 8. Więc, możesz łatwo zainstalować Ansible na CentOS 8.

Po pierwsze, zaktualizuj pamięć podręczną repozytorium pakietów DNF za pomocą następującego polecenia:

$ sudo dnf makecache

Teraz, aby włączyć repozytorium EPEL, zainstaluj pakiet epel-release za pomocą następującego polecenia:

$ sudo dnf install epel-release

Aby potwierdzić instalację, naciśnij Y, a następnie naciśnij <Enter>.

pakietepel-release powinien zostać zainstalowany, a repozytorium EPEL powinno zostać włączone.

Teraz zaktualizuj ponownie cache repozytorium pakietów DNF za pomocą następującego polecenia:

$ sudo dnf makecache

Teraz zainstaluj Ansible za pomocą następującego polecenia:

$ sudo dnf install ansible

Aby potwierdzić instalację, naciśnij Y, a następnie naciśnij <Enter>.

DNF powinien rozpocząć pobieranie wszystkich wymaganych pakietów z Internetu.

Możesz zostać poproszony o zaakceptowanie klucza GPG repozytorium EPEL. Naciśnij Y, a następnie naciśnij <Enter>, aby go zaakceptować.

DNF powinien rozpocząć instalację wszystkich pobranych pakietów.

W tym momencie powinien zostać zainstalowany Ansible.

Teraz należy uruchomić następujące polecenie:

$ ansible –version

Jak widać, używam Ansible 2.9.3 i działa bez zarzutu.

Konfigurowanie serwerów dla Ansible:

Do zarządzania lub administrowania serwerami za pomocą Ansible musisz mieć zainstalowany i uruchomiony serwer SSH na serwerach. Port SSH serwerów musi być otwarty, a serwery powinny być dostępne z hosta Ansible. To jedyny wymóg korzystania z Ansible.

W tym artykule zamierzam użyć 4 maszyn wirtualnych (VMs) (2 Ubuntu Server 18.04 LTS VMs i 2 Debian 10 VMs) do zademonstrowania podstaw zarządzania i administrowania serwerami Ansible.

Cztery maszyny wirtualne to:

linuxhint-f1a46 – 192.168.20.161
linuxhint-8ee7a – 192.168.20.166
linuxhint-s40 – 192.168.20.20.171
linuxhint-s41- 192.168.20.170

Możesz użyć adresów IP serwerów do zarządzania lub administrowania nimi za pomocą Ansible. Możesz również użyć nazw DNS serwerów.

W tym artykule użyję pliku /etc/hosts do rozwiązywania DNS adresów IP maszyn wirtualnych.

Jeśli chcesz śledzić, otwórz plik /etc/hosts za pomocą edytora tekstu vi w następujący sposób:

$ sudo vi /etc/hosts

Następnie dodaj linie zaznaczone na poniższym zrzucie ekranu i zapisz plik.

Teraz wygeneruj klucz SSH na swoim hoście CentOS 8 Ansible w następujący sposób:

$ ssh-keygen

Naciśnij <Enter>.

Naciśnij <Enter>.

Naciśnij <Enter>.

Klucz SSH powinien zostać wygenerowany.

Teraz musisz przesłać klucz SSH do wszystkich serwerów, którymi chcesz zarządzać za pomocą Ansible.

Aby skopiować klucz SSH do serwera vm1.linuxhint.local, wykonaj następujące polecenie:

$ ssh-copy-id [email protected]

Teraz wpisz yes, a następnie naciśnij <Enter>.

Teraz wpisz hasło logowania do maszyny vm1.linuxhint.local VM i naciśnij <Enter>.

Klucz SSH powinien zostać skopiowany.

Zrób to samo dla serwera vm2.linuxhint.local, vm3.linuxhint.local i vm4.linuxhint.local.

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

Po skopiowaniu klucza SSH do maszyn wirtualnych, powinieneś być w stanie zalogować się do nich bez żadnego hasła, jak widać na poniższym zrzucie ekranu.

Teraz wykonaj następujące polecenie na każdym serwerze, aby umożliwić dostęp sudo bez hasła dla użytkownika logowania. Jest to wymagane, aby Ansible mógł uruchomić jakiekolwiek polecenia roota.

$ echo „$(whoami) ALL=(ALL) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/$(whoami)

Wszystkie serwery są teraz gotowe do skonfigurowania lub zarządzania z poziomu Ansible.

Używanie Ansible:

Ansible przechowuje listę wszystkich hostów, którymi zarządza, w pliku zwanym plikiem inventory. Plik inventory Ansible jest po prostu zwykłym plikiem tekstowym.

Na początku utwórzmy nowy katalog projektu Ansible ~/ansible/, a następnie utworzymy nasz plik inventory.

$ mkdir ~/ansible

Teraz przejdź do katalogu ~/ansible.

$ cd ~/ansible

Teraz utwórz plik inwentarza Ansible w następujący sposób. Możesz nazwać ten plik jakkolwiek. Ja będę go nazywał hosts.

$ vi hosts

Teraz możesz dodać swoje serwery w następujący sposób. Opcja ansible_user służy do określenia użytkownika, którego Ansible będzie używał do wykonywania poleceń na tych serwerach. Zazwyczaj jest to użytkownik logujący się na serwerze.

Możesz również mieszać adresy IP i nazwy DNS serwerów w pliku inventory.

Możesz również grupować serwery. Tutaj mam 2 grupy, webserver i dbserver.

W grupie webserver, dodałem serwery vm1 i vm2. W grupie dbserver dodałem serwery vm3 i vm4.

Po utworzeniu pliku inwentarza można go użyć, używając opcji -i programu Ansible.

Możesz wylistować wszystkie hosty z pliku inwentarza w następujący sposób:

$ ansible -i hosts –list-hosts all

Możesz sprawdzić, czy wszystkie hosty są aktywne w następujący sposób:

$ ansible -i hosts –list-hosts -m ping all

Jak widać, wszystkie hosty są aktywne.

Możesz również pingować wszystkie hosty w pojedynczej grupie.

$ ansible -i hosts –list-hosts -m ping webserver

Możesz uruchamiać polecenia powłoki za pomocą Ansible w następujący sposób:

$ ansible -i hosts -m shell -a 'command’ <all|groupName>

Możesz również uruchamiać polecenia powłoki (z uprawnieniami sudo) w następujący sposób.

$ ansible -i hosts -b –become-method=sudo -m shell -a 'command’ &lt;all
|groupName&gt;

Na przykład można zaktualizować pamięć podręczną repozytorium pakietów APT na hostach w grupie webserver za pomocą Ansible w następujący sposób:

$ ansible -i hosts -b –become-method=sudo -m shell -a 'apt update’ webserver

Jak widać, pamięć podręczna repozytorium pakietów APT jest aktualizowana dla wszystkich hostów w grupie webserver.

Spróbujmy zainstalować serwer WWW Apache 2 na wszystkich hostach z grupy webserver.

$ ansible -i hosts -b –become-method=sudo -m shell -a
’apt install -y apache2′ webserver

Serwer WWW Apache powinien być zainstalowany we wszystkich hostach grupy webserver.

Jak widać, serwer Apache działa na wszystkich hostach w grupie webserver.

$ ansible -i hosts -b –become-method=sudo -m shell -a 'curl -sI
http://localhost’ webserver

W ten sam sposób można uruchomić dowolne polecenie na wszystkich hostach w grupie dbserver.

$ ansible -i hosts -m shell -a 'lsb_release -a’ dbserver

Możesz również użyć Ansible Playbook do łatwiejszego zarządzania serwerami. Ansible Playbook jest poza zakresem tego artykułu. Przeczytaj dokumentację programu Ansible, aby uzyskać więcej informacji na temat Ansible Playbook.

Dziękuję za przeczytanie tego artykułu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.