Acolyte
Acolyte | |
---|---|
Beschreibung: | Server |
Ort: | Serverschrank |
Status: | working (Was heißt das?) |
Kontakt: | 53c70r |
Acolyte ist ein im Space lokaler VM-Host, welcher nach Bedarf angeschaltet werden kann, um z.B. Dinge zu bauen.
Server Doku
OS: CentOS8 Virtualisierung: QEMU/KVM Libvirt Speicherplatz: 4 Platten als mdadm RAID6 (/dev/md0 ist LUKS encrypted) IP: 192.168.179.6 MAC: 00:19:99:da:6a:0e
Das Management der VM's erfolgt durch die Nutzung von virt-manager, sowohl für die user, als auch für die admins.
Unprivilegierte user Zugriffe sind limitiert und bieten keine Möglichkeit Einstellungen der jeweiligen VM zu manipulieren oder andere VM's zu sehen.
Mittels SELinux und Polkit werden neue unprivilegierte Nutzer hinzugefügt, denen man dann VM's zuweisen kann.
Ein Beispiel für das Hinzufügen vom user "test":
[root@acolyte ~]# useradd test [root@acolyte ~]# semanage login -s user_u -a test [root@acolyte ~]# vim /etc/security/limits.conf
nun in limits.conf am Ende folgendes hinzufügen:
test hard cpu 0 test hard memlock 102400 test hard nproc 20
Nun den user public SSH-Key hinzufügen (nur RSA ist erlaubt):
[root@acolyte ~]# su test [test@acolyte ~]$ cd ~ [test@acolyte ~]$ umask 022 [test@acolyte ~]$ mkdir .ssh [test@acolyte ~]$ echo "ssh-rsa AAAAB3NzaC..." > .ssh/authorized_keys
"test" sollte nun in der Lage sein sich auf dem Server einzuloggen.
Nun downloaden wir als admin die gewünschte iso für die VM:
[user@acolyte ~]$ wget -O iso/debian-10.1.0-amd64-netinst.iso https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-10.1.0-amd64-netinst.iso
Als Nächstes kümmern wir uns um das Aufsetzen der VM von "test".
Dazu verbinden wir uns als admin mittels virt-manager auf den Server und fügen die VM hinzu.
Als "Network selection" sollte "Host device enp6s0: macvtap", "Source mode: Bridge" gewählt werden.
Nun geben wir noch dem user "test" die Freigabe sich auf die VM verbinden zu können:
[root@acolyte ~]# vim /etc/polkit-1/rules.d/51-libvirt.rules
Wir fügen nun zwei Java Script Zeilen in 51-libvirt.rules hinzu;
im zweiten Funktionsblock:
if (subject.user == "test") return polkit.Result.YES;
und im ersten Funktionsblock:
if (a.lookup("domain_uuid") == "cdf9d60b-8cf7-496b-88d4-3ae489969c8f" && s.user == "test") return true;
Die domain_uuid ist als admin unter VM Einstellungen zu sehen.
Der user "test" sollte nun in der Lage sein seine domain zu konfigurieren.
Hardware
Ein in Sachen CPUs, RAM und SSD etwas aufgerüsteter Server auf Basis des Servers aus der Hardwarespende von Alexander.
Server Fujitsu Primergy TX200 S6 CPUs: 2* Intel Xeon E5645 (6 Cores pro CPU, 2 Threads pro Core) RAM: je CPU 4*4 GB 10600PC3 Samsung DDR3 ECC Mainboard: D2799-N10 GS4 SSD: 120GB Patriot Burst HDDs: 4* 500GB WD RE4 von 2012 WD5003ABYX 1* rdx quickstor slot