Tag Archives: centos

CentOS remote headless install

Soms is het nodig om een systeem op afstand te herinstalleren zonder dat je toegang hebt tot het console, bijvoorbeeld als jouw systeem in een datacenter hangt aan de andere kant van het land. Ik verwacht dit binnenkort nodig te gaan hebben bij een hoster die gebruik maakt van een eigen kernel, waar ik geen gebruik van wil maken en dus een schone installatie wil doen.

CentOS en dus Red Hat, Fedora, Scientific Linux, e.d., gebruiken Anaconda als installatie programma en deze kan gebruik maken van VNC, dus het principe is simpel. Boot met de installatie kernel en geef aan dat je gebruik wilt maken van VNC, zodat je vanaf een remote locatie contact kunt maken met de VNC server die door Anaconda is gestart, om de installatie af te maken.

Uiteraard is het ook mogelijk om gebruik te maken van een kickstart file, zodat de hele installatie ‘unattended’ zal, maar dat gaat voor dit doel een beetje te ver.

Download installatie kernel

Log in op het systeem die je opnieuw wilt installeren en voorzie deze van de installatie kernel

mkdir /boot/netimage
wget -P /boot/netimage http://mirror.centos.org/centos/6.2/os/x86_64/isolinux/vmlinuz
wget -P /boot/netimage http://mirror.centos.org/centos/6.2/os/x86_64/isolinux/initrd.img

Pas de bootloader aan

Nu moet de installatie kernel toegevoegd worden aan de (Grub) bootloader. Dit kun je het beste met het commando grubby doen, die zorgt voor de juiste formattering en zal ook de padnamen aanpassen aan de lokale situatie. Gebruik je grubby niet, let er dan in ieder geval op dat indien je /boot op een aparte partitie hebt, je de kernel-bestanden aanwijst als /netimage/vmlinuz en /netimage/initrd.img, dus zonder /boot er voor.

grubby --add-kernel=/boot/netimage/vmlinuz --initrd=/boot/netimage/initrd.img --args="ip=10.0.0.116 netmask=255.255.255.0 gateway=10.0.0.1 dns=8.8.8.8 ksdevice=eth0 repo=http://mirror.centos.org/centos/6.2/os/x86_64/ headless lang=en_US keymap=us vnc vncpassword=foobar" --title="CentOS 6.2 VNC install"

Het ip adres, netmask en de gateway dien je uiteraard aan te passen aan je eigen situatie. Voor de duidelijkheid, deze gegevens neem je over van het draaiende systeem!

De dns server 8.8.8.8 is de Google publieke DNS server, deze kun je aanpassen naar eigen wens, maar is dus niet nodig.

Het VNC wachtwoord is niet nodig maar ik raad je wel aan om deze te gebruiken. Er zal maar een of andere grapjas je installatie overnemen en de boel vernaggelen.

Bereid volgende boot voor

Grub kent een leuk grapje waarbij je eenmalig de default kernel aan kunt passen. Dat houdt dus in dat indien er onverhoopt iets mis gaan bij het booten van de installatie kernel, je met een reboot (powercycle) het systeem weer laat booten van de normale kernel.

De volgende commando’s regelen dit voor je. GRUBINDEX levert dus de positie op van de installatie kernel in de grub config.

GRUBINDEX=$(grubby --info=/boot/netimage/vmlinuz|awk -F\= '$1 ~ /^index/ {print $2}')
echo "savedefault --stage2=/boot/grub/stage2 --default=${GRUBINDEX} --once" | grub --batch

Reboot!

Na de reboot zal je systeem booten van de installatie kernel en via http://mirror.centos.org/centos/6.2/os/x86_64/ de installatie image (install.img = 129MB) ophalen. Zodra deze binnen is zal de grafische installatie gestart worden en pas van dit moment kun je met VNC connecten op 10.0.0.116:1 (:1 is gelijk aan poort 5901) om de installatie af te maken.

Voor dat je dit remote gaat doen, is het trouwens verstandig om dit een paar keer te testen op een (lokaal) systeem waar je wel het scherm van kunt zien tijdens de boot. Zo kun je een en ander finetunen en ervaring krijgen met dit bootproces. Deze handleiding heb ik geschreven door gebruik te maken van virtuele (KVM) hosts.

 

Transip VPS pilot

