2017
Mai
17
2017

Ansible Cloud Module und Libcloud-Integration

Im November 2016 haben wir unsere API vorgestellt, mit der Sie Ihre Cloud-Server automatisiert verwalten können – direkt aus Ihrer eigenen Applikation oder Deployment-Umgebung heraus. Mit Ansible und Libcloud geht das nun noch komfortabler: diese zwei wichtigen Open-Source-Projekte unterstützen unsere API jetzt von Haus aus.

Ansible Cloud Module

Ansible ist eine Plattform für die Orchestrierung und das Konfigurationsmanagement von Applikationen, Servern (insbesondere Unix/Linux) und ganzer Serverumgebungen. Neben zahlreichen anderen Modulen ermöglicht Ansible mit den Cloud Modules die Anbindung an verschiedene Cloud-Anbieter – seit der Version 2.3.0 ist damit auch die Verwaltung von Servern bei cloudscale.ch möglich.

Das Erstellen eines neuen Servers wird so zum Kinderspiel:

- name: Start cloudscale.ch server
  cloudscale_server:
    name: my-shiny-cloudscale-server
    flavor: flex-4
    image: debian-8
    ssh_keys: ssh-rsa XXXXXXXXXX...XXXX ansible@cloudscale.ch

Apache Libcloud

Apache Libcloud ist eine Python-Bibliothek, welche die APIs verschiedener IaaS-Provider abstrahiert. Libcloud erlaubt es, über eine einheitliche Python-Syntax auf die Ressourcen diverser Cloud-Anbieter zuzugreifen. Seit der Version 1.5.0 enthält Libcloud auch einen Treiber für die cloudscale.ch API, um damit direkt aus Ihrem Code heraus Server auf unserer Infrastruktur zu verwalten.

Mit Python und Libcloud erstellen Sie neue Server mit nur ein paar Zeilen Code:

from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver

cls = get_driver('cloudscale')
driver = cls(key='XXXXX')

name = 'my-shiny-cloudscale-server'
size = [ s for s in driver.list_sizes() if s.id == 'flex-4' ][0]
image = [ i for i in driver.list_images() if i.id == 'debian-8' ][0]
ssh_keys = [ open('id_rsa.pub').read().strip() ]

node = driver.create_node(name=name,
                          size=size,
                          image=image,
                          ex_create_attr={'ssh_keys':ssh_keys})

Zwei Tools, unterschiedliche Einsatzgebiete

Ansible und seine sogenannten Playbooks dienen dazu, eine Abfolge von Tasks zum Systemmanagement zu definieren und auszuführen. Ansible hat damit klar definierte Einsatzbereiche: Orchestrierung von IT-Abläufen, Deployment von Applikationen oder Verwaltung der Systemkonfiguration.

Mit Ansible und dem Cloud Module ist es beispielsweise möglich, den gesamten Vorgang zum Aufbau und Betrieb hochverfügbarer Webservices bei cloudscale.ch zu automatisieren – vom Erstellen der virtuellen Server über das Deployment der Applikationen bis hin zur unterbrechungsfreien Wartung bei System- oder Applikationsupdates.

Im Gegensatz dazu ist Libcloud eine Python-Bibliothek. Mit Python als universeller Programmiersprache lassen sich unterschiedlichste Applikationen implementieren. Libcloud kommt also überall dort zum Zug, wo aus Python-Code heraus auf Cloud-Angebote zugegriffen werden soll. Alle darin integrierten Cloud-Provider werden automatisch unterstützt, ohne dass der Entwickler eigens Code für deren spezifische Anbindung schreiben muss.

Libcloud eignet sich also überall dort, wo Sie bereits Python einsetzen, z.B. direkt integriert in Ihre (Web-)Applikation für mehr Skalierbarkeit, oder zur Erweiterung bestehender Deployment- und Monitoring-Tools.

Was bringt die Zukunft

Wir arbeiten permanent an neuen Features für unsere Cloud-Infrastruktur und unsere API. Um diese auch laufend in Libcloud und Ansible zu integrieren arbeiten wir mit den jeweiligen Open-Source-Communities zusammen. So ist zum Beispiel für das kürzlich eingeführte "Floating IP" Feature eine Integration in Ansible geplant.


Ein häufig genannter Vorteil von Cloud-Servern ist, dass sie mit wenigen Mausklicks bereitgestellt werden können. Gehen Sie einen Schritt weiter: Automatisieren Sie Ihr Server-Deployment mit Ansible oder Libcloud – ganz ohne Mausklick.

Server-Setup leicht gemacht!
Ihr cloudscale.ch-Team


PS: Wir denken, dass eine Integration der cloudscale.ch API in Terraform ebenfalls sinnvoll wäre. Was halten Sie davon?

Zurück zur Übersicht