Jak już wiemy z 1 części wpisu, Ansible Galaxy to potężne narzędzie, które znacząco rozszerza możliwości narzędzia służącego do zarządzania konfiguracją, wdrażania aplikacji oraz automatyzacji zadań.  

Ansible Galaxy działa jako centralne repozytorium, które umożliwia znalezienie, ponowne użycie i dzielenie się wiedzą, doświadczeniem i sprawdzonymi już napisanymi rozwiązaniami z innymi, szczególnie rolami, które są zbiorami playbooków i innych plików realizujących określone funkcje w środowisku. W tym artykule skupię się na bardziej zaawansowanym zastosowaniu Ansible Galaxy, przedstawiając jego najczęściej używane komendy, ich użycie oraz zastosowanie do optymalizacji operacji IT. To ma być swego rodzaju zajawką do tego, aby wejść w świat nie tylko automatyzacji, ale i automatyzacji pracy z tym potężnym narzędziem. 

Tworzenie własnego projektu

ansible-galaxy init <nazwa_roli> 

W ten sposób inicjalizujemy nowy szkielet roli z określoną nazwą. Tworzy to niezbędną strukturę katalogów i plików potrzebnych dla nowej roli Ansible. Jest to szczególnie przydatne do zapewnienia, że wszystkie role mają spójną strukturę, co ułatwia ich późniejsze zarządzanie. 

Spójrzmy na drzewo katalogów i plików, które zostały nam automatycznie utworzone do pracy. Jest to o tyle ważne, że nie musimy sami o tej strukturze pamiętać i tworzyć jej poprzez mkdir…

Instalacja ról z publicznego repozytorium

ansible-galaxy install <nazwa_roli>

To polecenie służy jak już wiemy z poprzedniego artykułu do instalacji ról z repozytorium lub istnieje jeszcze jeden sposób na taką instalację poprzez plik requirements.yml

Przykład z repozytorium:

ansible-galaxy install geerlingguy.apache

Co spowoduje zainstalowanie roli z repozytorium dla instalacji serwera WWW apache.

Przykład z requirements.yml

src: geerlingguy.apache

src: https://github.com/nazwa_uzytkownika/nazwa_roli

ansible-galaxy install -r requirements.yml

Co spowoduje zaciągnięcie z repozytorium galaxy lub np. githuba.

Usuwanie roli

ansible-galaxy remove <nazwa_roli>

Na przykład chcemy usunąć role instalującą serwer WWW apache:

ansible-galaxy remove geerlingguy.apache

Co z kolei spowoduje usunięcie tej roli. Pozwoli to na utrzymanie porządku w naszych projektach i usuwanie tego co już jest niepotrzebne.

Listowanie

Wiadomym jest, że w miarę rozwoju projektu i instalacji kolejnych ról, projekt może stać się na tyle rozbudowany, że nie będziemy pamiętać wszystkich ról. Z pomocą przyjdzie nam listowanie:

ansible-galaxy list

Informacje o rolach

Wyświetlmy szczegółowe informacje o zainstalowanej roli, takie jak jej autor, wersja, zależności i inne metadane.

ansible-galaxy info <nazwa_roli>

Przykład:

ansible-galaxy info geerlingguy.apache

Jak widać mamy tu naprawdę mnóstwo przydatnych informacji od kontynuatora geerlingguy. Warto przeglądać przed instalacją role ze względu na to, żeby wiedzieć czy i kiedy były ostatnio aktualizowane, czy są dobrze opisane i tak dalej.

Wyszukiwanie ról

To co będzie na pewno wykorzystywane najczęściej czyli wyszukiwanie konkretnych ról możemy zrealizować za pomocą:

ansible-galaxy search <nazwa_roli>

Widzimy tutaj ogromny zbiór różnych ról, z których można skorzystać.

Przeglądanie ocen innych

W Ansible Galaxy masz możliwość zarówno oceny poszczególnych projektów jak i przeglądania tych ocen. Niestety Ansible Galaxy nie ma wbudowanej komendy w CLI do bezpośredniego przeglądania ocen, ale informacje te są dostępne na stronie internetowej. Poniżej pokaże jak w miarę prosto przeglądać oceny ról za pomocą interfejsu webowego oraz jak korzystać z API, aby uzyskać te informacje w konsoli.

curl -s https://galaxy.ansible.com/api/v1/roles/?name=<nazwa_roli>

Na przykład:

curl -s https://galaxy.ansible.com/api/v1/roles/?name=geerlingguy.apache | jq .

W odpowiedzi uzyskamy kod json’a:

{

  „count”: 1,

  „results”: [

    {

      „id”: 12345,

      „name”: „apache”,

      „namespace”: „geerlingguy”,

      „description”: „Ansible role for Apache HTTP Server”,

      „average_score”: 4.8,

      „stars_count”: 50,

      „downloads_count”: 100000,

      „created”: „2020-01-01T00:00:00.000Z”,

      „modified”: „2021-01-01T00:00:00.000Z”,

      „summary_fields”: {

        „namespace”: {

          „id”: 678,

          „name”: „geerlingguy”

        }

      }

    }

  ]

}

Co dla nas istotne, to:

      „average_score”: 4.8,

Oznacz, że oceniono tu jakość na 4.8

Inny przykład ze strony www:

Podsumowanie

Ansible Galaxy jest potężnym narzędziem, które oferuje szeroki zakres komend do zarządzania rolami i kolekcjami Ansible. Znajomość tych komend pozwala na efektywne zarządzanie infrastrukturą, automatyzację złożonych zadań oraz dzielenie się swoimi rozwiązaniami z całą społecznością Ansible. Powyższe komendy to tylko niektóre z dostępnych narzędzi, które mogą zainteresować czytelnika, ale samo narzędzie oferuje znacznie więcej.

Warto w tym momencie też wspomnieć, że powinno korzystać się zarówno z komend CLI, jak i strony internetowej repozytorium do wyszukiwania. CLI może być bardziej pro, lecz to na stronie szybciej doczytamy niezbędnych informacji. Warto też wiedzieć o jednej rzeczy. Zdarza się tak, że role, które możemy zobaczyć w CLI będą nieco inne niż repozytorium ze strony WWW.