Ubuntu komt veel voor in datacentra. Niet alleen als webserver, maar ook als cloudserver waarmee een OpenStack infrastructuur geleverd wordt. Op basis van OpenStack kunnen cloudbeheerders eenvoudig virtuele machines beschikbaar maken voor gebruikers. In dit artikel lees je hoe je met OpenStack op Ubuntu kunt beginnen.

OpenStack is niet zomaar een toepassing die je even installeert op je server. Met OpenStack installeer je cloud-infrastructuur en dat betekent dat in veel gevallen op zijn minst een stuk of 10 servers weggezet worden, waarvan elke server een specifieke rol voor zijn rekening neemt. Het gevolg hiervan is dat er meerdere manieren zijn waarop je OpenStack op Ubuntu kunt installeren. Eenvoudig, handmatig of schaalbaar. 

 

Installatiemethoden

Als je zoekt naar een eenvoudige manier op OpenStack te installeren, maak je gebruik van devstack. Deze methode is ontwikkeld om op eenvoudige wijze OpenStack packages te installeren op Ubuntu, waarbij het resultaat een zogenaamde All in One (AiO) configuratie is. De devstack methode is vooral ontwikkeld voor developers, met als doel om op eenvoudige wijze de huidige versie van de OpenStack software te installeren. Dit garandeert dat je altijd toegang hebt tot de allerlaatste ontwikkeling in de software. Dat is interessant, maar brengt ook de nodige uitdagingen met zich mee. In de meest recente versie van de software packages komen nog wel eens problemen voor die nog niet opgelost zijn. 

Wil je OpenStack installeren op basis van beproefde software en tegelijk ook de mogelijkheid hebben om meerdere servers weg te zetten in een duidelijke relatie tot elkaar, dan is de handmatige methode wellicht interessant. Deze methode bestaat eruit dat je alle packages zelf installeert en de verschillende componenten zelf met elkaar verbindt. Let erop dat dit een zeer ingewikkelde methode is, waar je al snel meer dan honderd commando’s zult typen en honderden regels in configuratiebestanden aan moet passen. Mocht deze methode je toch interesseren, dan kun je de installatiehandleiding raadplegen die aangeboden wordt op docs.openstack.org. 

Tot slot is er de installatie waarbij gebruik gemaakt wordt van Canonical Autopilot. Deze manier is ontworpen als basis set-up voor bedrijven om een werkende OpenStack configuratie weg te zetten. Hiervoor heb je om te beginnen minstens vijf machines nodig die met Ubuntu server geïnstalleerd zijn en door middel van een apart netwerk met elkaar kunnen communiceren. Vervolgens installeer je Ubuntu’s MAAS (Metal As A Service). Dit biedt een web interface van waaruit je de hele OpenStack infrastructuur uit kunt rollen. Met MAAS zorg je ervoor dat de servers in de omgeving geïnstalleerd worden. Is dat eenmaal gebeurd, dan gebruik je OpenStack Autopilot om de OpenStack configuratie zelf af te maken. In Autopilot configureer je de onderdelen waarmee je wilt werken en vervolgens koppel je deze aan de servers die je met MAAS in de cloud beschikbaar gemaakt hebt. Je moet hier wel even opletten: deze infrastructuur is gebaseerd op Canonical’s Landscape service. Dit is een dienst die alleen tegen betaling beschikbaar is als je meer nodig hebt dan 10 servers in je cloud. Leuk voor thuis dus, maar waarschijnlijk net te klein om een OpenStack deployment in productie te nemen. 

 

DevStack

In de rest van dit artikel lees je hoe je met DevStack op Ubuntu Server te werk gaat om OpenStack te installeren. We gaan ervan uit dat je een standaard installatie van Ubuntu Server 16.04 hebt doorlopen en dat deze server klaar staat voor gebruik. Je hebt op deze server niet heel veel nodig, maar wel een minimale hoeveelheid RAM per server. 4GB is het absolute minimum, 6GB is beter. Daarnaast is 20GB een redelijke hoeveelheid schijfruimte. Je kunt de procedure uitvoeren op fysieke servers, maar hij doet het ook uitstekend op virtuele machines. 

 

