•  
  •  
  •  
  •  
  •  
Platform-as-a-Service

Wie installiere ich Cloud Foundry lokal?

Mit Cloud Foundry erhält jeder die Möglichkeit eine PaaS selbst auszuprobieren. Worauf Sie beim Installieren achten müssen.

02.01.2017Text: bbv0 Kommentare
Bosh-Architektur
Quelle: bosh.io
  •  
  •  
  •  
  •  

IT-Unternehmen stehen immer vor der selben Herausforderung: bestimmte Services möglichst schnell und in hoher Qualität ihren Kunden zur Verfügung zu stellen. Durch iterative Entwicklungsprozesse, die allen agilen Methoden gemein sind, werden in der Regel immer häufiger IT-Artefakte dem Kunden ausgeliefert.

Dazu müssen die IT-Architekturen allerdings erst so umgesetzt werden, dass einzelne Teile einer Applikation flexibel ausgetauscht und unabhängig voneinander ausgeliefert werden können. Es ist also wünschenswert, wenn man Anwendungen wie Lego-Bausteine ständig reorganisieren und mit neuen Bausteinen bestücken könnte.

Eine Platform as a Service (PaaS) kann Softwareentwicklern helfen, Applikationen in der Cloud zu betreiben, ohne dass sie sich dabei um die Infrastruktur Gedanken machen müssen. Durch eine PaaS werden IT-Umgebungen standardisiert und deren Komplexität deutlich reduziert, indem Softwareentwickler nicht mehr die darunterlegende Infrastruktur wie Netzwerk, Server, Betriebssystem oder Datenbanken verwalten müssen, da dies die PaaS automatisch übernimmt.

Mit Cloud Foundry (CF) erhält jeder die Möglichkeit  eine PaaS selbst auszuprobieren. Ziel dieses Posts ist eine Anleitung um sich CF auf dem lokalen Rechner zu installieren. CF wird dabei auf einer VM (Virtualbox) installiert, um so eine Test-App vom lokalen Rechner mit dem CF CLI nach CF in die VM zu pushen.

Jetzt aber los!

Tools und Abhängigkeiten installieren

Neueste Versionen installieren bzw. updaten:

Ruby

1
2
3
4
5
<br />
[bash light="true"]$ ruby -v<br />
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]<br />
# (BOSH CLI benötigt Ruby 2+)<br />
[/bash]

Vagrant

1
2
3
<br />
[bash light="true"]$ vagrant -v<br />
Vagrant 1.9.0[/bash]

VirtualBox

1
2
[bash light="true"]$ VBoxManage --version<br />
5.1.10r…[/bash]

BOSH-Lite installieren

Für die lokale Infrastruktur werden wir BOSH-Lite installieren. BOSH ist ein Projekt, das Release-Engineering, Deployment und Lifecycle-Management von kleinen und großen Cloud-Applikationen vereint. BOSH-Lite ist eine pre-build Vagant Box die den Director enthält. Durch eine Containerisierung können so unterschiedliche VMs emuliert werden. In unserem Fall verwenden wir Virtualbox. Unterhalb in der Abb. sind die BOSH Komponenten visualisiert.

Bosh-Architektur
Quelle: bosh.io

Der Director ist die zentrale Orchestrierungs-Komponente in BOSH. Der Director steuert die VM-Erstellung und das Deployment, sowie andere Software- und Service-Lifecycle-Abläufe. Um mit dem BOSH Director interagieren zu können müssen wir allerdings zuerst das BOSH CLI installieren.

1
[bash light="true"]$ gem install bosh_cli --no-ri --no-rdoc[/bash]

Für die weitere Installation habe ich in meinem Homeverzeichnis ein /workspace Verzeichnis angelegt in dem ich alle CF Projekte ablege. Als nächstes klonen wir aus dem Github das BOSH-Lite Repository in unser workspace Verzeichnis.

1
2
3
[bash light="true"]$ cd ~/workspace<br />
$ git clone https://github.com/cloudfoundry/bosh-lite<br />
$ cd bosh-lite[/bash]

