Ansible met Semaphore voor automatische updates
Naarmate een omgeving groeit — of dat nu prod, dev of test is — gaat er steeds meer tijd zitten in onderhoud. Elke host moet immers regelmatig een apt update en apt upgrade krijgen, zeker wanneer je met Debian-gebaseerde distributies werkt. Doe je dat handmatig, dan ben je al snel meer bezig met bijhouden dan met bouwen.
Ansible lost dit probleem op door centraal taken uit te voeren op andere machines. Dit gebeurt via gecontroleerde remote code execution. Het mooie is dat er op de remote hosts zelf niets extra’s geïnstalleerd hoeft te worden. Alles loopt via SSH, in combinatie met Python — iets wat op vrijwel elke Linux-machine standaard aanwezig is.
Op de machine waar Ansible draait schrijf je een zogenoemd playbook. In zo’n playbook staat stap voor stap beschreven wat er op één of meerdere hosts moet gebeuren. Denk aan updates uitvoeren, services herstarten of configuratiebestanden aanpassen. Hieronder zie je een eenvoudig voorbeeld van zo’n playbook.

Om Ansible wat gebruiksvriendelijker te maken, bestaat er Semaphore. Dit is een webinterface bovenop Ansible die vooral prettig werkt als je meerdere hosts beheert. Semaphore fungeert in feite als een wrapper, maar voegt tegelijkertijd handige extra functionaliteit toe.
Zo kun je eenvoudig een inventaris bijhouden van alle apparaten op je netwerk, en per host of hostgroep aparte instellingen gebruiken. Playbooks kunnen handmatig worden gestart, maar ook automatisch volgens een tijdschema — vergelijkbaar met cron.
Daarnaast biedt Semaphore integratie met GitHub. Hierdoor kun je je playbooks en inventory centraal opslaan en versiebeheer toepassen. Dat maakt het niet alleen overzichtelijker, maar ook een stuk veiliger: je weet altijd wat er wanneer is aangepast.
Ook notificaties zijn mogelijk. Zo kun je bijvoorbeeld via e-mail of Telegram een bericht krijgen wanneer een playbook is uitgevoerd — of juist wanneer iets fout is gegaan.
De mogelijkheden van Ansible gaan overigens veel verder dan alleen systeemupdates. Zo is het ook mogelijk om bestanden naar servers te kopiëren, wat handig is wanneer je bijvoorbeeld Docker Compose-bestanden centraal wilt beheren. Daarnaast beschikt Ansible over modules die direct met de Proxmox API kunnen communiceren, waardoor ook virtuele machines en containers geautomatiseerd beheerd kunnen worden.