Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



19.10.2018

4K, HDR i USB-C

Philips 328P6VUBREB
16.10.2018

Pełna optymalizacja

Quest Foglight for Virtualization Enterprise 8.8 (FVE)
12.10.2018

Linux w chmurze Azure

SUSE Linux Enterprise 15 / Microsoft Azure
09.10.2018

Nowe antywirusy

Bitdefender 2019
03.10.2018

Niezawodny tandem

Veeam Hyper-Availability Platform i Cisco HyperFlex
26.09.2018

Zarządzane z chmury

NETGEAR GC752X(P)
21.09.2018

Kolor razy 6

Kyocera ECOSYS i TASKalfa
18.09.2018

Na ataki piątej generacji

Check Point 23900
14.09.2018

UHD dla pro

Samsung UJ59

Red Hat Ansible – sprawna automatyzacja

Data publikacji: 24-01-2018 Autor: Grzegorz Kuczyński

Obecnie możemy zaobserwować rozkwit narzędzi do automatyzacji zadań w IT. Bez wątpienia wiodącą platformą systemową w tej dziedzinie jest GNU/Linux, a najbardziej znanymi rozwiązaniami tego typu Puppet, Chef oraz nowy pretendent, jakim jest Ansible.

Oczywiście wspomniane powyżej narzędzia do automatyzacji zarządzania nie są jedynymi, lecz tylko najbardziej znanymi. Zastanawiające jest to, że nadal może istnieć luka w zapotrzebowaniu, którą ma zamiar wypełnić nowy nabytek firmy Red Hat. W tym tekście postaramy się odkryć, na czym polega popularność kolejnego narzędzia do automatyzacji IT.

Pod koniec 2016 r. Red Hat poinformował o przejęciu firmy Ansible, Inc., która sponsorowała rozwój i oferowała płatne wsparcie dla otwartego projektu Ansible. W porównaniu z innymi rozwiązaniami tego typu Ansible wydaje się znacznie prostszym rozwiązaniem, jednocześnie nie ustępując im możliwościami.

> UNIWERSALNA PLATFORMA

Pisząc o narzędziach automatyzujących zadania w zunifikowany sposób na wielu różnych systemach, nie sposób nie wspomnieć o anglojęzycznym terminie „orchestration”. Otóż określa on niezbędne dodatkowe narzędzia, które zajmują się unifikacją zarządzania w zróżnicowanym środowisku. Najczęściej w skład takiej instrumentyzacji (orkiestracji) wchodzi serwer, klient, język instrukcji oraz sposób komunikacji. W zależności od podejścia deweloperów taki model może być mniej lub bardziej złożony, co przekłada się na prostotę jego użytkowania.

Zarówno Puppet, jak i Chef wymagają instalacji agenta na sterowanym systemie. Ansible rozwiązał ten problem, wykorzystując do tego celu najpopularniejszą usługę, jaką jest OpenSSH. Oczywiście protokół SSH zapewnia tylko komunikację, natomiast klientem jest sam interpreter języka Python, który również jest standardowo instalowany niemal na wszystkich systemach linuksowych. W przypadku systemów Windows będzie to WinRM i PowerShell. Ansible obsługuje nie tylko systemy Windows i Linux, ale również Solaris, BSD, Mac OS X i wiele urządzeń sieciowych.

> INSTALACJA

Proces instalacji nie jest wymagający – wymaga tylko użycia do instalacji paczki ansible na maszynie kontrolującej pozostałe hosty (control machine). Paczka ta nie uruchamia w systemie żadnego demona ani usługi, instaluje po prostu samo oprogramowanie. W przypadku systemu CentOS 7 Ansible dostępne jest z repozytorium EPEL, które należy wcześniej zainstalować:

# yum install epel-release
# yum install ansible


Z kolei w przypadku Ubuntu paczka ta dostępna jest w repozytorium PPA:


# apt install software-properties-common
# apt-add-repository ppa:ansible/ansible
# apt update
# apt install ansible

W dystrybucji Debian instalacja również odbywa się z repozytorium Ubuntu PPA, lecz wygląda troszkę odmiennie niż w Ubuntu.

Większość popularnych dystrybucji oferuje gotowe paczki do instalacji Ansible. W innych przypadkach możemy przeprowadzić proces, używając narzędzia pip do instalacji paczek oprogramowania dla Pythona, jednak zalecane jest, aby instalować Ansible z oficjalnych paczek dla danej dystrybucji. Teoretycznie Ansible można zainstalować na każdym systemie oferującym interpreter Python w wersji 2.7/2.7 i 3.5, ale system Windows nie jest wspierany w roli control machine. Z powodu różnych zależności instalację najlepiej przeprowadzać na systemach Linux.

Po instalacji możemy sprawdzić, jaką wersją Ansible dysponujemy, oraz wersję używanego interpretera języka Python:

# ansible --version
ansible 2.4.2.0
config file = /etc/ansible/ansible.cfg
...
python version = 2.7.5

Jest to istotne, ponieważ niektóre funkcje uzależnione są od konkretnych wersji oprogramowania.

> KONFIGURACJA KLIENTA

Host kontrolowany, w przypadku systemów typu Unix, powinien być wyposażony w serwer SSH oraz interpreter Pythona w odpowiedniej wersji. Naszym przykładowym klientem będzie system CentOS 7. W przypadku dystrybucji z uruchomionym na kliencie systemem SELinux należy zainstalować również pakiet libselinux-python.

Podstawową kwestią, jaką należy rozstrzygnąć na początku, jest to, w jaki sposób Ansible ma się łączyć z kontrolowanym hostem. Poza tym, że będzie to się odbywać przez protokół SSH, musimy wybrać docelowego użytkownika systemu oraz sam sposób autoryzacji. Możemy podać hasło lub skonfigurować wcześniej automatyczne logowanie za pomocą kluczy szyfrujących. Poniżej przedstawiono konfigurację z konta root na konto root do klienta (node1):

ansible# ssh-keygen -t rsa -b 4096
ansible# ssh-copy-id root@node1
ansible# ssh root@node1 'hostname'
node1

Pierwsze polecenie generuje parę kluczy RSA, drugie kopiuje publiczny klucz do maszyny docelowej, a na koniec sprawdzamy, czy polecenia będą się wykonywać bez monitu o podanie hasła. Oczywiście, aby to działało, na hoście docelowym musi być włączone zdalne logowanie konta root i opcja autoryzacji przez klucz. W CentOS 7 jest to akurat ustawieniem domyślnym:

node1# sshd -T | grep pubkeyauthentication
pubkeyauthentication yes

Ansible do komunikacji próbuje wykorzystać OpenSSH, ale w przypadku starszych wersji tego oprogramowania wykorzystuje bibliotekę Pythona zwaną paramiko.

[...]

Autor zawodowo zajmuje się informatyką. Jest członkiem społeczności open source, prowadzi blog nt. systemu GNU/Linux.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2013 Presscom / Miesięcznik "IT Professional"