DevOps projecten op Raspberry Pi

Router

Jenkins en Localstack op een Raspberry Pi cluster in het thuiskantoor

Na het voltooien van een Jenkins cursus bij Udemy, wilde ik de opgedane kennis goed benutten en wat meer praktijkervaring opdoen.
Dus ik werd geïnspireerd om een DevOps-toolingcluster op te zetten op het thuiskantoor en eindelijk goed gebruik te maken van mijn Raspberry 4-units en TP-Link-switch die ik nog had liggen.

Ik heb een DevOps tooling cluster gebouwd met de volgende installaties, allemaal draaiend op de Raspberry Pi's:

  • Een Jenkins-controller instance
  • Een Jenkins-worker instance
  • Een instantie die localstack uitvoert (een emulator voor AWS)
  • Een router en DHCP-server met behulp van RaspAP

Functies

Na het bouwen van de stack heb ik mijn DevOps test- en ontwikkelingsomgeving uitgebreid met de volgende functies:

  • Ik kan builds en pipelines uitvoeren op Jenkins voor mijn commits terwijl ik ongestoord op mijn laptop werk
  • Ik gebruik en test Jenkins met gedistribueerde build-opstellingen 'alsof het echt is'
  • Ik heb mijn ontwikkelingsomgeving uitgebreid met 'lokale AWS' - localstack ondersteunt SQS, S3 en nog veel meer. Dit voorkomt dat mijn AWS-accounts worden vervuild met ontwikkelings- en testservices.

Jenkins draait in een docker container, ik heb deze zo opgezet dat 'docker in docker' ondersteund wordt, zodat ik in de Jenkins container builds in docker kan draaien.

Daarnaast heb ik met behulp van de router en de switch meerdere VLAN's en subnets opgezet:

  • Een VLAN dat ik kan gebruiken om mijn computers rechtstreeks op de upstream internetverbinding aan te sluiten (indien gewenst of als de router in onderhoud is)
  • Een subnet op een VLAN dat is toegewijd aan mijn computers
  • Nog een subnet op een ander VLAN dat is toegewijd aan mijn RPI-units
  • Quality of Service-configuratie op de switch, zodat mijn computers een hogere QoS-prioriteit hebben (zodat intensief verkeer op het RPI-VLAN videoconferenties, oproepen, enz. op mijn computer-VLAN niet verstoort)


Hardware

* TP-Link TL-SG1016DE switch (or equivalent; multiple port based vlan support and QoS support)
* 2x Raspberry Pi 4 with 2Gb memory
* 2x Raspberry Pi 4 with 4Gb memory
* 1x 1000Mbps USB network adapter
* 1x 100Mbps USB network adapter
* 2x USB3 SSD drives of 128Gb
* 2x USB3 SSD drives of 256Gb
* lots of network cables



Datum: Juli, 2023

Vaardigheden

  • Linux
  • Switch & VLAN
  • Routing & DHCP
  • Jenkins administration
  • Localstack / AWS
  • Docker

Meer..

Na de aanvankelijke installatie heb ik nog de volgende uitbreidingen geïmplementeerd:

SSM Agent

Installatie van SSM Agent zodat ik al mijn instances op afstand kan beheren via AWS Fleet Manager. Dit maakt het bijvoorbeeld mogelijk een patch te installeren, een OS update uit te voeren en software te installeren op alles instances in het cluster tegelijkertijd.

AWS Fleet Manager is onderdeel van Amazon Systems Manager.