API w chmurze E24Cloud

W ramach projektu zorganizowanego przez firmę Chudowsko razem z firmą E24cloud postanowiłem zbudować aplikację automatyzującą obsługę maszyn wirtualnych w chmurze: tworzenie listowanie, zatrzymywanie, startowanie i usuwanie maszyn wirtualnych przy wykorzystaniu dostępnego API. Zgodnie z informacją z dokumentacji e24  API to jest zgodne z API AWS EC2 w ograniczonym zakresie oczywiście.

Jako że nie po drodze mi z PHP postanowiłem użyć do tego Pythona.   Krótkie poszukiwania dały mi odpowiedź, że najlepiej do tego użyć biblioteki boto3. Biblioteka ta załatwia nam dużo rzeczy związanych z wywołaniem API, każda funkcja z API jest jako oddzielną funkcja obiektu.

Ale od początku, dla tych co nie wiedzą od czego zacząć.

Najpierw należy pobrać Python ze strony.   Prosta sprawa, kilka razy dalej, należy pamiętać aby instalator dodał Pythona do zmiennej path. Można to też zrobić samemu ręcznie po wszystkim. razem z Pythonem instaluje się narzędzie do instalowania pakietów: pip. Otwieramy konsole i w konsoli wpisujemy: pip install boto3.  I możemy zaczynać.

Do zabawy z API potrzebujemy zdefiniować kilka parametrów potrzebnych do połączenia z api:

– klucz api

– sekretny klucz api

– region

– endpoint

Dwa pierwsze możemy pobrać z portalu e24:

image

Regiony mamy dwa do wyboru: eu-poland-1poznan  oraz eu-poland-1warszawa.

Tak soma ma się sytuacja z endpointami: https://eu-poland-1poznan.api.e24cloud.com oraz https://eu-poland-1warszawa.api.e24cloud.com

Zacznijmy od wylistowania instancji:

import boto3
ec2 = boto3.resource('ec2',
aws_access_key_id='test_key',
aws_secret_access_key='test_secret',
region_name = 'eu-poland-1poznan',
endpoint_url ='https://eu-poland-1poznan.api.e24cloud.com'



intsances = ec2.instances.all()
for ins in intsances:
print('Instance: Id: {0} state: {1} type:{1} image id:{2} image_id:{3}'.format(ins.id, ins.state, ins.instance_type, ins.image_id))

W pierwszej linii ładujemy bibliotekę boto3, w drugiej tworzymy obiekt resourca ec2 który daje nam dostęp do funkcji które pozwalają nam operować na instancjach.  Następnie pobieramy pełną listę instancji i wypisujemy ją na ekran.  Jeżeli nie chcemy za każdym razem podawać takich rzeczy jak  klucze API i region możemy je zdefiniować w pliku konfiguracyjnym albo w zmiennych systemowych.

Niestety nie da się tak zrobić z endpointem.

O bibliotekę boto3 oparty jest CLI AWSa.

Poza wylistowaniem instancji możemy również:

  • wylistować obrazy
  • stworzyć instancję
  • wystartować instancję
  • zastopować instancję
  • – usunąć instancję

oraz wile innych bardziej zawansowanych.

W trakcie prac nad projektem wyszło parę problemów, część z nich już zostało poprawionych a nad niektórymi pracują programiści z e24.

Na Githuba wrzuciłem narzędzie którego używałem do testowania api.

Jest to mały skrypcik który pozwala operować na instancjach zarówno w E24cloud jak w AWS. Aby zacząć z nim prace należy pobrać zawartość repozytorium a następnie zdefiniować dane dostępowe do E24 oraz AWS w pliku konfiguracyjnym: C:\Users\<USER>\.aws\credentials

[e24]
aws_access_key_id=e24_key
aws_secret_access_key=e24_secret
region=eu-poland-1warszawa

[aws]
aws_access_key_id=aws_key
aws_secret_access_key=aws_secret
region=eu-central-1

Aby uruchomić aplikacje odpalmy skrypt e24cli.py i możemy zaczynać.  Po odpaleniu mamy możliwość wprowadzania komend. Pierwsze co musimy zrobić jest wybór profilu. Do tego służy komenda “set_profile” z nazwą odpowiedniego profilu e24 lub aws.  Aktualnie jest możliwość

  • wylistowania dostępnych obrazów
  • wylistowania listy instancji
  • utworzenia instancji – konieczne jest  podanie dwóch parametrów: obrazy i typu instancji
  • wystartowanie instancji – konieczne jest podanie id instancji
  • zatrzymanie instancji – konieczne jest podanie id instancji
  • usunięcie instancji – konieczne jest podanie id instancji

Nie ma tego za dużo ale łatwo można zdefiniować nowe komendy. Wystarczy w pliki commands.py dodać odpowiednią definicje a pliku func.py implementację funkcji:

cmd_def[„<nazwa komendy >”] = [{„<nazwa parametru>”:{<słownik parametrów dla funkcji pasera>}} , <implementacja funkcji>].

Zalecam rozwagę z zabawą tym narzędziem na produkcyjnym środowisku.

Tomasz Pycia

Programista z dziesięcio letnim stażem. Specjalizuje się głownie w bazach danych i oprogramowaniu dla firm.

More Posts - Website

Follow Me:
LinkedIn

«

One comment on “API w chmurze E24Cloud”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *