In Techno

Contezza is in de laatste twee maanden gestart met het opzetten van een DevOps werkomgeving. De basis van de nieuwe omgeving wordt gevormd door een Chef Deployment server en GitLab. De servers die worden gecontroleerd door Chef worden uitgerust met een Chef agent die de werkzaamheden (recipes) ophaalt van de Chef server en ze vervolgens uitrolt.

Een nieuwe werkomgeving is niet voldoende, dit betekent ook dat we onze manier van werken iets zullen aanpassen, maar hierdoor kunnen ontwikkelaars meer bezig zijn met ontwikkelen in plaats van veel tijd besteden aan steeds terugkerende taken of het uitrollen van de ontwikkelde modules die vaak veel tijd kosten.

De volgende redenen zijn er voor Contezza om te kiezen voor deze aanpak:

  1. Het sneller uitrollen van kleine wijzingen die veel tijd kosten.
    Het kost vaak veel tijd om een kleine wijziging door te voeren. Eerst moet er een VPN opgezet worden, ingelogd worden op een of meerdere servers waarbij ook de juiste wachtwoorden opgezocht moeten worden.
  2. Het vastleggen van alle wijzigingen als code.
    Het principe van werken met Chef is gebaseerd op ‘Infrastructure as Code’.
    Dat betekent dat de installatie en configuratie van de Alfresco servers worden opgeslagen in GitLab en opnieuw uitgevoerd kunnen worden op een volledige OTAP omgeving.
    Handmatige wijzigingen worden ook weer overruled op de door Chef server gecontroleerde onderdelen, waardoor de configuratie altijd gewaarborgd blijft.
  3. Een groot deel van handmatige werkzaamheden worden uit de weggegaan.
    Hierdoor worden minder fouten gemaakt en kan er met grotere zekerheid worden uitgegaan van een succesvolle productie gang als dit goed is getest in de Test en/of Acceptatie omgeving.
  4. Het installeren en upgraden van Docker containers is sneller en eenvoudiger uit te voeren.
  5. Alfresco is zich volledig aan het richten op installatie op basis van Docker.
    Door deze stappen nu te zetten passen we ons nu al aan op deze manier van werken.
  6. Sneller werken en wijzigingen opslaan als code mag niet ten kosten gaan aan veiligheid
    Contezza kiest dus voor een manier van werken waarbij belangrijke gegevens encrypt worden opgeslagen.

In de afgelopen twee maanden heeft Contezza de Chef server geïnstalleerd maar ook al een deel van de eigen infrastructuur omgezet. De eigen servers zijn gemigreerd naar Docker instanties die worden uitgerold met Chef.

Ook is een Elastic Search en Kibana omgeving geïnstalleerd in een Docker omgeving die we inzetten hebben voor preventief beheer. Alle Alfresco logs van diverse Alfresco instanties worden geüpload naar de Elastic Search omgeving die ons support team analyseert en zal voorstellen om mogelijk foutmeldingen op te lossen om daarmee incidenten te voorkomen.

Aan de Alfresco server kant moet een Filebeat agent worden geïnstalleerd om deze gegevens veilig en met authenticatie te uploaden. De Filebeat agent worden gedistribueerd met behulp van Chef.

Bij een aantal klanten is de Chef agent al geïnstalleerd en wordt met behulp van Filebeat de logs al verzameld naar Elastic Search en geanalyseerd met Kibana.

In de afgelopen maand hebben we een zware VPS (Virtual Private Server) opgenomen als chef node. Deze server is volledig geïnstalleerd en geconfigureerd met Chef zonder handmatige werkzaamheden.

Een Contezza-Apps Cookbook is aangemaakt voor de installatie van standaard applicatie server installaties, zoals default CentOS packages, Firewall, Apache webserver en configuratie en MySQL server.

Daarnaast is er een Redmine Cookbook aangemaakt waarin scripts zijn opgenomen om een eigen Docker image te maken en te beheren gebaseerd op een publiek beschikbaar Redmine 3.4.3 Docker Image.
Het eigen Redmine Docker image voegt extra modulaire uitbreidingen en een Thema toe voor de look and feel. Door in Chef op twee plekken het versie nummer te verhogen of te verlaten wordt er heel snel een upgrade of downgrade uitgevoerd. Als de database niet bestaat wordt deze automatisch aangemaakt in MySQL.

Groot voordeel is dat we hetzelfde script kunnen gebruiken om een test omgeving op te zetten zonder veel tijdverlies maar ook een exacte kopie van de productie omgeving.

Verder maken we gebruik van Chef-Vault om wachtwoorden in de recipes encrypted op te slaan en pas te decrypten tijdens het uitrollen op de server. Wachtwoorden zijn hierdoor niet zichtbaar voor iemand met minder bevoegdheden of als onverhoopt de code toch in verkeerde handen zou vallen. In de configuratie van Chef server wordt aangegeven welke Chef users en servers de wachtwoorden kunnen gebruiken.

Veiligheid is dus ook goed gewaarborgd.

Door Chef Analytics te installeren kunnen we op een centrale plek zien welke Chef clients, Errors of Warnings hadden tijdens de converge. Converge is een nette naam voor het ophalen en toepassen van de recipes op de Chef node. In een latere fase zullen we de logging van Errors en Warnings ook naar Elastic Search sturen zodat we op een plek alle belangrijke log bestanden kunnen vinden en kunnen analyseren.

Ook hebben we een basis platform ingericht met Chef Push-Jobs. Hiermee kunnen we commando’s als het herstarten van services of de Converge van een node remote starten zonder een VPN op te zetten.
Op uw firewall hoeft niets opgezet te worden omdat de Client aangeeft dat het online is en of er Push-Jobs zijn geplaatst op de Chef server van Contezza. Als dat geval is, zal de Chef client de taak ophalen en uitvoeren.
De Jobs worden geplaatst in een Whitelist en kunnen alleen worden uitgevoerd door bevoegde Chef gebruikers. In een latere blog zullen we hier uitgebreider op ingaan.

In de aankomende periode zal Contezza zich gaan richten op de installatie en upgrades van Alfresco vanuit Chef te kunnen aansturen en steeds meer klanten aan te sluiten op de Chef server.

Ook zal de integratie van Chef en GitLab worden verhoogt door GitLab CI toe te passen. Door de Continious Integration en Continious Deployment kunnen we wijzigingen sneller testen en uitrollen op Test en Acceptatie.

Door: Dick Muller, Cloud Engineer

Recent Posts

Start typing and press Enter to search