Seite wählen

NETWAYS Blog

OpenNebula Fog Provider

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.

Weekly Snap: OpenNebula Conf & Puppet, Foreman & Fog

weekly snap19 – 23 May turned the spotlight on OpenNebula, and offered new hardware alongside tips for users of Puppet and its related tools.
Georg began the week with a new product in our hardware store: CEP CT63 USB Powered, ideal for SMS alerts in combination with Icinga / Nagios.
Eva then announced the OpenNebula Conf 2014 Call for Papers, and Achim showed how to use Foreman and Fog to automate VM provisioning in OpenNebula.
Lennart too had his configuration fun, fiddling with a Tomcat XML file using Puppet.
Finally, the team at Netways treated Bernd to a burger-cooking (and eating) course.

OpenNebula Conf 2014: Jetzt einsteigen! Jetzt mit dabei sein!

OpenNebulaConf_CFP_July
Hochverehrte Leserschaft,
es ist wieder so weit – wir möchten zum Tanz auf den Referentenpulten der nächsten OpenNebula Conf in Berlin bitten. Freilich nur im übertragenen Sinne, denn alles andere wäre wohl mit einem zu hohen Verletzungsrisiko verbunden und niemand plant ernsthaft sich hier sportlich zu betätigen.
Bis zum 16. Juli könnt ihr euren Vortragsvorschlag hier einreichen. Und wie so oft ist im gleichen Zeitraum auch der Supersonderpreis für die Teilnehmertickets zu haben.
Es heißt also: Jetzt einsteigen! Jetzt mit dabei sein!

Foreman, Fog und OpenNebula

Jeder der hin und wieder einen Blick in unseren Blog wirft hat vermutlich festgestellt, dass Foreman das bevorzugte Tool zur Verwaltung unserer IT-Infrastruktur ist und uns in Sachen Provisionierung und Configuration Management viel Arbeit abnimmt. Zur Verwaltung unserer virtuellen Maschinen setzen wir auf OpenNebula, welches mit eigener Oberfläche, CLI und XML-RPC alle Möglichkeiten zum Erstellen und Verwalten von virtuelle Maschinen bietet. Schön wäre es natürlich wenn Foreman über die OpenNebula API virtuelle Maschinen anlegen und löschen kann, so dass man zur Provisionierung neuer VMs nur noch im Foreman klicken muss. Hier kommt Fog ins Spiel. Foreman verwendet die Fog Bibliothek um andere Provider wie libvirt, ovirt etc. anzusteuern. Für uns war das eine gute Ausgangslage um Foreman und OpenNebula zusammenzuführen und einen eigenen OpenNebula Fog Provider zu schreiben welcher dann von unserem Foreman-One Plugin verwendet.
Das Ergebnis habt ihr ja schon letzte Woche im VideoBlog gesehen. Aber wie installiert man das Ganze jetzt?
Als erstes holt man sich die aktuellen stabilen Foreman Sourcen, fügt noch unser foreman-one Plugin hinzu und installiert Foreman wie in der Doku beschrieben:

git clone https://github.com/theforeman/foreman.git
cd foreman
git co -b 1.5-stable origin/1.5-stable

Um im Foreman ein Plugin zu installieren fügt man seiner lokalen Gemfile folgende Zeile hinzu:

$ cat bundler.d/Gemfile.local.rb
gem 'foreman_one',  :git => "https://github.com/netways/foreman-one.git", :branch => "master"
gem "fog", :git => "https://github.com/fog/fog.git", :branch => "master"

Die zweite Zeile stellt sicher, dass unsere Fog Version verwendet wird. Dies ist solange nötig bis das Fog Projekt unseren OpenNebula Provider mit aufnimmt. Damit bundle beim nächsten Schritt keinen Konflikt erkennt muss man folgende Zeile aus bundler.d/fog.rb entfernen:

gem 'fog', '~> 1.21.0'

Von jetzt an folgt man nur noch der offiziellen Foreman Dokumentation zum installieren einer Testumgebung:

cp config/settings.yaml.example config/settings.yaml
cp config/database.yml.example config/database.yml
gem install bundler
bundle install
rake db:migrate
rake db:seed assets:precompile locale:pack
rails server

Auf http://localhost:3000 (admin/changeme) findet man jetzt die neue Foreman Version und unter Infrastruktur -> Computer Resources klickt man ohne große Mühen seine OpenNebula Instanz hinzu. Das seht ihr aber besser im VideoBlog.
Ich würde mich über Feedback jeder Art freuen! Bitte probiert den OpenNebula Provider aus und haltet euch mit Kritik nicht zurück! Auch würde uns interessieren wie ihr eure VMs mit OpenNebula und Foreman provisioniert und welche Features hier aktuell noch fehlen, die euch das Leben leichter machen würden!
Infos und den aktuellen Stand findet ihr an verschiedenen Stellen. Der Quelltext ist natürlich am einfachsten aus dem Netways GitHub Repo zu bekommen. Neuerungen und Beispiele wie man den Fog OpenNebula Provider verwendet gibt es natürlich hier im Blog und in den Readme Dateien.
Weiter Information findet ihr auch noch auf den Mailinglisten, Bugtrackern etc.

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.

Weekly Snap: Foreman & OpenNebula, Bash Aliases & Linux Tag 2014

weekly snap12 – 16 May offered tips for configuration in the cloud and making Bash more convenient, plus a couple of presentations from Linux Tag.
Thilo started by introducing our Foreman–OpenNebula integration in a Youtube video while Matthias shared his shortcut aliases for Bash.
Markus, Bernd and Dirk followed with a few photos from Linux Tag 2014 and slides from their presentations on Icinga, Logstash and Foreman.