Blog (17)
Komentarze (134)
Recenzje (0)

OpenStack Dashboard — Horizon

Strona główna@themamuthOpenStack Dashboard — Horizon
03.07.2018 00:50
649616

OpenStack to środowisko / platforma która, pozwala na stworzenie prywatnej lub publicznej chmury z Cloud Computing. W tym wpisie przyjrzyjmy się dostępnym w OpenStack środowisku WebGUI Dashboard Horizon.

Jeżeli trafiłeś na ten wpis i też chciałbyś przetestować OpenStack to zapraszam do mojego poprzedniego wpisu gdzie pokażę Ci jak uruchomić takie środowisko w trybie developerskim - DevStack, OpenStack i OpenStack z Kolla na kontenerach

bECJDsdP

Dodatkowa informacja - ja do swojej instancji będę łączył się po przez przekierowanie portu po nie zabezpieczonym otwartym protokole HTTP. Nie udostępniam tego środowiska publicznie zatem jest wyłączone u mnie HTTPS/SSL. W domyślnej instalacji środowisko DevStack też nie udostępnia połączenia HTTPS. Przekierowanie portu jest po tunelowaniu w SSH stąd adres localhost w przykładach.

Dashboard Horizon

Dashboard Horizon do OpenStack jest dostępny jako moduł dodatkowy, nie jest wymagane do działania. Jeżeli zainstalujesz środowisko DevStack, Horizon jest dostępne domyślnie. Własnie na takiej edycji OpenStack będę bazował ten wpis. Wersja OpenStack to Pike.

Logowanie

649623