Aan de slag

1.Open een shell sessie op de Ubuntu server en type sudo apt-get install git. DevStack is gebaseerd op software die beschikbaar is in github, dus daar moet je mee beginnen. 

2.Nu moet je de software van git klonen naar de Ubuntu server. Dit kan je gewoon doen in de home directory van een gebruikersaccount met sudo permissies. Om te klonen type je: git clone https://git.openstack.org/openstack-dev/devstack. 

3.De installatieprocedure zelf vindt plaats vanuit een script met de naam stack. Voordat je begint, kan het de moeite zijn om dit script even te bekijken. Je vindt het in ~/devstack en de naam is stack.sh. Kijk ook even naar het bestand ~/devstack/samples/local.conf. Hierin tref je een aantal omgevingsvariabelen die gebruikt worden om de OpenStack installatie in te richten. Uiteindelijk zal je zelf een vergelijkbaar bestand moeten aanmaken met daarin alle parameters die je wilt gebruiken. In listing 1 vind je een voorbeeld van instellingen die je kunt gebruiken. Let ook even op de FLAT_INTERFACE variabele. Hier geef je de naam van je netwerkkaart op en op moderne Linux distributies is dat niet vaak meer eth0. 

 

Listing 1: voorbeeld local.conf file

[[local|localrc]]

HOST_IP=192.168.4.172 # zet hier je eigen IP adres

FLAT_INTERFACE=eth0 # je primaire netwerkkaart

FIXED_RANGE=10.0.0.0/24 # de IP adressen die je intern gaat gebruiken

FLOATING_RANGE=192.168.4.192/26 #Let op: het afwijkende subnetmasker klopt wel!

MULTI_HOST=1

ADMIN_PASSWORD=password

MYSQL_PASSWORD=password

RABBIT_PASSWORD=password

SERVICE_PASSWORD=SERVICE-password

SERVICE_TOKEN=EenOfAndereLangeRandomString

 

4.Type nu ./stack.sh om de installatie te beginnen. Blijf in de buurt, want wellicht zal je hier en daar een wachtwoord moeten invoeren. In totaal neemt deze procedure ongeveer 10 tot 15 minuten in beslag. 

 

Je eerste instance

Als de DevStack installatie met succes is afgerond, kan je jouw eerste instance gaan configureren. Een “instance” is een virtuele machine die binnen de cloud aangemaakt wordt. Om instances aan te maken (en andere beheerstaken uit te voeren), zijn er twee beheersinterfaces. De meest eenvoudige interface wordt geboden door de Horizon service en benadert vanuit een webpagina. Daarnaast kan de configuratie aangemaakt worden vanaf de commandline. 

Als je ooit een virtuele machine hebt aangemaakt en op zoek gaat naar een vergelijkbare procedure in OpenStack, dan kom je bedrogen uit: die is er niet echt. In OpenStack cloud is elasticiteit en schaalbaarheid van groot belang en daarom installeer je bijvoorbeeld geen instances, maar start je deze vanaf een cloud image. Ook netwerkconfiguratie is in OpenStack anders dan je wellicht gewend bent. Elke instance heeft een privaat IP adres en kan een publiek IP adres hebben. Het publieke IP adres is niet altijd beschikbaar en wordt door de beheerder uitgedeeld. In OpenStack wordt dit aangeduid als een floating IP adres. Dit adres moet van buitenaf beschikbaar zijn en wordt door middel van NAT gekoppeld aan het private IP adres dat in het privé netwerk gebruikt wordt. 

Inloggen in Horizon is niet moeilijk. Open een browser, type het IP adres van je OpenStack server en voer de loginnaam admin in met het bijbehorende wachtwoord. Als je dit succesvol gedaan hebt, ben je aangemeld als admin, de beheerder van de cloud infrastructuur. Let er goed op dat je niet alle taken als admin zult uitvoeren. De eerste taak bestaat eruit een Tenant (ook bekend als project) aan te maken, met een bijbehorend gebruikersaccount. Instances worden aangemaakt als de tenant user, de cloud infrastructuur wordt beheerd door de tenant user. De volgende stappen beschrijven hoe je snel een operationele instance aanmaakt. 

 

