Applicaties moduleren met Cisco CloudCenter

In mijn vorige blog heb ik de installatie en configuratie van Cisco CloudCenter beschreven. Het ging met name over het maken van een koppeling met de lokale VMware-omgeving binnen CloudCenter. In deze blog gaan we een stap verder en beginnen we met het moduleren van een applicatie. De applicatie die we gaan moduleren is een webwinkel met een 3-Tier-opzet. De eerste tier bestaat uit een loadbalancer, de tweede uit de webserver en de derde tier uit een databaseserver.

Voorbereidingen

De eerste stap voor het moduleren van een applicatie, is het plaatsen van de benodigde applicatie-scripts op een repository. De scripts die in dit geval gebruikt worden, zijn het implementatiescript van de applicatie, het SQL-script voor de database en de bestanden voor de webserver.

Voor de installatie van de applicatie hebben we in dit geval maar drie bestanden nodig:

  • Install_opencart_cli.sh –> Dit is het installatiescript voor de applicatie OpenCart. Het script ziet er als volgt uit:

#!/bin/bash
# ensure running as root
if [ "$(id -u)" != "0" ]; then
exec sudo "$0" "$@"
fi
source /usr/local/osmosix/etc/userenv
if [ -z $CliqrTier_Apache_PUBLIC_IP ]; then
exit 4
elif [ -z $CliqrTier_Database_IP ]; then
exit 5
fi
cd /var/www/install
php cli_install.php install --db_driver mysqli --db_host $CliqrTier_Database_IP --db_user opencart --db_password opencart --db_name opencart --username admin --password admin --email youremail@example.com --agree_tnc yes --http_server http://$CliqrTier_Apache_PUBLIC_IP/

  • Createdb.sql –> Het databasescript voor het aanmaken van de OpenCart-database ziet er als volgt uit:

-- Creates the DB structure
-- cli_installer.php inside the php app creates structure
CREATE DATABASE IF NOT EXISTS opencart;
CREATE USER 'opencart'@'%' IDENTIFIED BY 'opencart';
GRANT ALL PRIVILEGES ON opencart.* TO 'opencart'@'%';

  • OpenCart.zip –> Dit zip-bestand bevat alle webbestanden die nodig zijn voor de website.

Maken van een nieuwe applicatie

Nadat alle installatiebestanden beschikbaar zijn via de repository, beginnen we met het daadwerkelijk ‘maken’ van de applicatie. Hiervoor gaan we naar Applications –> Model

Vervolgens krijgen we de keuze welk type applicatie we willen moduleren. Dit kunnen applicaties zijn van een Java Web App tot een Windows.Net Web App. Voor de OpenCart-applicatie kiezen we ‘N-Tier Execution’.

Nu komen we in een omgeving waarin ik de applicatie kan moduleren. Dit kan door de benodigde services naar het tekenveld te slepen. In het geval van OpenCart heb ik een Load Balancer nodig, een Apache Webserver en een MySQL-database. Door middel van een simpele drag-and-drop kan ik mijn applicatie bouwen.

Ik heb inmiddels de services die ik nodig heb voor mijn applicatie geselecteerd en op mijn tekenvel gezet, en ik kan nu de betreffende onderdelen af-configureren en koppelen. De gebruikte LoadBalancer is al out-of-the-box geconfigureerd en behoeft geen verdere configuratie. Dus we beginnen met de webserver.

Door met de muis op de webserver te klikken, kunnen de benodigde properties geselecteerd worden voor de betreffende tier. De volgende settings kunnen er gezet worden:

  • Name: de naam van de betreffende tier. Deze kan gebruikt worden in verschillende andere scripts tijdens de uitrol, zoals de firewall-configuratie.
  • Base Image: dit is de base image die gebruikt moet worden voor de installatie. Het is de koppeling die ik in mijn eerdere blog heb gemaakt. Wij kiezen in dit geval voor CentOS 6.x.
  • Minimum Number of Nodes: dit is het minimale aantal machines die worden uitgerold tijdens de initiële setup.
  • Maximum Number of Nodes: dit is het maximale aantal machines waaruit de applicatie kan bestaan.
  • App Package: op deze plek staan de applicatiebestanden, in ons geval het bestand OpenCart.zip die op de gebruikte repository staat.
  • Pre-Start Script: dit is de plek waar de installatie van OpenCart plaatsvindt. Hier stellen we het script in: apps/opencart/install_opencart_cli.sh
  • DB Setup Script: hier stellen we het SQL-script in voor de setup van de MySQL database.

Nadat we deze settings per tier hebben ingesteld, kunnen we de netwerkkoppelingen instellen en de benodigde poorten voor de communicatie tussen de verschillende tiers. Deze poorten worden tijden het uitrollen van de applicaties over de verschillende omgevingen gebruikt, om bijvoorbeeld ACI-contracten of AWS Security Groups te maken. Als we dit gedaan hebben ziet onze applicatie er als volgt uit:

De applicatie is nu gemoduleerd en we kunnen de Basic Information invullen en de applicatie opslaan.

Applicatie uitrollen

Nadat we dit gedaan hebben, kunnen we de applicatie uitrollen op de omgeving.

Als eerste geven we een naam op voor de applicatie. In dit geval noem ik hem OpenCart1. Vervolgens kan ik aangeven welke versie van de applicatie we willen gebruiken. Ik kan dus binnen mijn applicatieprofiel meerdere versies bouwen. Daarnaast kan ik TAGS selecteren. Dit kunnen bijvoorbeeld Productie, Ontwikkeling of Testing zijn. Elke TAG kan gekoppeld zijn aan een andere deployment-omgeving. Hierdoor is het mogelijk dat de applicatie voor ontwikkeling in de public cloud wordt uitgerold en voor productie op de lokale infrastructuur.

Vervolgens kan ik per tier aangeven wat de eigenschappen moeten zijn van de VM waarop deze gaat landen. Ik kan bijvoorbeeld zeggen dat de LoadBalancer op een Small moet, de WebServer op een Medium-server en de Database-tier op een Large-server. De kosten die hieraan gebonden zijn zullen automatisch rechtsboven in het scherm worden bijgewerkt. Hierdoor is het meteen inzichtelijk wat de kosten zijn voor de betreffende applicatie. Tevens kan ik verschillende tiers in verschillende omgevingen plaatsen. Ik kan er bijvoorbeeld voor kiezen om de LoadBalancer en de WebServer in de public cloud te plaatsen en de Database-server in mijn lokale omgeving. Als alles correct is ingesteld klikt u op deploy.

De applicatie wordt nu uitgerold en na enkele minuten kunnen we de applicatie daadwerkelijk openen en gebruiken.

Coming next in deze CloudCenter-reeks: koppeling met Amazon

In een volgende blog gaan we de koppeling maken met de public cloud van Amazon en rollen we dezelfde applicatie niet alleen in onze private cloud, maar ook in de public cloud uit.

Laat een reactie achter