Aufbau einer Cloud-Infrastruktur mit dem Python SDK

Bei diesem Text handelt es sich um eine maschinell erstellte Übersetzung. Eine überarbeitete Version ist in Planung.

Das Python SDK für unsere API ist die erste Bibliothek, die exklusiv für unsere REST API entwickelt wurde und diese unterstützt. Diese Bibliothek unterscheidet sich etwas von unserem bisherigen Open-Source-Beitrag an die Python-Community (Unterstützung der beliebten Libcloud einer Multi-Cloud-Bibliothek und Teil der Apache-Community von Top-Level-Projekten), da sie sowohl abstrahiert als auch eine vollständige Abdeckung aller gängigen API-Funktionen bietet.

Die Bibliothek ist sehr spezifisch für uns und bietet erweiterte Funktionen, die Sie vielleicht nicht in einer anderen cloud-agnostischen Multi-Cloud-Bibliothek wie jclouds oder Libcloud finden. Wir sind sehr stolz auf diese Neuerung bei Python!

Warum Python?

Obwohl Python nicht die Nummer eins bei der Nutzung ist, ist es in der Entwicklergemeinde erstaunlich beliebt, besonders bei DevOps-Profis, die Cloud-Computing-Infrastrukturen automatisieren. Laut IEEE liegt es glücklich auf Platz vier, aber seine Popularität nimmt nur weiter zu, da es auch die meistgenutzte Sprache in den Informatikabteilungen unserer Standorte ist. Python ist effizient, und für eine interpretierte Sprache - auch bekannt als eine Sprache, deren Programm nicht vom Computer kompiliert wird, sondern als Anweisungen des Entwicklers gegeben wird– it is quite fast. es ist ziemlich schnell. Die Sprache wird weitgehend unterstützt, wobei  PyPi 57K-Pakete anbietet. Wenn Sie all diese Fakten zusammenfassen, sehen Sie, warum wir Python als erstes Release mit unserer REST-API gewählt haben.

 

Übersicht

Die Bibliothek stellt eine Reihe von Funktionen zur Verfügung, die alle auf die REST-API zurückgreifen. Eine vollständige Dokumentation zu den verschiedenen Aspekten der neuen API finden Sie im Python-Repository und hier. Wir haben den Ansatz gewählt, den Code einfach und pythonisch zu halten, aber die Bibliothek unterstützt sowohl einfache als auch komplexe Anfragen. Dies wird in unseren Mustern näher erläutert.

Code-Beispiele

Sobald Sie unserem Erste-Hilfe-Leitfaden gefolgt sind, sollten Sie das Modul in Ihrer Umgebung verfügbar haben. Sie können einfache Anfragen durchführen, wie z.B. das Erstellen eines leeren virtuellen Rechenzentrum.

from profitbricks.client import ProfitBricksService
from profitbricks.client import Datacenter, Volume, Server

client = ProfitBricksService(
    username='username', password='password')

i = Datacenter(
    name='datacenter1',
    description='My New Datacenter',
    location='de/fkb'
    )

response = client.create_datacenter(datacenter=i)

Aber das macht weder Spaß noch bringt es viel. Wie bereits erwähnt, unterstützt die Bibliothek auch komplexe Kreationen. Sie können einen Server mit mehreren NICs erstellen und ihn dann in einer einzigen Anfrage wie dieser an ein Boot-Volume und ein Datenvolumen anhängen:

from profitbricks.client import ProfitBricksService
from profitbricks.client import Server, NIC, Volume

datacenter_id = '700e1cab-99b2-4c30-ba8c-1d273ddba022'
volume_id1 = '700e1cab-99b2-4c30-ba8c-1d273ddba023'
volume_id2 = '800e1cab-99b2-4c30-ba8c-1d273ddba024'
boot_volume_id = '800e1cab-99b2-4c30-ba8c-1d273ddba024'

client = ProfitBricksService(
    username='username', password='password')

attach_volumes = [volume_id1, volume_id2]
nic1 = NIC(
    name='nic1',
    ips=['10.2.2.3'],
    dhcp='true',
    lan=1,
    firewall_active=True,
    )

nic2 = NIC(
    name='nic2',
    ips=['10.2.3.4'],
    dhcp='true',
    lan=1,
    firewall_active=True,
    )

nics = [nic1, nic2]

i = Server(
    name='server1',
    ram=4096,
    cores=4,
    boot_volume_id=boot_volume_id,
    attach_volumes=attach_volumes,
    nics=nice
    )

response = client.create_server(
    datacenter_id=datacenter_id,
    server=i)

# Or you can create a server with two new data volumes:

from profitbricks.client import ProfitBricksService
from profitbricks.client import Server, NIC, Volume

server_id = '700e1cab-99b2-4c30-ba8c-1d273ddba023'
datacenter_id = '700e1cab-99b2-4c30-ba8c-1d273ddba022'
volume_id = '700e1cab-99b2-4c30-ba8c-1d273ddba044'
image_id = '226ed8c0-a2fe-11e4-b187-5f1f641608c8'

client = ProfitBricksService(
    username='username', password='password')

volume1 = Volume(
    name='volume11',
    size=56,
    image=image_id,
    bus='VIRTIO'
    )

volume2 = Volume(
    name='volume21',
    size=56,
    image=image_id,
    bus='VIRTIO'
    )

create_volumes = [volume1, volume2]

i = Server(
    name='server12',
    ram=4096,
    cores=4,
    create_volumes=create_volumes
    )

response = client.create_server(
    datacenter_id=datacenter_id, server=i)

Zusammenfassung

Die Python-Bibliothek schafft eine leistungsfähige Schnittstelle zur REST-API. Mit unbegrenzten privaten Netzwerken kann ein Entwickler die Erstellung von Cluster-Umgebungen automatisieren, in denen verschiedene Dienste in verschiedene Netzwerke unterteilt sind. Alle Volumes werden auf einem ultraschnellem Plattensubsystem erstellt, das ein überzeugendes Argument für Dinge wie nette Big Data Farmen ist, bei denen I/O eine große Rolle spielt; unsere Bibliothek ist hervorragend geeignet, um diese und andere Arten von Build Outs automatisch und maßstabsgetreu durchzuführen.

Wir werden die eine Version des Python SDK weiter verbessern und auf dieser Version aufbauen. Wir begrüßen auch Beiträge zurück in das Projekt und, wie immer, können Sie sich mit der Community drüben auf der Website von DevOps Central Community-Website.