Adres naszego dashboard Horizon jest zazwyczaj dostępny pod adresem IP naszego serwera (http://<ip_address>/dashboard/) na którym, zainstalowaliśmy devstack. Jeżeli serwer ma kilka interfejsów sieciowych należy wskazać pod jakim adresem będzie on dostępny. Po zalogowaniu na użytkownika admin (użytkownika tego definiujemy na początku po przez plik konfiguracyjny devstack). Zobaczymy dostępne projekty

649625

takie jak demo, service, admin, invisible_to_admin, alt_demo. Możemy stworzyć tutaj swój projekt lub zacząć pracę w ramach któregoś z tych. Ja w ramach tego wpisu przygotuje nowy projekt by zademonstrować wam możliwość środowiska OpenStack z poziomu WebGUI. Zatem stwórzmy nasz pierwszy projekt.

Nasz pierwszy projekt

Utworzenie nowego projektu z poziomu WebGUI możemy wykonać po przez przycisk z plusem Create Project umieszczony nad lista projektów w górnej części dashboard.

649629

Otworzy nam się okno tworzenia nowego projektu (Create Project)

649631

Opcje Domain ID oraz Domain Name będziecie mieli wyszarzane tak jak to jest u mnie. Opcja Name to nazwa naszego projektu która, będzie wyświetlana na liście dostępnych projektów. Description to opis. Załóżmy zatem projekt o nazwie TheRealMamuth. Przechodzimy na zakładkę Project Members gdzie będziemy mogli dodać naszych użytkowników. Na razie z listy wybieramy użytkownika admin.

649633

Oraz przynależność z Member zmieniamy na admin. Przechodzimy do zakładki Project Groups

649635

Tu z listy All Groups przydzielamy noadmins i wybieramy Member oraz anotherrole. W ostatniej zakładce Quotas możemy ustawić:

649637

Metadata Items, VCPUs, Instances, Injected Files, Injected File Content (Bytes), Key Pairs, Length of Injected File Path, Volumes, Volume Snapshots, Total Size of Volumes and Snapshots (GiB), RAM (MB), Security Groups, Security Group Rules, Floating IPs, Networks, Ports, Routers, Subnets. Na razie nic tu nie zmieniajmy do tej zakładki wrócimy później i trochę ją zmodyfikujemy. Zapiszmy całość przyciskiem na dole Save. Komunikat zielony w górnej prawej części okna potwierdza poprawność stworzonego przez nas projektu i zapisane ustawienia.

bECJDsdV

Teraz wykorzystując menu z lewej górnej strony

649640

Wybieramy z grupy Identity opcję Users i dodamy naszego użytkownika.

649642

Klikamy na przycisk z plusem Create User.

649644

Po kliknięciu przycisku Create User pokaże się nam okno

649646

Create User gdzie będziemy mogli nadać User Name dla naszego użytkownika. Ustawić opis w polu Description, email przypisany do użytkownika w polu Email. Hasło i hasło które trzeba powtórzyć odpowiednio dla pól Password i Confirm Password. W opcji Primary Project wskazujemy nasz nowo utworzony projekt oraz na koniec określamy Role na Member. Po ustawianiu klikamy na przycisk Create User.

bECJDsdW

Po tym zabiegu wylogujmy się za użytkownika admin po przez pocję Sing Out i zalogujmy na nowo utworzonego użytkownika.

649649

Po zalogowaniu na naszego użytkownika powinien przywitać nas panel Overview

649651

Zobaczymy tu ustawiania zależne od zakładki Quotas z naszego projektu. Wylogujmy się z bieżącego użytkownika i raz jeszcze zalogujmy się na użytkownika admin i pozmieniajmy trochę tam te wartości. Dodatkowo opisze te wartości tutaj. Więc tak ustawmy:

bECJDsdX
  • Metadata Items - odpowiada za meta date ustawiane w instancjach do tego wrócimy przy tworzeniu instancji.
  • VCPUs - określa ilość dostępnych rdzeni przydzielanych dla naszej instancji (ilość dostępnych rdzeni można sprawdzić za pomoca na przykład polecania htop w systemie Linuks).
  • Instances - ilość dostępnych maszyn wirtualnych.
  • Injected Files - ilość plików konfiguracyjnych jakie można wstrzyknąć do naszej instancji.
  • Injected File Content (Bytes) - rozmiar tych plików.
  • Key Pairs to ilość możliwa ustawienia par kluczy publicznych i prywatnych.
  • Length of Injected File Path - rozmiar ścieżki do pliku.
  • Ilość Volumes.
  • Ilość Volume Snapshots.
  • Total Size of Volumes and Snapshots (GiB) - całkowity rozmiar woluminów i snapszotów w GiB.
  • RAM - ilość przydzielonej pamięci w (MB).
  • Security Groups ilość grup bezpieczeństwa,
  • Security Group Rules - ilość rol bezpieczeństwa,
  • Floating IPs - ilość ruchomych IP.
  • Networks - liczba sieci,
  • Ports - liczba porów tworzonych w sieciach i ruterach,
  • Routers liczba ruterów, Subnets - liczba podsieci.

Ustawmy takie wartości

649655

Zapiszmy ustawienia po przez kliknięcie przycisku Save w dolnej części otwartego okna. Po udanym zapisie logujmy się z powrotem na naszego nowo utworzonego użytkownika. Możemy zaobserwować, że nasze Overview się zmieniło:

649657

Widzimy więc zależność ustawień Quotas dla projektu a dostępnością zasobów w projekcie. Spróbujmy zatem utworzyć 15 instancji. Z naszego lewego górnego bocznego menu wybierzemy Project -> Compute -> Instances.

649659

I spróbujemy na podstawie domyślnego obrazu Cirros Linux utworzyć 15 instancji.

bECJDsdY

W projekcie TheRealMamuth nie mamy jeszcze żadnej Instancji. Spróbujmy zatem utworzyć 15 instancji.

649662

instancje utworzymy przy pomocy przycisku z chmurą

649664

W nowo otwartym oknie Lunch Instance spróbuj w pierwszym punkcie Details ustawić nazwę Instance Name na swoją własną oraz Count na liczbę 15.

649666

Zobaczysz wtedy informacje o przekroczonych zasobach. Tak jak ustawiliśmy w projekcie w sekcji Quotas maksymalną liczbę 10 instancji a zatem każda liczba powyżej tej określonej wartości będzie powodować konflikt - i tak samo będzie w innych przypadkach.

Ok. Do uruchomienia instancji potrzebujemy sieci. Stwórzmy więc nasz pierwszy projekt sieci i instancji który, uruchomimy w OpenStack.

Założenia projektu. Stworzymy dwie sieci vxlan. Jedna będzie miała dostęp z zewnątrz dzięki Floating IPs. Druga zaś tylko z instancji z sieci poprzedniej. W każdej sieci utworzymy lekkie instancje z Cirros Linux by móc sprawdzić czy mamy połączenie z internetem. Dodatkowo utworzymy w każdej sieci dwie instancje z systemami Ubuntu i CentOS w każdej sieci. A zatem do dzieła.

Router, sieć i podsieć

Przejdźmy do utworzenia w pierwszej kolejności rutera. Połączy on nam sieć Internet z dwiema sieciami które, utworzymy. A zatem dodajmy nasz R1 (Router).

Z menu lewego górnego przechodzimy do Project -> Network -> Routers

649673

Pierwszą sieć publiczną (public) mamy utworzoną. Dodajmy zatem nasz router - możemy też go dodać z Project -> Network -> Network Topology

649675

Użyjmy przycisku Create Router

649677

Choć w tym wpisie chciałem uniknąć zabawy w konsoli, na naszym serwerze z OpenStack. Jednak muszę coś wytłumaczyć. Nasza sieć publiczna która, istnieje jest powiązana z interfejsem br-ex i mapowana w neutronie z nazwą public. Domyślnie przyjmuje taki adres IP

649679

Reszta sądzę, że będzie na tyle jasna, że obejdzie się bez tłumaczenia - jeżeli coś będzie nie tak poproszę o komentarz i w następnym wpisie postaram się to wytłumaczyć. Wróćmy do naszego routera. Kliknijmy Create Router. W oknie które się pokaże uzupełniamy i wybieramy:

649681

Router Name - ustawiamy na wspomniane R1, odznaczamy Enable Admin Site - czyli nie damy dostępu instancją do OpenStack Admin Site. External Network ustawiamy na public. Po ustawieniu wszystkiego klikamy Create Router.

Nasz schemat sieci trochę się zmienił.

649684

Mamy router. Brama czyli nasz Gateway został dodany automatycznie. Nie widzimy adresu IP na sieci public ani na interfejsie rutera ponieważ nie mamy uprawnień administracyjnych. Jednak jak wejdziemy w dodatkowe informacje rutera zobaczymy że ten adres IP tam jest. A zatem kliknijmy View Routers Details.

649686

Zobaczymy wtedy wszystkie informacje na temat naszego Routera. Ruter na interfejsie external czyli gateway ma adres 172.24.4.29 czyli z puli interfejsu br-ex.

649688

Czas teraz utworzyć sieć dla naszych instancji przejdźmy zatem do Project -> Networks

649690

Zobaczymy tu listę sieci, na razie będzie to sieć tylko public. Zmieńmy to i dodajmy nową sieć.

649692

Naciśnijmy przycisk z plusem Create Network

649694

Naszym oczom ukaże się okno tworzenia sieci, dodajmy zatem Network Name w tym przypadku będzie to trm_first_network. Przechodzimy do zakładki Subnet

649696

W tej zakładce ustawiamy naszą podsieć Subnet Name na subnet_trm_first_network, adres Network Adress Source ustawiamy na reczny i w polu Network Address wpisujemy adres sieci.

649698

Przechodzimy do Subnet Details i zaznaczamy opcję Enable DHCP oraz alokujemy pulę w Allocation Pools (adres pierwszy zawsze będzie brany jako adres routera wiec należy go pominąć). Zatwierdzamy wszystko przyciskiem Create.

649700

Jak widzimy nasz Network Topology nieco się zmienił, Pojawiła się dodatkowa sieć oznaczona kolorem pomarańczowym. Podepnijmy ją pod nasz router R1

649702

W celu tym kliknijmy na nasz router i z dymka wybierzmy opcję z plusem Add Interface

649704

Po kliknięciu tej opcji pokaże nam się okno Add Interface. Gdzie należy w opcji Subnet wybrać naszą nowo utworzoną sieć. Adres IP pozostawiamy automatyczny. Zostanie wybrany pierwszy dostępny z puli którą określiliśmy w naszej podsieci. Oczywiście możemy tu wpisać wartość z palca, jednak ten adres musimy uwzględnić w serwerze DHCP dla naszej podsieci. Tak by zakres DHCP nie wchodził w adres wykorzystywany przez port Routera R1

649706

Nasz schemat wygląda już znacznie lepiej. Nabiera to już jakiejś struktury.

649708

Dodajmy zatem nasza pierwszą instancje którą sprawdzimy nasze połączenie ze światem zewnętrznym. Uruchommy instancje z Cirros Linux

649710

W oknie Launch Instance w pierwszej pozycji Details podajmy nazwę naszej instancji. Potrzebujemy jedną instancje wiec wartości nie będziemy zmieniać.

649712

W drugiej pozycji Source wskażemy nasze źródło na podstawie jakiego image będziemy budować naszą instancje.

649714

Wybieramy Flavor czyli zasoby jakie zostaną wydzielone dla naszej instancji

649716

Wskazujemy naszą utworzoną sieć.

649718

Security Groups pozostawiamy na razie default.

649720

Po kliknięciu Launch Instance na widoku topologii sieci zobaczymy naszą instancje oraz gdzie jest podłączona. Przejdźmy teraz do konsoli naszej instancji.

649722

Po prostu w dymku klikamy Open Console. W osobnym oknie przeglądarki zobaczymy czarny terminal.

649724

Logowanie do Cirros zawsze jest podawane w komunikacie z instancji obrazu. W tym przypadku jest to user: cirros pass: cubswin:) <- Razem z tą buźką.