Transip wil binnenkort als dienst VPS’en gaan aanbieden, maar voordat deze dienst wordt aangeboden, willen ze eerst een pilot draaien waarin deelnemers een maand gratis gebruik kunnen maken van een VPS. In die maand kan Transip kijken wat de invloed is van de VPS omgeving op hun bestaande infrastructuur.

Nu komt deze pilot voor mij op precies het juiste moment. Mijn eigen server is inmiddels ouder dan 4 jaar en staat op de nominatie om uitgefaseerd te gaan worden. Deze server draait bij mij thuis en ook dat is een situatie waar ik eigenlijk wel van af wil. Ook al ik de machine zo stil mogelijk en zo heb ik destijds al nagedacht over de energieconsumptie, toch is hij nog hoorbaar in sommige delen van het huis en uiteraard heb ik ook liever het energieverbruik van het huishouden een stukje lager. Tevens staat het idee van het niet meer druk hoeven maken om (mogelijk) uitvallende hardware mij ook wel aan 🙂

Via Twitter account van Transip hoorde ik dat er extra VPS beschikbaar kwamen in de pilot. Ik had al eerder aangeven graag gebruik te willen maken van de pilot, maar hoorde helaas niets. Nu nogmaals gemaild naar Transip en jawel hoor, ik kreeg mail dat er een VPS voor mij beschikbaar zou komen. Yes!

In de portal van Transip (pilot is alleen beschikbaar voor bestaande klanten), was voor mij nu de optie VPS er bij gekomen. Ik kon kiezen uit een installatie van verschillende Linux’en, FreeBSD en OpenBSD. Ik heb gekozen voor Centos 6 en via het console (webbased java applet), zag ik dat het systeem geboot was en in het normale Centos installatie scherm stond te wachten op input van mij.

Het werken via webgui console ging goed, ik merkte echter wel een duidelijke vertraging in de muis bewegingen. Toen het systeem eenmaal geĂŻnstalleerd (minimal) was, werkte het text console uitstekend via de webgui. Via het console heb ik uiteraard meteen SSH aangezet, zodat ik het systeem verder via SSH kon afconfigureren.

Tot nu toe gaat het werken met de VPS erg goed. Het systeem is lekker ‘responsive’ en eigenlijk merk ik geen verschil in het werken met deze VPS bij Transip, of mijn eigen (net als Transip, gebruik ik ook KVM voor virtualisatie) virtuele systemen die op mijn LAN gehost worden.

De VPS zoals deze door Transip is opgeleverd, is voorzien van een 50 GB harddisk. Hopelijk is straks na de pilot het mogelijk om meer storage te krijgen, bijvoorbeeld via NFS of iSCSI.

Conclusie: dit zou wel eens een blijvertje kunnen zijn, als de prijsstelling mij een ‘beetje’ aanstaat 🙂

Dovecot met LDAP (jamm) en SSL (imaps)

Ik gebruik al langere tijd FreeBSD voor al mijn thuis servers. Echter zakelijk kom ik FreeBSD niet zo vaak tegen, echter Red Hat Enterprise Linux en aanverwanten wel. Vorig jaar heb ik besloten om mezelf te gaan certificeren voor Red Hat en heb RHCE gehaald. Nu ben ik voorzichtig aan het kijken om misschien zelfs voor RHCA te gaan.

Om nog vaker met RHEL systemen te werken, worden steeds meer van mijn FreeBSD machines vervangen door Centos systemen. Binnenkort zal mijn huidige FreeBSD mailserver daarom ook vervangen worden door een Centos systeem. Ter voorbereiding daarop heb ik alvast uitgezocht hoe ik Dovecot (imaps) laat samenwerken met mijn huidige mailstorage omgeving, waarbij authenticatie gegevens in LDAP staan en ik gebruik heb gemaakt van het Jamm schema.

Voor IMAPS maak ik gebruik van certificaten die gesigned zijn door cacert.org. Deze Certificate Authority werkt met een methode ‘Web of trust’ die soortgelijk is aan de methode waarop bijvoorbeeld PGP/GPG key signing werkt. Uiteraard kun je er ook voor kiezen om je certificaten van een andere partij te betrekken of te werken met ‘self signed’ certificaten.

Voordat we aan de slag kunnen, moeten er eerst wat packages geĂŻnstalleerd worden:

