Ansible to potężne narzędzie do automatyzacji zarządzania konfiguracją, wdrażania aplikacji i wielu innych zadań administracyjnych. Jednym z kluczowych elementów Ansible jest plik Inventory, który definiuje listę hostów, na których Ansible będzie działać i wykonywać polecenia. Inventory może być zarządzane na dwa główne sposoby: jako inventory statyczne jak i dynamiczne. W tym artykule omówimy różnice między nimi, korzyści, trudności oraz w jakich przypadkach jedno z nich może być lepsze od drugiego. Zarówno statyczne, jak i dynamiczne inventory mają swoje zalety i wady. Statyczne inventory w skrócie oferuje prostotę i przewidywalność, co może być zaletą w małych, stabilnych środowiskach. Z kolei dynamiczne inventory zapewnia większą elastyczność, skalowalność i automatyzację, co jest nieocenione w dużych i dynamicznych środowiskach. Ostateczny wybór zależy od specyfiki środowiska, potrzeb organizacji oraz priorytetów w zakresie zarządzania infrastrukturą.

Ze względu na to, że większość wykorzystuje statyczne Inventory i jest ono stosunkowo proste, bardziej skupię się na pokazaniu alternatywy jaką jest dynamiczne inventory oraz proste porównanie tych dwóch.

Czym jest Statyczne Inventory?

Statyczne inventory to prosta, tekstowa lista hostów i grup hostów, które są zapisane w pliku. Domyślnym formatem jest plik INI, ale można również używać plików YAML.

Przykład statycznego inventory w formacie INI

[serwery-www]

serwer1.domena.pl

serwer2.domena.pl

[bazy]

db1.domena.pl

db2.domena.pl

Przykład statycznego inventory w formacie YAML

all:

  hosts:

    serwer1.domena.pl:

    serwer2.domena.pl:

    db1.domena.pl:

    db2.domena.pl:

  children:

    serwerywww:

      hosts:

        serwer1.domena.pl:

        serwer2.domena.pl:

    bazy:

      hosts:

        db1.domena.pl:

        db2.domena.pl

UWAGA: W ansible ważne jest odpowiednie formatowanie w plikach konfiguracyjnych

Dlaczego warto korzystać ze statycznego inventory?

1. Statyczne inventory jest proste do zrozumienia i zarządzania, szczególnie w mniejszych środowiskach.

2. Lista hostów jest jasno określona i nie zmienia się bez ręcznej interwencji, co zapewnia przewidywalność operacji.

3. Nie wymaga dodatkowych narzędzi ani usług do generowania inventory, co może być zaletą w bardziej ograniczonych środowiskach.

Co może okazać się problemem?

1. Skalowalność i zarządzanie dużą liczbą hostów w statycznym inventory może być trudne i czasochłonne.

2. W dynamicznych środowiskach, gdzie hosty mogą się często zmieniać, statyczne inventory może nie być wystarczająco elastyczne.

3. Konieczność ręcznej aktualizacji plików inventory może prowadzić do błędów i niespójności.

Czym jest Dynamiczne Inventory?

Dynamiczne inventory jest generowane na bieżąco przy użyciu skryptów lub wtyczek, które pobierają informacje o hostach z zewnętrznych źródeł, takich jak chmura, systemy zarządzania konfiguracją (CMDB), API itp.

Dlaczego warto korzystać z dynamicznego inventory?

1. Łatwość zarządzania dużymi i dynamicznymi środowiskami, gdzie hosty mogą się często zmieniać.

2. Automatyczne aktualizowanie listy hostów na podstawie rzeczywistego stanu infrastruktury.

3. Możliwość integracji z różnymi zewnętrznymi źródłami danych, takimi jak chmura, CMDB, systemy zarządzania kontenerami (np. Kubernetes) itp.

Co może okazać się problemem?

1. Konfiguracja dynamicznego inventory może być bardziej skomplikowana i wymagać dodatkowych narzędzi lub skryptów.

2. Dynamiczne inventory często zależy od dostępności zewnętrznych źródeł danych, co może być wadą w przypadku awarii tych usług.

3. Konieczność zarządzania dostępem do zewnętrznych API i usług, co może wymagać dodatkowych zabezpieczeń.

Różnice w integracji między poszczególnymi chmurami.

AWS:

AZURE:

GCP:

To tylko proste przykładowe pliki konfiguracyjne. Jedynie chciałem pokazać jak bardzo uniwersalne jest to rozwiązanie i nieszczególnie różni się konfiguracja pomiędzy różnymi dostawcami chmury. Ansible oferuje szerokie wsparcie dla dynamicznego inventory w różnych chmurach publicznych, takich jak AWS, Azure, GCP, OpenStack i VMware. Każda z tych chmur jest obsługiwana przez dedykowane wtyczki, które umożliwiają automatyczne i dynamiczne zarządzanie zasobami. Wybór odpowiedniej chmury zależy od specyficznych potrzeb i środowiska organizacji.

Podsumowanie czyli które Inventory wybrać?

Wybór między statycznym, a dynamicznym inventory zależy od specyfiki środowiska i potrzeb organizacji. Nie sposób jednoznacznie odpowiedzieć na takie pytanie bowiem skorzystanie z dynamicznego inventory może okazać się nie tylko niemożliwe, ale i nieopłacalne przy środowisku złożonym z 3 serwerów. Równie dobrze być „must have” przy środowisku 500 serwerów o podobnej konfiguracji i zadaniach.

Kiedy zatem wybrać statyczne inventory? Statyczne inventory jest idealne dla małych, stabilnych środowisk, gdzie liczba hostów jest niewielka i rzadko się zmienia. Jeśli prostota i przewidywalność są kluczowe, statyczne inventory może również być lepszym wyborem. W sytuacjach, gdzie niezawodność i brak zależności od zewnętrznych usług są ważne warto również pokusić się o statyczne inventory..

Kiedy zatem wybrać dynamiczne inventory? Dynamiczne inventory sprawdza się najlepiej w dużych, dynamicznych środowiskach, gdzie hosty często się zmieniają takich jak instytucje bankowe, ubezpieczeniowe, czyli wszędzie tam gdzie środowiska są ogromne. Jeśli automatyzacja i skalowalność są dla nas równie kluczowe cp niezależność, dynamiczne inventory zaoferuje nam większą elastyczność i efektywność. W środowiskach korzystających z chmury lub innych systemów zarządzania, dynamiczne inventory zapewnia lepszą integrację i aktualność danych, ale przede wszystkim pozwala nam bez zmartwienia skorzystać z tego rozwiązania bo chmura jest wręcz stworzona do tego by zarządzać nią kodem, automatycznie i szybko.