Getting started with Photon OS
Gepubliceerd op 29 oktober 2018 • 5 min leestijd • 873 woordenDimitri en Erik hebben gesproken over Photon en de integratie in vRealize Automation, maar hoe ga je te werk om bijvoorbeeld een containerhost te maken met Photon OS, voor OTNSX?
Voor de implementatie van Photon OS heb je in principe twee opties:
Als je een vooraf gebouwde virtuele machine met Photon OS downloadt, krijg je de minimale installatie. Dat betekent dat de virtuele machine eenvoudig te downloaden en te implementeren is, licht op middelen, maar het gedrag is misschien niet zoals je zou verwachten. Bijvoorbeeld, het ‘ping’-commando ontbreekt in de virtuele machine. Dat is echter geen probleem, aangezien je die dingen vrij eenvoudig kunt installeren met tdnf install
Als je vanaf de ISO installeert, kun je kiezen voor de minimale of de volledige versie. Volledig betekent dat alles is geïnstalleerd. Well, alles is veel, maar op zijn minst is het merendeel van wat je nodig hebt geïnstalleerd. En zelfs dan ben je vrij om extra pakketten te installeren met tdnf.
Photon OS wordt geïnstalleerd met maar één account: root. Als je op afstand wilt inloggen met SSH op deze machine, kun je SSH forceren om root-toegang te accepteren, maar dat vind ik geen goed idee, niet alleen voor loggen/aansprakelijkheid, maar ook vanuit een toegangsperspectief. Je wilt toch niet de root-wachtwoorden voor systemen uitgeven, toch?
Naar mijn mening is het beter om een apart account aan te maken dat de optie heeft om commando’s uit te voeren als een supergebruiker:
useradd -m -G sudo testgebruiker
-m maakt de thuismap aan, terwijl -G de gebruiker toevoegt aan de sudo-groep.
De laatste stap is om het sudoers-bestand te bewerken met visudo. Zoek naar %sudo en verwijder het ‘#’ van die regel. Daarna kun je inloggen met dat account en commando’s uitvoeren als een baas met ‘sudo
Als je jouw machine wilt controleren of hij in bedrijf is, is het handig om een ping uit te voeren. Helaas werkt ping niet standaard. Reactie op ICMP echo (ping) is standaard uitgeschakeld. Ik weet het, als het niet zichtbaar is, is het misschien moeilijker te hacken. Maar dan weer, het probleemoplossen is ook moeilijker.
Als je wilt dat je host reageert op ICMP, moet je een aantal firewallregels instellen:
iptables -A INPUT -p ICMP -j ACCEPT
iptables -A OUTPUT -p ICMP -j ACCEPT
Ik weet het niet zeker van de laatste, het leek te werken met alleen de eerste. Verschillende gidsen op internet gaven beide. Men zou kunnen concluderen dat je zowel de uitvoer als de invoer moet definiëren, maar aangezien het een sessie is denk ik niet dat het nodig is.
Als je wilt dat de regels een herstart overleven, kun je de regels opslaan met
iptables-save > /etc/systemd/scripts/ip4save
Ik hoef je niet te vertellen om een back-up van dat bestand te maken voordat je begint met je opslagactie.
Ik zag dat je het ook kunt toevoegen aan /etc/systemd/scripts/iptables, wat wordt uitgevoerd bij de start van iptables, maar aangezien iptables-save de ’normale’ gang van zaken is, zou ik je aanbevelen niet het script te bewerken, maar het op te slaan met iptables-save. Zorg er alleen voor dat je dit direct na installatie doet, zodat andere processen zoals Docker-containers geen firewallregels hebben gecreëerd.
Er zijn momenten dat je netwerkverbindingen vanuit Photon OS zelf wilt troubleshooten. Dan heb je ping nodig. Echter, als je de minimale versie hebt geïmplementeerd, moet je het zelf installeren met:
tdnf install iputils
Hetzelfde geldt voor het troubleshooten van DNS vanuit Photon OS:
tdnf bindutils
Meer informatie over tdnf vind je op https://github.com/vmware/tdnf/wiki
Photon OS gebruikt de systemd-networkd-daemon voor configuratie, dezelfde methode als Arch Linux gebruikt (https://wiki.archlinux.org/index.php/Systemd-networkd). Bestanden worden achtereenvolgens verwerkt. Het proces eindigt na de eerste match. Het enige bestand nu is 99-dhcp-en.network, wat een ‘vangnet’ is, zodat alle interfaces een DHCP-adres krijgen als er geen regels overeenkomen voor een specifieke interface.
Om een statisch IP-adres in te stellen, maak je een bestand in /etc/systemd/network. Noem het iets logisch, 10-static-en.network met de volgende inhoud:
[Match]
Name=eth0
[Network]
DHCP=no
Address=192.168.1.10/24
Gateway=192.168.1.1
Domains=domain.local
DNS=192.168.1.71
Wijzig de rechten van dat bestand, zodat het alleen beschrijfbaar is door root en leesbaar door groep en anderen:
chmod 644 10-static-en.network
Natuurlijk verander je de IP-instelling naar je eigen wensen.
Een tweede IP-adres toevoegen aan de interface is eenvoudig: Voeg nog een Address-regel toe:
[Match]
Name=eth0
[Network]
DHCP=no
Address=192.168.1.10/24
Address=192.168.1.11/24
Gateway=192.168.1.1
Domains=domain.local
DNS=192.168.1.71
Hetzelfde geldt voor IPv6-adressen, je kunt deze toevoegen met een Address-regel. Als je een andere interface hebt toegevoegd aan de virtuele machine, kun je nog een bestand maken, bijvoorbeeld 20-static-en.network met de relevante informatie voor die interface.
[Match] Name=eth1
[Network] Address=192.168.2.10/24 Gateway=192.168.2.1 Domains=domain.local
Update De laatste stap is om je virtuele machine bij te werken met tdnf update
Conclusie Nu ben je in staat om je Photon OS virtuele machine te configureren, het een statisch IP-adres te geven en verbinding te maken met een niet-root account via SSH. Nu kun je beginnen met het gebruiken als een containerhost, maar dat is iets voor een andere post.