Fabric-based remote server management plugin for `edwh`
Project description
Fabric 4 server provisioning
Deze repo maakt gebruik van fabric om servers in te richten. Sommige commando's zijn ook "handig" om lokaal te gebruiken.
Definities en aannames
Met de definitie dat een omgeving een subdirectory is in de home directory van de ubuntu gebruiker op een server waarin een clone staat van een repository.
De taken kunnen per omgeving verschillend zijn, maar de api kan gelijk zijn. Bijvoorbeeld backup
.
De taken worden gescript en uitgevoerd middels invoke.
Repository clonen
fab --prompt-for-login-password -H vortex clone-git-repo-with-new-key-file-for-edwh-repos educationwarehouse/server_provisioning rw
Hiermee wordt een github repo gecloned in ~/<reponame>
maar inclusief
het aanmaken van sleutels en een eenvoudige manier van het opsturen ervan.
Voor het inrichten van een ontwikkelserver wordt dit gedaan om de ontwikkelstraat repository te clonen.
Inspiratie voor het clonen van een repository op een server:
fab -eH ubuntu@util.edwh.nl clone-git-repo-with-new-key-file-for-edwh-repos educationwarehouse/ontwikkelstraat r
Let op de r
op het eind, die kan ook een rw
zijn, en is bedoeld om de bedoeling van de sleutel aan te geven
waarmee deze ook op github gekoppeld wordt. Hierdoor is te zien of het om een ontwikkelmachine of een productie
machine gaat.
fabfile gebruik
De code van deze user story maakt het mogelijk om eenvoudig op afstand (vanaf een development machine, of vanuit n8n) de taken uit te voeren in 1 of meerdere omgevingen:
fab -H server do --omgeving leiden --omgeving slimfit --omgeving taiga --invoke "backup"
Om eenvoudig beheer commando's uit te voeren kan het volgende nuttig zijn:
fab -H server do --omgeving leiden --cmd "echo hoi; echo nog een hoi"
Als daarbij de --omgeving
niet opgegeven wordt, is deze gelijk aan .
wat effectief de home folder van ubuntu betekend. Hierdoor kan ook op 'host' niveau snel hetzelfde command uitgevoerd worden.
Gebruik makend van fabric's -H
optie, kun je dit ook doen op meerdere hosts:
fab -H mike,robin,romy do --cmd "apt update; apt upgrade -y "
Ook kan dit wel met gebruik van een gedeelde repository:
fab -H mike,robin,romy do --omgeving ontwikkelstraat --cmd "git pull"
Hoewel de laatste natuurlijk het mooiste is om te upgraden via een tasks.py
invoke file, zodat de upgrade specifiek per omgeving bijgewerkt kan worden.
Server inrichten
De basis van de meeste van onze servers is gelijk, vandaar dit script om
dat te automatiseren. Daarnast zijn er wel eens wijzigingen en het is heel
irritant om al die wijzigingen door te voeren op elke server.
Je hebt al snel niet door dat je 1 vergeet, en als je die later moet bijwerken
dan is het een tijdrovende klus om na te gaan wat er allemaal moet gebeuren om het
systeem weer werkend te krijgen.
Vandaar de behoefte aan zo'n script als dit.
Voorbeeld van een generic
inrichting van een server:
fab -eH ubuntu@<hotname> prepare-generic-server
:warning: SSH authenticatie vereist Er wordt vanuit gegaan dat je een ssh verbinding zonder problemen opgebouwd kan worden. Meestal bij de uitrol van een machine op cloudvps wordt de
ew-key
file meegenomen zodat er op afstand mee te verbinden is.
Generic
Hieronder valt:
prepare_apt
- update en upgradeinstall_python
- default via apt install, vereist voor het meeste, inclusief installatie van pip3install_docker
- key en apt repository worden toegevoegd; de gebruiker wordt lid gemaakt van dedocker
group en er wordt eenmicroservices
group en user aangemaakt waaronder de dockers kunnen draaien.install_xonsh
- std installatie met wat plugins via pip
Joplin server
Joplin is geinstalleerd via het volgende commando, op een generic server:
fab -eH ubuntu@util.edwh.nl install-joplin
Bij een volledig kale machine, zou je voor een herinrichting het volgende kunnen gebruiken:
fab -eH ubuntu@util.edwh.nl prepare-joplin-server
Interessante links
- SPEC https://cloudinit.readthedocs.io/en/latest/topics/examples.html
- FRAMEWORK fabric - invoke over ssh (fabfile.py)
- FRAMEWORK invoke - lokaal (tasks.py)
- LIB plumbum - alternatief, itegreert shell met python
- SHELL xonsh - shell + python; vervanger van /bin/bash
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for edwh_server_provisioning_plugin-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 086fb6918172b29e219f856422b2d6c7c04c385b66a547a536359127052ae22a |
|
MD5 | 67b67ba5a6e43f7d02103f62702b4074 |
|
BLAKE2b-256 | 26f71c2fac0827fc351182a0a31ba6cc44d8e21a26f3c33d78ded61df807f25c |
Hashes for edwh_server_provisioning_plugin-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 754705e35d6252f9d19d3bfb488d8bdb26248318fa1f14c6be01591a9d767418 |
|
MD5 | a22e0eb136d3b2870faaa4e1d6e413cc |
|
BLAKE2b-256 | 88976103d61338041aba93aea26ec9bbb2bfbb10f6eb1916c0c4c920308e809b |