Cloud Foundry - BOSH Lite
Lokale Cloud Foundry Installation unter Windows

Quellen dieses Artikelt ist die Cloud Foundry Dokumentation, die hier zu finden ist.
http://docs.cloudfoundry.org/

Außerdem war stackoverflow.com wieder mal sehr hilfreich.

Alle Schritt betreffen den Cloud Foundry Teil, den ich in einer Ubuntu VM durchgeführt habe.

BOSH Lite ist separat direkt unter Windoof installiert, offiziell zieht man die BOSH Lite vagrant Box aber auch unter Linux hoch, und schiebt von dort aus auch das Cloud Foundry Release hoch.

Folgt jemand meinem Vorgehen, muss die BOSH Lite Box separat aufgestetzt sein, und mittels ping 192.168.50.4 erreichbar sein. (siehe BOSH Lite beitrag)

Vorbereitungen
Ruby, Gem und boch-clo

Zunächste installieren wir gem, ruby und die BOSH CLI, in genau der Reihenfolge:

sudo apt-get install gem
sudo gem update
sudo apt-get install ruby
sudo gem install bosh_cli --no-ri --no-rdoc
Vorbereitungen
bosh cli ausrichten

Jetzt können wir unsere BOSH CLI auf den Director ausrichten, das tun wir mit folgendem Command:

bosh target https://192.168.50.4 admin/admin
Cloud Foundry Release
Building time

Wir clonen das Cloud Foundry Repo und checken das aktuellste Release aus. Das ist heute die v257. Das update am Ende ist wichtig, da damit nötige Abhängigkeiten aufgelöst werden.

git clone https://github.com/cloudfoundry/cf-release.git
cd cf-release
git checkout tags/v257
./scripts/update
SPIFF
80er Deutschrock

SPIFF ist nicht zu verwechseln mit der 80er Band Spliff und ist auch sonst völlig unmusikalisch. Es handelt sich hier um ein kleines Tool, für das zusammenführen von Config Files. Ich habe mir das Teil nicht näher angesehen, aber genau dafür wird es hier benutzt. Im nächsten Block sehen wir das im Detail, hier holen wir uns erstmal die Binaries.

cd ..
sudo gem install bundler
wget https://github.com/cloudfoundry-incubator/spiff/releases/download/v1.0.8/spiff_linux_amd64.zip
unzip spiff_linux_amd64.zip
sudo mv spiff /usr/local/bin
Cloud Foundry Release
Selber bauen oder fertiges installieren

Man kann ein fertiges Release nach BOSH Lite laden oder die selbst gebaute Version. Entscheidet man sich für ein fertiges Release, dann ist dieser Artikel ganz schnell abgekürzt:

bosh upload release https://bosh.io/d/github.com/cloudfoundry/cf-release

Du kannst danach direkt zum Abschnitt „Installation testen“ springen, denn die nächsten Blöcke zeigen, wie man sein Release selber baut.

Action
Cloud Foundry Manifest erzeugen.

Jetzt wirds Tricky. In diesem Schritt wird die ID unsere benutzten Directors mit dem Cloud Foundry release verknüpft.
Dazu besorgen wir uns die ID so:

sudo bosh status

Das Ergebniss ist eine Liste von Werte, darunter die UUID, die so ähnlich aus sieht:

UUID       17a45148-1d00-43bc-af28-9882e5a6535a

Wir erzeugen eine config file, mit genau diesem Eintrag:

vi local.yml

--->director_uuid: 17a45148-1d00-43bc-af28-9882e5a6535a

Jetzt kommt der große Auftritt von SPIFF. Denn nun wird unser local.yml mit andere Infos zusammengeführt, am Ende entsteht das deploy.yml Manifest. Hier ist dann auch unsere UUID enthalten.

./cf-release/scripts/generate_deployment_manifest bosh-lite local.yml > deploy.yml

Wenn es an dieser Stelle Probleme gibt, dann SPIFF erneut runterladen, und installieren. Also die Schritte aus vorigem Block wiederholen.

boshlite stemcell runterladen
Ste(A)mcell