Danach starten wir Vagrant aus dem Root-Verzeichnis des geklonten Repositories, in dem sich das Vagrantfile befindet. Bei dem Befehl vagrant up werden die neuesten BOSH-LITE Komponenten aus der Vagant Cloud automatisch heruntergeladen.

1
[bash light="true"]$ vagrant up --provider=virtualbox[/bash]

Falls der Rechner neu gestartet oder in den Ruhezustand versetzt werden muss, sollte die VM mit dem Befehl vagrant suspend pausiert und mit vagrant resume wieder gestartet werden. Befindet man sich hinter einem Proxy, muss man beide IP Adressen der privaten VMs ausschliessen (optionaler Schritt):

1
 [bash light="true"]$ export no_proxy=xip.io,192.168.50.4[/bash]

Um sicherzustellen dass die BOSH CLI auch auf unserem installieren BOSH Director kommunizieren kann, müssen wir BOSH die IP Adresse (die IP Adresse 192.168.50.4 ist eine Default IP die beim hochfahren des Vagrant Containers in der Virtualbox erstellt wird) mit dem Befehl bosh target übergeben. Die default Benutzerdaten sind admin/admin.

1
2
3
4
5
 [bash light="true"]$ bosh target 192.168.50.4 lite</p>
<p>Target set to 'Bosh Lite Director'<br />
Your username: admin<br />
Enter password: *****<br />
Logged in as 'admin'[/bash]

Wir fügen noch die Route Einträge in die lokale Routing Tabelle hinzu. Somit erhalten wir einen direkten Zugriff auf den Warden Container, auch wenn die Internetverbindung resettet wird.

1
[bash light="true"]$ bin/add-route[/bash]

