Mailserver opzetten mbv Ansible

Ansible gebruikt yaml scripts om software te installeren en configuratie bestanden aan te passen. Door het uitvoeren van zo'n script wordt alles gedownload, geïnstalleerd en aangepast. Het enige wat je vooraf moet doen is dit alles mogelijk maken.

1. Installeer een Operating systeem

Ik werk al jaren met Red Hat, maar voor dit project heb ik gekozen voor CentOS 7.

Installeer niet teveel. Een minimal install die sommige hosters zelfs hebben als sjabloon is genoeg.

2. Ansible config en uitwisseling SSH keys.

Er wordt verondersteld dat je al een ansible ready server hebt. Vanaf nu zal ik die ook refereren als Ansible-server. Heb je nog geen Ansible-server, dan is dit snel gefixt. Ansible is te vinden in de epel repo.

rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
yum -y update
yum -y install ansible

Installeer dit op een CentOS 7 server die connectie kan maken met je nieuwe mailserver.

Uitwisseling van ssh-keys

Ansible kan alleen maar commando's uitvoeren op een target wanneer het toegang heeft.

Het gemakkelijkste is te werken als root, maar via sudo kan je ook alles doen. De scrips zijn gemaakt om alles uit te voeren als root.

 

Voeg de client toe (op Ansible-server) in /etc/hosts zodat de client kan aangesproken worden per hostname. Bewerk /etc/hosts en vul de lijst aan.
vi /etc/hosts

    10.11.94.58	Madison7
    10.11.94.59	Memphis7

 

Voeg de key toe aan de authorized_keys file

Via keys kan de ansible-server communiceren met de client. Voorwaarde is dat de client dit toe laat. Een typische locactie (op de client) is /etc/ssh/sshd_config.
De belangrijkste parameters zijn:

PermitRootLogin yes
AuthorizedKeysFile  .ssh/authorized_keys
AllowUsers root

 

Copieer nu de public key van de Ansible-server naar de client

scp /root/.ssh/id_rsa.pub root@Madison7:/root/.ssh/id_rsa.pub

Vervang Madison7 met de naam van je client (zoals je hebt gededinieerd in de hosts file)

Voeg die public key nu toe op de client (naar het voorbeeld dus Madison7) in de authorized_keys file

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

 

Verplichte test.

De test gaat twee dingen gaan doen.
Ten eerste zijn we zeker dat de verbinding mogelijk is via ssh-keys, zonder een paswoord te moeten invoeren.

Ten tweede, en daarom schrijf ik "verplicht", is het noodzakelijk om de client toe te voegen aan de know_hosts.

Voer uit:

ssh root@Madison7

De eerste keer zal je gevraagd worden om Madison7 te bewaren als een gekende host.
De volgende keren zal deze vraag niet meer gesteld worden en zit je zo zonder een paswoord in te voeren op de client.
Keer terug naar de Ansible server door exit te typen

Ansible-server gaat alleen scripts gaan uitvoeren op de clients die hij kent. In deze stap gaan we de clients toevoegen aan de hosts config van Ansible.

vi /etc/ansible/hosts

voeg bv toe onder de rubriek/sectie [webserver]

   Madison7

 

3. Share keys tussen de client en de te migreren server.

Log in op de client (via ssh), zet de naam, genereer een ssh-key

hostname Madison7
ssh-keygen
vi /root/.ssh/id_rsa.pub
scp /root/.ssh/id_rsa.pub root@ip.old.server:/root/.ssh/id_rsa.pub

Log nu in op de te migreren server

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

Log terug in op de client en probeer de verbinding. Opgelet terug verplicht (zie vorige procedure)

ssh root@ip.old.server

Je bent nu klaar om het ansible script te laten uitvoeren

 

4. Het werk

a) Laat ansible postfix installeren en configureren

Bekijk de variabelen, in de de directory variables, en de tasks vooraleer uit te voeren. Pas aan waar nodig. Run vervolgens het ansible script

ansible-playbook -l Madison7 Postfix.yml

b) MailScanner

Ik heb het MailScanner script niet nagemaakt en opgenomen in ansible. We kiezen voor de kennis van MailScanner en laten alles over aan hen.
Ondertussen werd Mailscanner gedownload en staat deze klaar op de client in de folder tmp/MailScanner-versie...
Let op bij de vragen die gesteld worden. Een MTA, spamassassin en Clam AV zijn reeds geinstalleerd en geconfigureerd. Antwoord dan ook met een Nee (N) wanneer die optie wordt voorgesteld.
Voer uit op de nieuwe host/client!!

cd /tmp/MailScanner-4.85.2-3 && ./install.sh

Answer Y except for installing an MTA, Spamassassin and Clam AV

c) Voeg features toe aan MailScanner

Terug op de ansible-server

ansible-playbook -l Madison7 MailScanner.yml

d) Ansible - System

Copieer de data van de te migreren server naar de client

ansible-playbook -l Madison7 SystemMadison.yml

e) Postfixadmin staat klaar.

Waneer je een upgrade hebt gedaan dan moet je het volgende uitvoeren op de client.
-> login
-> /upgrade.php

g) Reboot

Een reboot kan nooit geen kwaad.

 

That's it.

 

De yaml files

De Ansible scripts kan je hier downloaden.

Vergeet niet de variabelen na te kijken en aan te passen naar jouw noden.

Terug naar overzicht nieuws