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



18.04.2018

Dla biznesu

Monitory AOC 6x
13.04.2018

Ochrona sieci przemysłowych

Stormshield SNi40
09.04.2018

Disaster recovery

Veeam Availability Orchestrator
05.04.2018

Pamięci masowe i SDS

IBM Spectrum Storage
27.03.2018

Wydajna podstawa

Asus RS700-E9, Asus WS C621E SAGE
22.03.2018

Seria dla profesjonalistów

Toshiba E-Generation
21.03.2018

Odzyskiwanie plików - nowa...

Zachowanie bezpieczeństwa plików jest dla wielu przedsiębiorców priorytetem. Z myślą o...
19.03.2018

Superszybkie SSD

Samsung SZ985 Z-SSD
15.03.2018

EPYC w serwerach

Dell EMC PowerEdge

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"