649726

Po zalogowaniu wydajmy dwa polecenia które, w prosty sposób sprawdzą nam połączenie ze światem.

ping 8.8.8.8
ping wp.pl
649729

Jak widać połączenie działa. Spróbujmy teraz nawiązać połączenie z naszym Cirrosem po SSH. Aby tego dokonać potrzebujemy adresu z sieci public. Możemy go uzyskać po przez przydzielenie naszej instancji floating IP.

649731

Z menu które, będzie na końcu każdego wpisu o instancji wybieramy Associate Floating IP.

W oknie Manage Floating IP Associations możemy przydzielić nasze public IP do naszej instancji.

649734

Jeżeli nie dysponujemy żadnym adresem w pozycji IP Address wystarczy kliknąć znaczek plusa. Spowoduje to otwarcie Allocate Floating IP gdzie będziemy mogli taki adres IP zarezerwować. Jak możemy zauważyć możemy tak jak ustawiliśmy ustawić tylko 10 takich adresów IP. Klikamy Allocate IP

649736

Po zadeklarowaniu adresu z powrotem wrócimy do poprzedniego okna, gdzie będziemy mieli już nasz adres IP. Klikamy ostatecznie Associate i łączymy adres publiczny z interfejsem naszej instancji.

649738

Nasza instancja będzie miała adres IP dzięki któremu, nasze instancje będą widziane na zewnątrz.

