Cloud
Wideo przewodnik po Integrated Computing Standard – odcinek 21
Odcinek 21. Narzędzie linii poleceń (vcd)
W tym odcinku spojrzymy na narzędzie linii poleceń vcd, które można zainstalować na własnym komputerze i za jego pomocą wykonywać podobne operacje na Integrated Computing Standard, jakie dostępne są za pomocą strony www. Takie narzędzie jest istotne nie tylko ze względu na wygodę osób przyzwyczajonych do pracy w terminalu tekstowym, ale przede wszystkim pod kątem możliwości automatyzacji powtarzalnych czynności.
Przyjrzymy się instalacji narzędzia. Następnie za jego pomocą utworzymy w pustym środowisku chmurowym przykładową maszynę wirtualną z siecią dającą dostęp do internetu. Użyte zostaną mechanizmy vApp (odc. 15) i IP Pools (odc. 17), więc przyda się rozumienie sposobu ich działania.
Jeśli pracujemy na systemie Windows, należy zainstalować aktualną wersję interpretera języka Python 3 ze strony: https://www.python.org/. Podczas instalacji należy zaznaczyć opcję „Add Python […] to PATH”. Jeśli tego nie zrobimy, poniższa procedura jest nadal możliwa do wykonania, ale wywołanie poleceń (python, pip, vcd
) będzie wymagało podania ich pełnej ścieżki.
Konieczne jest również zainstalowanie narzędzi do kompilacji języka C++, ponieważ vcd zawiera również moduły napisane w tym języku. W tym celu odwiedzamy stronę: https://visualstudio.microsoft.com/visual-cpp-build-tools/. Podczas instalacji zaznaczamy „Narzędzia kompilacji języka C++”, a w jego ramach dodajemy: „Obsługa C++/CLI dla narzędzi kompilacji…” i „Moduły języka C++ dla narzędzi kompilacji…”.

Jeśli pracujemy na systemie Linux, interesują nas pakiety typowo nazywające się python3, python3-pip i python3-dev (lub python3-devel). Dla przykładu, na systemie Ubuntu instalujemy je poleceniem (obecność pakietu python3-pip wymusza już instalację python3-dev):
sudo apt install python3 python3-pip
Mając zainstalowane te składniki, zarówno na Windows jak i Linux, możemy przystąpić do instalacji narzędzia vcd. W konsoli wpisujemy polecenie:
pip install vcd-cli
Jeśli polecenie nie zostało znalezione, lub mamy zainstalowane różne wersje Pythona (wersje 2 i 3), zamiast pip
należy użyć pip3
.
Jeśli pojawi się komunikat o błędzie: No module named 'setuptools_rust’, najprawdopodobniej pomoże aktualizacja narzędzia pip (lub odpowiednio pip3) komendą pip install -U pip
.

Jeśli instalacja przebiegła prawidłowo, dostępne będzie polecenie vcd. Korzystamy z niego wpisując komendy według wzoru:
vcd AKCJA ARGUMENTY…
Takimi akcjami (zwanymi też czasami sub-poleceniami), z których będziemy korzystać w tym odcinku są: login, vdc, network, gateway, vapp, catalog. Żeby wyświetlić podpowiedź dotyczącą danego sub-polecenia oraz przykłady jego użycia, np. login, wpisujemy:
vcd login -h
Tej akcji użyjemy, żeby uzyskać dostęp do naszego środowiska na Integrated Computing Standard, wpisując:
vcd login cloud.integratedsolutions.pl ORGANIZACJA UŻYTKOWNIK
Zostaniemy zapytani o hasło. Można je również przekazać za pomocą zmiennej środowiskowej VCD_PASSWORD – jeśli jest ona ustawiona, to pytanie o hasło nie pojawi się. Jako efekt tego polecenia, narzędzie vcd uzyska dostęp do środowiska chmurowego. Wszystkie informacje potrzebne do korzystania z tego dostępu zostaną zapisane w pliku .vcd-cli/profiles.yaml, w katalogu domowym użytkownika. I właśnie z tego pliku narzędzie będzie pobierać informacje przy każdym wywołaniu. Warto zwrócić uwagę, że wśród przechowywanych danych znajduje się nazwa aktualnie używanego wirtualnego data center (vDC) – jest tu odzwierciedlony tok postępowania z panelu www, gdzie w danym momencie mamy wyświetlone zasoby tylko jednego vDC. Inną interesującą obserwacją jest to, że w pliku tym nie jest przechowywane hasło, a jedynie token – generowany przez platformę w trakcie akcji login. Uprawnia on do dostępu do środowiska tylko przez pewien czas, co znaczy, że powyższe polecenie po pewnym czasie pracy należało będzie powtórzyć.