1.Log in bij Horizon als admin met het wachtwoord password en open de Identity > Projects pagina. Klik dan de Create Project knop boven in het scherm. 

2.Voer de naam “Project1” in en klik op Create Project.

3.Open nu de tab Identity > Users. Klik hier op Create User en zorg ervoor dat deze user de volgende eigenschappen krijgt:

 

•password: password

•User Name: user1

•Email: user1@example.com

•Primary Project: project1

•Role: Member

 

4.Rechts boven in het Horizon scherm zie je de naam van de huidige gebruiker admin. Klik hierop, log uit, en meld je aan als user1 uit het zojuist aangemaakte project1. 

5.Open nu de pagina Project > Compute > Instances en klik op Launch Instance. Hier moet je verschillende gegevens invoeren, waarvan hieronder een overzicht met uitleg:

 

•Availability Zone: geeft aan welke service verantwoordelijk is voor de instances. Kies nova, de naam van de service die in OpenStack met de hypervisor communiceert. 

•Instance name: de naam waaronder de instance bekend zal zijn. Noem hem bijvoorbeeld vm1. 

•Flavor: de hardware instellingen die je voor de instance beschikbaar wilt maken. Voor een test voldoet m1.tiny uitstekend, hiermee wijs je minimale hardware toe aan de instance. Gebruik geen andere Flavor, want je loopt het risico dat de hardware specificaties groter zijn dan de aanwezige hardware in je OpenStack machine en dan zal je de instance nooit kunnen starten. 

•Instance count: geef hiermee aan hoeveel instances je wilt starten. 

•Instance Boot Source: kies “boot from image”. Instances in OpenStack worden niet geïnstalleerd, ze worden gestart door middel van een image, een proces dat je kan vergelijken met het starten van Linux van een Live CD. 

•Image Name: dit is het image waar vanaf je de instance gaat starten. Er zijn heel veel images beschikbaar op internet, maar voor een eerste test met OpenStack voldoet het Cirros image uitstekend. Dit is een minimaal cloud operating system dat maar 12 MB groot is. 

 

6.Nadat je alle eigenschappen van de instance gedefinieerd hebt, klik je op Launch om hem op te starten. Gefeliciteerd! Als alles goed gaat, heb je zojuist je eerste instance gestart! Je zult in Horizon het verloop van de instance deployment kunnen zien. In eerste instance staat de instance aangeduid als “spawning”. Binnen ongeveer een minuut moet de instance operationeel zijn. Daarbij wordt dan ook aangegeven wat het interne IP adres is waarvan de instance gebruik zal maken. 

7.Je hebt nu je eerste instance draaien. Hoog tijd om hier op in te loggen. Dit doe je vanaf de console van je OpenStack node. Gebruik ssh om als gebruiker cirros aan te melden op de instance, bijvoorbeeld ssh cirros@10.0.0.2. Het standaard wachtwoord in het Cirros image is ingesteld op cubswin:), dus gebruik dat om je aan te melden. 

 

Vervolgstappen

Je hebt in dit artikel gelezen hoe je met DevStack OpenStack installeert en daarop in Horizon een instance kunt uitrollen. Dit betekent nog niet dat je nu een volledig operationele cloud hebt. De instance heeft bijvoorbeeld nog geen publiekelijk toegankelijk IP adres en alle gegevens die in de instance aangemaakt of gewijzigd worden, zullen na een herstart verloren gaan. 

Om van je testomgeving met één instance een volledig werkende cloud omgeving te maken, is het nu zaak verder te gaan met ontwikkelen van OpenStack services. Op zijn minst moet gekeken worden naar software defined networking (SDN), waarmee duidelijk wordt hoe de interne IP adressen zich verhouden tot de floating IP adressen op de externe interfaces. Daarnaast zal er iets aan opslag gedaan moeten worden door gebruik te maken van de Cinder Block Storage service. Wellicht dat deze onderwerpen in een later artikel nog eens aan bod komen.