Seite wählen

OpenNebula Fog Provider

von | Mai 27, 2014 | IT Automation, DevOps, Technology, Web Services, OpenNebula, Linux

Letzte Woche habe ich unser Foreman OpenNebula Plugin vorgestellt. Die Kommunikation zwischen beiden Systemen übernimmt der OpenNebula Fog Provider. Natürlich kann man den Provider auch unabhängig von Foreman benutzen. Im kurzem Beispiel unten wird eine Verbindung zur One-RPC Schnittstelle aufgebaut, ein neues VM Gerüst erstelle und mit einem Template aus OpenNebula befüllt und erweitert. Und am Ende wird die VM natürlich noch gestartet.
Zuerst müssen wir aber natürlich die Source holen und die benötigten Ruby gems installieren. Das erledigt git und bundler für uns (apt-get install git bundler).

$ git clone https://github.com/netways
$ cd fog
$ bundle install

Zum testen starten wir eine interaktive Ruby Konsole (irb) und binden die Fog Bibliothek mit ein.

$ irb
> require './lib/fog.rb'

Die folgenden Befehle werden alle in der irb Konsole ausgeführt!
Innerhalb der irb öffnen wir eine Verbindung zu OpenNebula und lassen uns die vorhanden Templates (Flavors) geben.

# connect to your one rpc
con = Fog::Compute.new(
    {
      :provider => 'OpenNebula',
      :opennebula_username => 'user',
      :opennebula_password => 'password',
      :opennebula_endpoint => 'http://oned.domain:2633/RPC2'
    }
  )

servers.new erstellt ein neues Gerüst einer VM. Dieses enthält die verschiedenen Attribute der VM.

# create a new vm (creates the object, the vm is not instantiated yet)
newvm = con.servers.new

Die VM enthält auch ein Attribut flavor, in dem ein OpenNebula Template gespeichert werden kann. In diesem Beispiel wir das Template mit der ID 4 verwendet.

# set the flavor of the vm
newvm.flavor = con.flavors.get 4
# set the name of the vm
newvm.name = "MyVM"

Attribute aus dem Template können überschrieben werden, bzw. müssen gesetzt werden, falls diese im Template nicht definiert wurden.

# set cores and memory (MB)
newvm.flavor.vcpu = 2
newvm.flavor.memory = 256

Im OpenNebula muss ein Interface einem Netzwerk zugewiesen werden. Zuerst wird ein vorhandenes OpenNebula Netzwerk geholt und an ein neu erstelltes Interface zugewiesen.

# create a new network interface attached to the network with id 1 and virtio as driver/model
network = client.networks.get(1)
nic = con.interfaces.new({ :vnet => network, :model => "virtio"})

Das neu erstellte Interface wird dem VM-Gerüst hinzugefügt und mit der Methode save wird die VM gespeichert, d.h. gestartet.

# Attach the new nic to our vm
newvm.flavor.nic = [ nic ]
# instantiate the new vm
newvm.save
Achim Ledermüller
Achim Ledermüller
Senior Manager Cloud

Der Exil Regensburger kam 2012 zu NETWAYS, nachdem er dort sein Wirtschaftsinformatik Studium beendet hatte. In der Managed Services Abteilung ist er für den Betrieb und die Weiterentwicklung unserer Cloud-Plattform verantwortlich.

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema IT Automation | DevOps | Technology | Web Services | OpenNebula | Linux

Kritischer Fehler in Puppet Version 7.29.0 und 8.5.0

Eine Warnung an alle Nutzer von Puppet, aber auch Foreman oder dem Icinga-Installer, die Version 7.29.0 und 8.5.0 von Puppet enthält einen kritischen Fehler, der die Erstellung eines Katalogs und somit die Anwendung der Konfiguration verhindert. Daher stellt bitte...

CfgMgmtCamp 2024: Unser Rückblick

Vergangene Woche fuhr ein Teil unseres Teams bei NWS bis nach Ghent in Belgien, um am ConfigManagementCamp 2024 teilzunehmen. Hierbei handelt es sich um eine kostenlose Konferenz, direkt im Anschluss an die FOSDEM, was Jahr für Jahr für ein großes Publikum aus Fans...

Kibana Sicherheits-Updates: CVSS:Critical

Und täglich grüßt das Murmeltier. Nein nicht ganz. Heute ist es  aus der Elastic Stack Werkzeugkiste Kibana, für das es ein wichtiges Sicherheits-Update gibt. Es besteht auf jeden Fall Handlungsbedarf! IMHO auch wenn ihr die "Reporting" Funktion deaktiviert habt. Der...