Wyszukiwanie w witrynie

Jak korzystać ze statycznych i dynamicznych zapasów w Ansible – część 4


W tej Części 4 serii Ansible wyjaśnimy, jak używać statycznych i dynamicznych zasobów reklamowych do definiowania grup hostów w Ansible.

W Ansible zarządzane hosty lub serwery kontrolowane przez węzeł kontrolny Ansible są zdefiniowane w pliku spisu hostów, jak wyjaśniono w. Host plik spisu to plik tekstowy składający się z nazw hostów lub adresów IP zarządzanych hostów lub serwerów zdalnych.

Zarządzane hosty mogą być wyświetlane jako pojedyncze wpisy lub kategoryzowane pod nazwą grupy, jak zobaczymy później. W Ansible istnieją dwa typy plików inwentarza: Statyczny i Dynamiczny.

Przyjrzyjmy się każdemu z nich i zobaczmy, jak możemy sobie z nimi poradzić. Do tej pory zakładamy, że zainstalowałeś już Ansible w swoim węźle kontrolnym i skonfigurowałeś połączenie SSH bez hasła z zarządzanymi hostami.

Statyczny plik spisu hosta

W Ansible statyczny plik spisu jest zwykłym plikiem tekstowym zawierającym listę zarządzanych hostów zadeklarowanych w grupie hostów przy użyciu nazw hostów lub adresów IP.

Nazwa grupy hostów jest ujęta w nawiasy kwadratowe, np. [nazwa grupy]. Wpisy hostów zarządzanych są później wyświetlane pod nazwą grupy, każdy w osobnym wierszu. Jak wspomniano wcześniej, hosty są wyświetlane przy użyciu nazw hostów lub adresów IP.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

Dla celów ilustracji utworzymy statyczny plik inwentarza.

mkdir test_lab && cd test_lab
vim hosts
[webservers]
173.82.115.165

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

Zapisz plik i wyjdź.

Jak widać w powyższym pliku inwentarza, utworzyliśmy 2 grupy hostów: serwery internetowe i serwery_bazy_danych. Utworzyliśmy także dodatkową grupę o nazwie centrum danych, która zawiera grupę grup hostów oznaczonych sufiksem ': dzieci, jak pokazano powyżej.

Ansible umożliwia także umieszczanie grup hostów pod nazwą grupy. W powyższym pliku spisu grupy serwery internetowe i serwery_bazy danych zostały umieszczone w centrum danych.

UWAGA: umieszczanie zarządzanych hostów w grupie hostów nie jest obowiązkowe. Możesz po prostu wyświetlić ich listę, na przykład używając nazw hostów lub adresów IP.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Użyjmy teraz kilku poleceń Ansible do odwoływania się do pliku inwentarza hosta. Podstawowa składnia zarządzania zapasami jest taka, jak pokazano.

ansible {host-pattern} -i /path/of/inventory/file --list-hosts

Na przykład,

ansible all -i /root/test_labs/hosts --list-hosts

Alternatywnie możesz użyć znaku wieloznacznego *, aby zastąpić argument „all”.

ansible * -i /root/test_labs/hosts --list-hosts

Aby wyświetlić listę hostów w grupie, określ grupę hostów w miejscu wzorca hosta.

ansible webservers -i /root/test_labs/hosts --list-hosts

Dynamiczny plik spisu hosta

W konfiguracji – szczególnie w chmurze, takiej jak AWS, w której plik inwentarza stale się zmienia w miarę dodawania lub wycofywania serwerów, kontrolowanie hostów zdefiniowanych w pliku inwentarza staje się prawdziwym wyzwaniem. Wracanie do pliku hosta i aktualizowanie listy hostów za pomocą ich adresów IP staje się niewygodne.

I tu właśnie pojawiają się dynamiczne zasoby reklamowe. Czym zatem jest inwentarz dynamiczny? Inwentarz dynamiczny to skrypt napisany w Pythonie, PHP lub dowolnym innym języku programowania. Przydaje się w środowiskach chmurowych, takich jak AWS, gdzie adresy IP zmieniają się po zatrzymaniu i ponownym uruchomieniu serwera wirtualnego.

Ansible opracował już skrypty inwentaryzacyjne dla platform chmury publicznej, takich jak między innymi Google Compute Engine, instancja Amazon EC2, OpenStack, RackSpace, cobbler.

Jakie są zalety zapasów dynamicznych w porównaniu z zapasami statycznymi?
  • Dynamiczne inwentarze doskonale radzą sobie z redukcją błędów ludzkich podczas gromadzenia informacji za pomocą skryptów.
  • Zarządzanie zapasami wymaga minimalnego wysiłku.

Możesz napisać własny, dostosowany do potrzeb dynamiczny inwentarz w wybranym języku programowania. Zapasy powinny zwrócić format w JSON, gdy zostaną przekazane odpowiednie opcje.

Wykorzystaj istniejący skrypt dynamicznej inwentaryzacji

Skrypt używany do tworzenia dynamicznego spisu musi być wykonywalny, aby Ansible mógł z niego korzystać.

Aby pobrać informacje o hostach wewnątrz dynamicznego skryptu inwentaryzacyjnego, po prostu uruchom.

./script --list 

Jak wskazano wcześniej, dane wyjściowe powinny być w formacie JSON w poniższym formacie.

Słownik składający się z grup (tj. serwerów WWW, serwerów_bazy_danych)
  • Lista zarządzanych hostów na grupę
  • Słownik zmiennych
Metasłownik
  • Hosty i zmienne hosta
Przykładowe wyjście
{
  "webservers": {
    "hosts": [
      "webserver1.example.com",
      "webserver2.example.com"
    ],
    "vars": {}
  },
  "database_servers": {
    "hosts": [
      "mysql_db1",
      "mysql_db2"
    ],
    "vars": {}
  },
  "_meta": {
    "hostvars": {
      "mysql_db2": {},
      "webserver2.example.com": {},
      "webserver1.example.com": {}, 
      "mysql_db1": {}
    }
  }
}
Wniosek

W tym artykule pokazaliśmy, jak tworzyć zarówno zapasy statyczne, jak i dynamiczne. Podsumowując, statyczny plik spisu to zwykły plik tekstowy zawierający listę zarządzanych hostów lub zdalnych węzłów, których numery i adresy IP pozostają w miarę stałe.

Z drugiej strony dynamiczny plik hosta zmienia się w miarę dodawania nowych hostów lub usuwania starych. Adresy IP hostów są również dynamiczne podczas zatrzymywania i uruchamiania nowych systemów hostów. Mamy nadzieję, że ten samouczek okazał się pouczający.