Utworzenie przykładowego środowiska zaczniemy od wykreowania sieci. W tym celu należy przełączyć się do vDC, w którym znajduje się router Edge. Nazwy dostępnych vDC wyświetlimy poleceniem:
vcd vdc list
Przełączenia do danego vDC dokonamy wpisując:
vcd vdc use ORGANIZACJA-FLAT_vDC
Następnie wyświetlimy listę routerów Edge dostępnych w obecnie aktywnym vDC, co upewni nas że zostało ono poprawnie wybrane, ale również pozwoli skopiować nazwę i użyć w kolejnych poleceniach. Oczywiście, jeśli routerów Edge jest więcej niż jeden, to w tym wypadku będzie interesował nas ten, którego nazwa wskazuje na dostęp do internetu.
vcd gateway list
Aby utworzyć sieć routed, nazwaną InternalNet, udostępnioną do pozostałych vDC i jednocześnie skonfigurować adresację IP Pools, wydajemy polecenie:
vcd network routed create InternalNet --gateway-name NAZWA_EDGE --subnet 10.1.0.1/24 --shared-enabled --dns1 194.204.152.34 --dns2 194.204.159.1 --ip-range 10.1.0.100-10.1.0.199
Uzyskanie dostępu do internetu z danej sieci wymaga jeszcze skonfigurowania Firewall i NAT. Na tym pierwszym utworzymy prostą regułę przezpuszczającą cały ruch:
vcd gateway services firewall create NAZWA_EDGE --name AllowAll --action accept
Konfiguracja NAT będzie wymagała znajomości publicznych adresów IP dostępnych w organizacji. Może być ich wiele, ale pierwszy z nich, będący głównym adresem publiczny Edge możemy łatwo podejrzeć poleceniem:
vcd gateway info NAZWA_EDGE
Następnie tworzymy regułę NAT, podając odczytany w poprzednim kroku publiczny adres IP:
vcd gateway services nat create-snat NAZWA_EDGE --original-ip 10.1.0.0/24 --translated-ip ADRES_PUBLICZNY --desc "Internet access"
Aby utworzyć maszynę wirtualną, przełączamy się do vDC, w którym mamy pozwalające na to zasoby:
vcd vdc list
vcd vdc use ORGANIZACJA-PaYG_vDC
Najpierw należy utworzyć vApp, ponieważ narzędzie vCD nie pozwala na manipulację maszynami nie zawartymi w vApp (tzw. Standalone VM). Już w momencie tworzenia możemy wybrać sieć, która ma być dostępna wewnątrz vApp:
vcd vapp create ExampleVapp --network InternalNet
Skorzystamy z katalogu pre-instalowanych maszyn wirtualnych dostępnego w Integrated Computing Standard. Pomocne może okazać się wyświetlenie listy katalogów, oraz listy szablonów dostępnych w danym katalogu:
vcd catalog list
vcd catalog list IS-ServiceCatalog
Ostatnim krokiem jest dodanie maszyny z szablonu do vApp. W tym wypadku nazwę szablonu podajemy dwukrotnie – jest to wymagane przez narzędzie na wypadek szablonów opisujących zbiór wielu maszyn. Podajemy również m. in. sieć podłączaną do maszyny, oraz sposób przydziału adresów: IP Pools. Należy zwrócić uwagę, że użycie tego mechanizmu wymaga, aby wybrany był szablon systemu operacyjnego wspierający „Guest OS customization”.
vcd vapp add-vm ExampleVapp "CentOS 8 64bit" "CentOS 8 64bit" -c IS-ServiceCatalog --network InternalNet --ip-allocation-mode pool --target-vm ExampleVM
.

Po wykonaniu tego polecenia powinna powstać maszyna wirtualna posiadająca dostęp do internetu.
Poza vcd, na zarządzanie Integrated Computing Standard z poziomu linii poleceń pozwalają też inne narzędzia takie jak Ansible i Terraform. Ich działaniu i możliwościom przyjrzymy się w dalszych odcinkach wideo przewodnika.
Więcej informacji o usłudze znajdziesz na: https://integratedsolutions.pl/oferta/cloud-dc/chmury-is/