Eine Stemcell bezeichnet ein leeres Basis Betriebssystem in dem Cloud Foundry installiert wird. Es gibt verschieden Stemcells für die jeweiligen IaaS Povider, z.B. AWS oder Open Stack. Wir nutzen Bosh Lite, aus unserer Sicht eben ein Light-Weight IaaS Provider. Also holen wir uns die aktuellste Stemcell.
ACHTUNG: Der genaue Link kann sich ändern mit fortschreitender Version.

wget https://s3.amazonaws.com/bosh-core-stemcells/warden/bosh-stemcell-3363.19-warden-boshlite-ubuntu-trusty-go_agent.tgz
Stemcell hochladen
Volldampf voraus

Nun laden wir die Stemcell auf unseren bosh lite container.

bosh upload stemcell bosh-stemcell-3363.19-warden-boshlite-ubuntu-trusty-go_agent.tgz

Man kann sich alle Stemcells mit folgendem Befehl auflisten lassen, und sieht nach erfolgreichem Upload auch unsere Stemcell.

bosh stemcells

Wenn der Upload hängen bleibt, dann gibt er zwei Möglichkeiten:
Entweder den Bosh Lite Container einfach neu starten oder sich in der vagrant vm anmelden und die worker threads neu starten:

vagrant ssh
monit -v restart all
Release erstellen
create release

Jetzt erstellen wir unser Release.

cd cf-release
bosh create release

Ich habe hier öfters den Fehler „Could not find minitest-5.8.4.gem“ erhalten. Das deutet darauf hin, dass irgendwas mit den ruby gems nicht stimmt. Eigentlich sollten die korrekt installiert sein, aber helfen tut dann meistens ein manuelles nachinstallieren, auch der „bundler“ binaries:

 sudo gem install hashie
 sudo gem install minitest
 sudo apt-get install bundler
los geht's
Release hochladen

Jetzt laden wir unser Release auf unsere Stemcell. Das wird dann eine Weile dauern, als Geduld.

cd ..
bosh deployment deploy.yml    # konfiguriert bosh-cli auf unser release
bosh deploy                                  # läd unser Release hoch

Es kommt noch eine Frage, die man mit „yes“ beantworten muss.

Wer den Fehler „Release ‚cf‘ not found on director. Unable to resolve ‚latest‘ alias in manifest“ bekommt, sollte folgendes versuchen:

  • ist die deploy.yml vorhanden?
  • Release neu holen und bauen
  • Klingt doof, funktionerte aber: Reboot.
  • In der deploy.yml im attribut version den Wert latest auf den aktuellen Branch setzen
Installation testen
der große Moment

Egal ob selbstgebaut oder fertiges Image, jetzt ist es an der Zeit, das ganze zu testen. Das macht man dann jetzt am Besten in der Vagrant Shell.

cf api --skip-ssl-validation https://api.bosh-lite.com 
vagrant@agent-id-bosh-0:~/cf-release$ curl api.bosh-lite.com
{
  "code": 10000,
  "description": "Unknown request",
  "error_code": "CF-NotFound"
}

vagrant@agent-id-bosh-0:~/cf-release$ curl api.bosh-lite.com/info 
{
  "name":"","build":"","support":"http://support.cloudfoundry.com","version":0,"description":"",
  "authorization_endpoint":"https://login.bosh-lite.com","token_endpoint":"https://uaa.bosh-lite.com",
  "allow_debug":true
}
Sven Gabel
Über den Autor

Sven kann auf über 20 Jahre IT Erfahrung zurückblicken. Alles begann ganz harmlos, irgendwann in den 80ern mit der Brotkiste (aka C64). Ende der 90er ist er als Web und Java Entwickler in die Gestaltung der Online-Welten gestartet. Vielseitige Aufgaben führten schließlich zu umfassenden Kompetenzen im Bereich Internettechnologien, Schwerpunkt Java (SCJP zertifiziert) und Open Source.

Heute ist er Geschäftsführer der Informatikwerk GmbH, erstellt Software im Kundenauftrag und unterstützt Projekte in den Rollen als Solution Architekt oder Entwickler. Aktuelle Schwerpunkte liegen auf Microservices, SOA, Cloud Technologien sowie DevOps Themen.

Ist noch Freizeit übrig, arbeitet Sven an Arduino basierten IoT Lösungen für die eigene Hausautomation.