Jetzt können wir die BOSH Stemcell hochladen. Eine Stemcell ist ein vor konfiguriertes System-Images das ein OS und Hilfsprogramme beinhaltet. Eine Liste von BOSH Stemcells kann man hier finden (https://www.bosh.io/stemcells). Da unser Vagrant Container ein Ubuntu OS provisioniert verwenden wir die Bosh Warden – Ubuntu trusty stemcell:

1
 [bash light="true"]$ bosh upload stemcell bosh-warden-boshlite-ubuntu-trusty-go_agent —skip-if-exists[/bash]

Um den Upload zu überprüfen kann man sich eine Liste der installierten Stemcells durch den Bosh CLI anzeigen lassen:

1
 [bash light="true"]$ bosh stemcells[/bash]

CF Installieren

Nun sind wir bereit CF zu deployen.
Dies kann mit einem Deployment-Script durchgeführt werden:

1
 [bash light="true"]$ ~/workspace/bosh-lite/bin/provision_cf[/bash]

(Diese Methode hat zum Zeitpunkt, als der Blogpost erstellt wurde, nicht funktioniert. Beim Hochladen der „bosh-warden-ubuntu“ Stemcell ist der Upload bei 96% stehengeblieben und das Script wurde nicht weiter ausgeführt.)

Es ist aber möglich die Installation auch manuell auszuführen. Dazu holen wir uns das CF Project aus Github indem wir es auf den Rechner klonen.

1
2
3
<br />
[bash light="true"]$ cd ~/workspace<br />
$ git clone https://github.com/cloudfoundry/cf-release.git[/bash]<br />

Um sicherzugehen das alle Module und Submodule auf dem neuesten Stand sind müssen wir für das Projekt einen Update vornehmen (dies könnte etwas länger dauern).

1
2
[bash light="true"]$ cd ~/workspace/cf-release<br />
$ ./scripts/update[/bash]

Nach dem klonen bzw. updaten des CF Projekts müssen wir noch zwei Scripts installieren die in der CF Version enthalten sind und beim erstellen des Deployment-Manifest benötigt werden.

Bundler installieren. Bundler ist ein Ruby gem Management Tool.

1
 [bash light="true"]$ gem install bundler[/bash]

Wir überprüfen ob Bundler korrekt installiert ist und rufen die Version auf:

1
2
 [bash light="true"]$ bundler -v<br />
Bundler version 1.13.6[/bash]

Spiff installieren. Spiff ist ein Tool mit dem YAML Dateien zusammengefügt werden können. Abhängig vom Betriebssystem Spiff einfach herunterladen und auf den Rechner entpacken. In unserem Fall ist es das Home Verzeichnis.

1
2
3
4
<br />
[bash light="true"]$ cd ~<br />
$ mkdir bin<br />
$ mv ~/Downloads/spiff ~/bin[/bash]

Spiff muss in der Konsole verfügbar sein. Dazu fügen wir Spiff als $PATH. z.B. der .bash_profile hinzu.

1
2
<br />
[bash light="true"]export PATH="$PATH:$HOME/bin"[/bash]

Durch denn Versions-Befehl kann man die Korrektheit der Installation überprüfen:

1
2
3
<br />
[bash light="true"]$ spiff -v<br />
spiff version 1.0.7[/bash]

Nun sind wir bereit die Deployment Manifest Datei zu generieren. Die Manifest Datei ist eine YAML Datei in der die einzelnen Komponenten und Eigenschaften des Deployments definiert sind. Wird ein neues Deployment mit dem CLI eingeleitet, erhält der Director eine Version des Deployment Manifests und erstellt anhand dessen ein neues Deployment.

1
2
3
<br />
[bash light="true"]$ cd ~/workspace/cf-release<br />
$ ./scripts/generate-bosh-lite-dev-manifest[/bash]

Das generierte Manifest wird automatisch hier abgelegt:

1
2
<br />
[bash light="true"]$ ls -la ~/workspace/bosh-lite/deployments/cf.yml[/bash]

Damit wir CF mit BOSH deployen können müssen wir CF nach BOSH hochladen. Dies geschieht wieder durch eine YAML Datei, welche eine Representation des CF Releases darstellt. Das neueste Release von CF ist 248.

1
2
 [bash light="true"]$ ls -la ~/workspace/cf-release/releases/<br />
$ bosh upload release cf-248.yml[/bash]

Zeit zum deployen. Dazu sagen wir BOSH wo sich die Deployment Datei befindet.

1
2
 [bash light="true"]$ cd ~/workspace/bosh-lite/deployments/cf.yml<br />
$ bosh deployment cf.yml[/bash]

Wir überprüfen das Deployment mit dem Befehl bosh vms.

1
2
<br />
[bash light="true"]$ bosh vms[/bash]

Dieser Befehl bietet einen Überblick über die virtuellen Maschinen, die BOSH als Teil des aktuellen Deployments verwaltet. Der Zustand jeder VM sollte als laufend angezeigt werden.

CF CLI installieren

Der CF CLI ist der offizielle Command Line Client für Cloud Foundry. Ein Tool mit dem Applikationen verwaltet und nach CF deployed werden können.

Mac OS X
Die einfachste Variante, sich CF CLI auf dem MAC OS X System zu installieren, ist mit dem Homebrew Paketmanager. (http://brew.sh/index_de.html).

1
2
 [bash light="true"]$ brew tap cloudfoundry/tap<br />
$ brew install cf-cli[/bash]

Debian und Ubuntu

1
2
3
4
 [bash light="true"]$ wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -<br />
$ echo "deb http://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list<br />
$ sudo apt-get update<br />
$ sudo apt-get install cf-cli[/bash]

Enterprise Linux und Fedora

1
2
3
<br />
[bash light="true"]$ sudo wget -O /etc/yum.repos.d/cloudfoundry-cli.repo https://packages.cloudfoundry.org/fedora/cloudfoundry-cli.repo<br />
$ sudo yum install cf-cli[/bash]

 Installer für Windows:

https://cli.run.pivotal.io/stable?release=windows64&source=github

CF CLI sollte bei der Frage nach der Version so einen ähnlichen Output liefern.

1
2
3
<br />
[bash light="true"]$ cf -v<br />
cf version 6.22.2+a95e24c-2016-10-27[/bash]

Wenn man möchte kann man die Sprache im CF-CLI wählen, z.B.:

1
2
<br />
[bash light="true"]$ cf config --locale de-DE[/bash]

CF Konfigurieren

Zuerst loggen wir uns in CF ein. Die default Zugangsdaten sind admin/admin.

1
 [bash light="true"]$ cf login api --skip-ssl-validation api.bosh-lite.com[/bash]

Um unsere Test-App pushen zu können müssen wir zunächst eine Organisation und einen Space erstellen.

1
2
3
<br />
[bash light="true"]$ cf create-org bbv<br />
$ cf create-space development[/bash]

Man kann alles mit dem Admin Account testen, es ist jedoch ratsam einen eigenen Benutzer zu erstellen.

1
2
<br />
[bash light="true"]$ cf create-user USERNAME PASSWORD[/bash]

Dem erstellten Benutzer weisen wir eine Organisation und die Role Orgmanager zu.

1
 [bash light="true"]$ cf set-org-role USERNAME bbv OrgManager[/bash]

Ausserdem weisen wir dem erstellten Benutzer auch einen Space und die RoleSpaceDeveloper zu

1
2
<br />
[bash light="true"]$ cf set-space-role USERNAME bbv development SpaceDeveloper[/bash]<br />

Zuletzt verknüpfen wir die gegenwärtige Login mit der Organisation und dem Space.

1
2
3
4
5
6
<br />
[bash light="true"]$ cf target -o "bbv" -s "development"<br />
API-Endpunkt: https://api.bosh-lite.com (API-Version: 2.65.0)<br />
Benutzer: USERNAME<br />
Organisation: bbv<br />
Bereich:development[/bash]<br />

Test-App pushen

Nun sind wir bereit unsere erste Applikation nach CF zu pushen. Unsere Test-App ist eine PHP Anwendung in Form von einer PHP-Info Seite. Dazu erstellen wir in unserem workspace Verzeichnis ein Projekt-Ordner test-app/ und legen eine index.php Datei an in der wir dieses Codesnippet einfügen:

1
2
<br />
[php light="true"]<?php phpinfo(); ?>[/php]

Zum deployen der Applikation wechseln wir ins Projektverzeichnis und führencf push aus wobei Deployment der App

1
2
3
<br />
[bash light="true"]$ cd ../test-php<br />
$ cf push testApp[/bash]<br />

Dem Console-Log ist zu entnehmen, dass erst die Route und das Bindung erstellt wird. Anschliessend wird die App hochgeladen. Beim starten der Applikation wird die Umgebung aufgebaut. Dabei wird das PHP Buildpack heruntergeladen, welches aus einem HTTP Buildpack (HTTPD 2.4.23) und einem PHP Buildpack (PHP 5.5.38) zusammensetzt ist. CF erkennt somit eigenständig das Buildpack und baut die Deployment Umgebung automatisch zusammen. Natürlich kann man explizite Buildpacks beim pushen nach CF angeben. Am Ende wird die Applikation hochgefahren und der Status angezeigt. Schön ist, dass im Status die URL zu sehen ist die der Router von CF für die Applikation zur Verfügung stellt und mit der man unsere Applikation aufrufen kann (testApp.bosh-lite.com).
Eine Liste der Applikationen die in CF hochgeladen sind kann man mit diesem Befehl erfragen:

1
2
<br />
[bash light="true"]$ cf apps[/bash]

Fazit

Mit dieser Umgebung kann man nun beginnen Cloud Foundry kennenzulernen. Ein weiterer Schritt wäre einen Service zu provisionieren und an eine Applikation anzubinden. CF stellt einige Services zur Verfügung z.B. die MySQL Datenbank. Auf den Community Seiten von Cloud Foundry sind Dokumentationenvon CF CLI und BOSH zu finden.

Weiterführende Links:

Cloud Foundry
Cloud Foundry Documentation
Cloud Foundry Service

1
2
3
4
5
6
</p>
<p>[bash light="true"]$ ruby -v<br />
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]<br />
# (BOSH CLI benötigt Ruby 2+)<br />
[/bash]</p>
<p>

Unser Wissen im Abo

Slicing

Wie man User Stories richtig portioniert

Agile Software Development
Testing und DevOps

TestOps – die Chance für Tester von heute

Agile Software Development
GUIs und HMIs

Interfaces entwickeln – mit dem User, für den User

Innovation

Artikel kommentieren

Die E-Mail-Adresse wird nicht publiziert. Notwendige Felder sind mit einem * versehen.

Attention!

Sorry, so far we got only content in German for this section.

Attention!

Sorry, so far we got only content in German for this section.