niedziela, 3 listopada 2013

Webansible - interfejs webowy dla ansible

Używanie Ansible za pomocą konsoli jest całkiem proste. Jednak miło byłoby mieć możliwość uruchamiania powtarzalnych operacji za pomocą GUI. A ponieważ w dzisiejszych warto pisać uniwersalnie, więc najlepiej żeby to GUI było uruchamiane w przeglądarce. Zrobienie interfejsu webowego dla ansible miałoby tę zaletę, że w przeciwieństwie do tradycyjnego GUI można by umieścić go nie tylko na własnym laptopie, ale też na serwerze z którego można by zarządzać po połączeniu przeglądarką. Dzięki temu nie byłby konieczny dostęp do określonego komputera z zainstalowanymi Ansible, do którego wszystkie zarządzanie hosty posiadają klucze. Niestety AnsibleWorks, firma zajmująca się rozwojem Ansible, przygotowała wersję interfejsu webowego, który jest oprogramowaniem komercyjnym. Istnieje możliwość używania go bezpłatnie dla grupy do 10 komputerów. Dla potrzeb np. szkoły jest to niewystarczające, zaś cena $100 za komputer rocznie jest zaporowa. Ponieważ od dłuższego czasu kombinowałem z wdrożeniem jakiegoś systemu do zarządzania komputerami, zdecydowałem się napisać taki interfejs samodzielnie. Tym bardziej, że potrzebny jest mi również sposób na wykrywanie IP komputerów w sieci wewnętrznej pracujących w oparciu o DHCP.

Wymagania:

  1. Praca z apt-get: update, upgrade
  2. Dodawanie i usuwanie źródeł oprogramowania
  3. Wybór oprogramowania do instalacji i usunięcia z listy oprogramowania
  4. Możliwość tworzenia grup komputerów i zarządzania nimi osobno
  5. Edycja i kopiowanie plików konfiguracyjnych na hosty
  6. Uruchamianie pojedynczego polecenia z konsoli w przeglądarce
  7. Edycja i uruchamianie playbooków
  8. Rejestrowanie komputerów o zmiennym IP i dodawanie ich do pliku hosts
  9. Zapisywanie historii ostatnich operacji
  10. Małe zużycie zasobów systemowych przez oprogramowanie

Plany realizacji:

Rozwiązania takie jak SpaceWalk czy Rudder są bardzo fajne, jednak jak dla mnie zbyt ciężkie. Jeżeli ten drugi zadowala się 1GB pamięci RAM,to w tym pierwszym potrzeba, aż 2GB. W moim oprogramowaniu powinno wystarczyć 50 - 100MB, a tylko w większych systemach konieczne byłoby więcej. No i z tego powodu używany przeze mnie do tej pory Lift odpada. Co prawda gdzieś na forum David Pollack pisał, o możliwości uruchomienia Lifta na 32-64MB, ale jakoś nie chce mi się w to wierzyć widząc na dotychczasowe moje aplikacje). Przeanalizowałem kilka możliwych rozwiązań. Teoretycznie Scalatra powinna być lżejsza do Lifta. Jednak patrząc nawet po rozmiarze pliku war nie widać wielkiej różnicy i być może byłoby to wydajniejsze rozwiązanie, ale nie sądzę aby była duża różnica. Mógłbym pokusić się o napisanie samodzielnie prostego serwera www w oparciu o HTTPServer. Jednak wymagałoby to pewnie dużo czasu, a i skalowalność byłaby słaba. Zastanawiałem się nad Socko Web Server. Na koniec zdecydowałem się na Spray.io. Socko wydaje się bardzo podobne do Spray jednak ten drugi projekt jest o wiele dojrzalszy, jak również o wiele więcej projektów z niego korzysta. Poznanie Spray może mi się przydać w przyszłości do innych projektów, więc warto chociażby z tego powodu go wybrać. Spray posiada możliwość uruchamiania aplikacji z wbudowanych serwerem (spray-can). Jest bardzo modularny i nie ma dużych wymagań. Po stronie przeglądarki zamierzam użyć Bootstrap Twitter (wygląd strony) oraz frameworka AngularJS. Po stronie serwera za szablony HTML ma odpowiadać Twirl (ponieważ jako jedyny jest dobrze zintegrowany ze Spray).

Stan obecny

Aby zapewnić wykrywanie IP hostów napisałem prostą aplikację w języku Vala, która pinguje serwer (z użyciem libsoup). Serwer odbiera pingowanie i uaktualnia adres IP hosta i na żądanie tworzy plik /etc/ansible/hosts. W zasadzie ta funkcjonalność jest już wystarczająca, aby przejść do konsoli i zarządzać komputerami co wykorzystuje już w pracowni.

Najbliższe plany

W pierwszej kolejności uruchamianie poleceń ansible bez konieczności przechodzenia do konsoli. Następnie wykonywanie update, upgrade i instalacja pakietu według nazwy oraz dodawanie źródeł oprogramowania.

Brak komentarzy:

Prześlij komentarz