Wat is Zombie verbruik?
We hebben het over Zombie verbruik als je servers nutteloze dingen staan te doen of als er servers aan blijven staan voor bijvoorbeeld development.
Waarom wil je minder Zombie verbruik?
Dat is natuurlijk simpel te beantwoorden, bij Digital Ocean is minder verbruik gelijk aan minder kosten. Zombie verbruik is slecht voor je portemonnee en slecht voor het milieu. Die servers staan namelijk voor jandoedel te draaien en dat is niet heel erg schoon.
Wat zijn typische Zombie verbruik veroorzakers?
In bedrijven waar je ook developers hebt zie je ook veel Zombie gebruik. Ze hebben vaak test machines nodig en vergeten die of uit te zetten of te verwijderen.
Daarnaast kunnen applicaties die alleen tijdens kantooruren nodig zijn ook Zombie verbruik creëren. Als iets alleen tijdens kantooruren nodig is dan kun je het ook uitzetten. Laat jij het licht ook altijd branden?
Hoe kunnen we het aanpakken?
Digital Ocean heeft gelukkig een zeer uitgebreide API waarmee je ook je machines kunt: starten, stoppen, resizen enz. Door slim gebruik te maken van de API kun je elke dag kosten besparen.
Alle stappen
Om dit voor elkaar te krijgen moeten we een aantal stappen nemen:
- Access Token aanmaken;
- ID van je Droplet achterhalen;
- Scenario’s bedenken;
- Volgorde van acties;
- Details API calls;
- Hoe gebruiken we dit nu?
Acces token aanmaken
Om met de Digital API te kunnen werken heb je een acces token nodig.
Door Generate New Token te klikken kun je een nieuwe token aanmaken. Het is belangrijk om de name, expiration, en write opties te gebruiken. Zonder write access kun je niet veel. Als je superveilig wilt laat dan de token regelmatig verlopen.
Noteer het token direct en sla deze digitaal op op een veilige plek. Je hebt hem nodig voor de authenticatie met de Digital Ocean API.
ID van je droplet achterhalen
Als we het binnen Digital Ocean over een droplet hebben dan bedoelen we meestal een server met of zonder een applicatie. Dit is de benaming van Digital Ocean. Als je via de API’s bepaalde zaken van die droplet wilt aanpassen dan heb je een droplet ID nodig. Die ID kun je achterhalen in het droplet overzichtscherm.
Als je op een droplet klikt dan kun je in de URL, die je kunt zien in je browser adresbalk, de ID zien. Noteer of copy deze ID.
Scenario's bedenken
Er zijn een paar droplet acties die van belang zijn: shutdown, power_off, power_on en resize. Er zijn meer acties maar met deze beginnen we.
Wat is de volgorde van acties?
Sommige Droplet acties zijn nodig voordat je een andere uitvoert. Wil je bijvoorbeeld een upzise uitvoeren dan moet je bijvoorbeeld de volgende volgorde aanhouden:
- power_off
- shutdown
- resize
- power_on
Verder moet er tussen de acties een redelijke pauze zitten, ook afhankelijk van wat er allemaal op de server staat.
In ons voorbeeld gebruiken we Pipedream om dit alles automatisch aan te roepen. Pipedream is een automation engine die op gezette tijden API’s kan aanroepen. Je kunt dit ook via o.a. Zapier, Make.com en N8N doen.
Hoe zien de API calls eruit?
We beschrijven hier welke API calls je moet doen. Zoals gezegd kan dit ook via Pipedream enz. Mocht je dit willen dan kunnen we je daarbij helpen.
In de basis gebruiken we 1 URL om via de API aanpassingen aan een droplet te doen:
https://api.digitalocean.com/v2/droplets/<droplet id>/actions
Deze URL roepen we altijd aan met de header: Authorization Bear <jouw access token> De aanroep is altijd een POST.
De header Content-Type moet ingesteld zijn op application/json.
De body bestaat uit JSON die elke keer anders is bij de actie die we aanroepen.
power_off: {“type”: “power_off”}
shutdown: {“type”: “shutdown”}
power_on: {“type”: “power_on”}
resize: {“type”: “resize”,“disk”: false,“size”: “s-2vcpu-4gb-amd”} De size parameter is de soort machine.
Hoe gebruiken we dit nu?
Het uitgangspunt is dat je elke nacht je servers kunt stoppen en dan op tijd in de ochtend weer alles aan kunt zetten. Uiteraard kun je hiermee spelen naar eigen wens.