Quellen dieses Artikelt ist die Cloud Foundry Dokumentation, die hier zu finden ist.
http://docs.cloudfoundry.org/
Cloud Foundry - BOSH Lite
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
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
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
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
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
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
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
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
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
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
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
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
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.