649740

Jeżeli masz dostęp do konsoli serwera na którym, jest zainstalowany OpenStack spróbuj się połączyć z tym adresem po SSH.

649742

Oczywiście próba będzie nie udana. Oczywiście nie dlatego, że SSH nie działa. Powód jest prosty. OpenStack ma Seciurity Policy które, określają dostęp do instancji zewnątrz. Są one dość ograniczone. Stwórzmy swoje Seciurity Group tak by działało SSH.

Dla osób które, wolą sprawdzić by się przekonać stworzyłem druga instancje. Wykorzystałem konsole OpenStack i połaczyłem się po SSH z naszym Cirrosem :)

151302
151303

Ustawmy nasze Seciurity Group. Z menu bocznego lewego wybieramy Project -> Network -> Seciurity Group.

649749

W naszym projekcie będziemy mieli już domyślną SG. Jednak my jej nie zmienimy a dodamy po prostu nową.

649751

Klikamy przycisk Create Seciurity Group

649753
649754

W Create Security Group Ustawiamy nazwę w polu Name i opis. I zatwierdzamy niebieskim przyciskiem. Mamy teraz dwie grupy.

649756

Dodajmy port SSH do naszej nowo utworzonej grupy, skorzystajmy z przycisku na koncu grupy w kolumnie Action.

649758

Znajdują się tam już dwa wpisy. możemy je zostawić, kliknijmy przycisk Add Role

649760

By dodać naszą rolę odnośnie komunikacji SSH. Ustawimy zezwolenie na ruch przychodzący na porcie 22.

649762

Ustawiamy Rule na Custom TCP Rule (mogli byśmy z tej listy rozwijanej wybrać SSH ale zmniejszyło by to naszą zabawę :P). Direction wybieramy wchodzący (Ingress). Wybieramy nasz port oraz określamy za pomocą CIDR jakie adresy mogą mieć dostęp. Zapis 0.0.0.0/0 oznacza każdy. Wszystko zapisujemy i wracamy do naszej instancji. Z Action wybieramy Edit Seciurity Group i dodajemy naszą grupę SSH. Wszystko zapisujemy naciskając Save.

Przetestujmy czy wszystko działa.

649765

Wystarczy już teraz zatwierdzić.

Ok ale nie samym Cirrosem człowiek żyje. Dodajmy instancje z CentOS i Ubuntu przystosowanym do cloud. Obrazy można pobrać z:

Pobieramy wersję z rozszerzeniem qcow2. Obrazy zaimportujemy do naszego projektu w Project -> Compute -> Images. Tam klikamy Create Image. W oknie Create image nadajemy nazwę dla naszego obrazu i wskazujemy plik wcześniej pobrany.

151313
151314
649773

Po zaimportowaniu pliku pokaże nam się on na liście. Obrazy cloud tak są stworzone, że wymagają uwierzytelnienia po kluczu prywatnym RSA. Pokaże Ci jak taki Klucz stworzyć i dodać do naszego OpenStack.

649775

Przechodzimy do Project -> Compute -> Key Pairs

649777

Potem klikamy Import Key Pair i postępujemy według instrukcji podanej w nowo otwartym oknie.

649779

Możemy też wesprzeć się generatorem kluczy prywatnych i publicznych.

649781

Po dodaniu klucza przejdźmy do stworzenia naszych dwóch instancji z Ubuntu i CentOS.

Jeżeli to jest nas jedyny klucz to wszystko zostanie wybrane automatycznie jeżeli mamy więcej musimy wskazać ten do którego mamy klucz prywatny.

649784

No i mamy trzy instancje. Z resztą zadania już chyba sobie poradzicie. Ja na koniec zapraszam do innych moich tematów blogowych oraz do przyszłych wpisów w których, będę poruszał więcej tematów związanych z OpenStack.

bECJDseL