sudo yum -y install dovecot openssl

Voor het verkrijgen van een door CAcert gesigned certificaat, moet je een ‘signing request’ (CSR) aanmaken. Een CSR maak je aan voor een door jezelf gegeneerde RSA private key. Normaal gesproken moet je dus met het openssl commando eerst een RSA KEY aanmaken en dan een CSR. Dit is allemaal best wel lastig, gelukkig is het bij RHEL systemen erg simpel gemaakt:

cd /etc/pki/tls/certs
make dovecot.csr

(Vul bij CommonName de volledige naam (fqdn) in van jouw systeem, dus bijvoorbeeld: imapserver.example.com)

Ga hierna naar https://secure.cacert.org/account.php?id=10 en plak de inhoud van dovecot.csr in het formulier. Laat het certificaat type op Class 3 staan. Na wat klikken komt er uiteindelijk een prachtig gesigned certificaat, plak de inhoudt hiervan in dovecot.crt. Je krijgt ook een email van CAcert met de link naar jouw nieuwe certificaat. Je hebt ook het Class 3 root certificaat nodig van CAcert. download deze van http://www.cacert.org/certs/class3.crt

Vanuit de Dovecot configuratie file gaan we straks verwijzen naar deze 3 bestanden, zet deze op de juiste plaats, met passende permissies:

install -o root -g root -m 644 class3.crt /etc/pki/tls/certs/cacert-class3.crt
install -o root -g root -m 644 dovecot.crt /etc/pki/dovecot/certs/dovecot.crt
install -o root -g root -m 644 dovecot.key /etc/pki/dovecot/private/dovecot.key

Plaats het volgende in /etc/dovecot.conf. Maak eerst een backup!

auth_verbose = yes
protocols = imap imaps
base_dir = /var/run/dovecot/

ssl_cert_file = /etc/pki/dovecot/certs/dovecot.crt
ssl_key_file = /etc/pki/dovecot/private/dovecot.key
ssl_ca_file = /etc/pki/tls/certs/cacert-class3.crt

shutdown_clients = yes
mail_location = maildir:/var/vmail/domains/%d/%n

auth default {
mechanisms = PLAIN LOGIN

userdb static {
args = uid=500 gid=500
}

passdb ldap {
args = /etc/dovecot-ldap.conf
}

userdb ldap {
args = /etc/dovecot-ldap.conf
}

socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
group = vmail
}
}

user = vmail
}

Zorg er voor dat een en ander conform jouw setup is. Denk hierbij vooral aan de user (vmail) en het bijbehorende UID (500) en de locatie van de imap data (mail_location). Bij mij staat de imap dat in /var/vmail/domains/$domein/$user, bijvoorbeeld /var/vmail/domains/example.com/pietjepuk. De loginnaam van deze voorbeeld gebruiker is dan pietjepuk@example.com.

In mail_location worden enkele Dovecot specifieke variabelen gebruikt. De betekenis er van en andere mogelijkheden, vind je op http://wiki.dovecot.org/Variables

Plaats het volgende in /etc/dovecot-ldap.conf. Als het goed is, bestond dit bestand nog niet. Anders maak je uiteraard eerst een backup.

hosts = $ldapserver
auth_bind = yes
auth_bind_userdn = mail=%u,vd=%d,o=hosting,dc=example,dc=com
ldap_version = 3
base = o=hosting,dc=example,dc=com
dn = cn=phamm,o=hosting,dc=example,dc=com
dnpass = $password
deref = never
scope = subtree
user_attrs = mailbox=mail=maildir:/var/vmail/domains/%$
user_filter = (&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u))
pass_attrs = mail,userPassword
pass_filter = (&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u))
default_pass_scheme = MD5
user_attrs = quota=quota=maildir:storage=%$B
user_global_uid = 500
user_global_gid = 500

Ook hier geldt weer, pas alles aan naar jouw eigen situatie.

Alle instellingen zijn nu gedaan. Start Dovecot en testen maar!

chkconfig dovecot on
service dovecot restart

Bij het starten van Dovecot, wordt er gevraagd om de passphrase van je SSL key (dovecot.key). Mocht je dit niet willen, dan dien je de passphrase te verwijderen van je key. Dat doe je als volgt:

openssl rsa -in dovecot.key -out dovecot.key