server opzetten
Serverprovisionering: van een kale machine naar een operationele server
Een server zonder provisionering is een dure bak metaal. Dit artikel legt uit hoe provisionering werkt, welke stappen het proces omvat en hoe u het automatiseert met tools als Ansible en Terraform — voor beheerders die servers consistent en reproduceerbaar willen opleveren.
VEREISTEN
- Een fysieke server, virtuele machine of cloudinstantie met minimaal 2 CPU-cores, 4 GB RAM en 20 GB opslag
- SSH-toegang tot de server (poort 22)
- Een besturingssysteem naar keuze: Ubuntu 22.04 LTS, CentOS Stream 9 of SUSE Linux Enterprise Server 15 SP5
- Voor automatisering: Ansible 2.14 of hoger, of Terraform 1.5 of hoger op uw beheersysteem
- Root- of sudo-rechten op de doelserver
1. Installeer het besturingssysteem
Bij fysieke servers installeert u het besturingssysteem via een opstartbare USB-stick, een ISO-image of een PXE-netwerkinstallatie. Bij virtuele servers en cloudinstanties kiest u een template of image in het platform — bijvoorbeeld een Ubuntu 22.04-cloudimage in AWS EC2 of KVM. Zorg ervoor dat u tijdens de installatie een sterk root-wachtwoord instelt of een SSH-sleutel toevoegt.
2. Configureer de netwerkomgeving
Stel het IP-adres, subnetmasker, gateway en DNS-servers in. Bij Ubuntu 22.04 bewerkt u het bestand `/etc/netplan/01-netcfg.yaml`:
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4Pas het bestand toe met `sudo netplan apply`. Stel daarna de hostname in met `sudo hostnamectl set-hostname webserver01`. Configureer tijdsynchronisatie met NTP via `sudo timedatectl set-ntp true`.
3. Ken hardwarebronnen toe
Bij virtuele servers wijst u CPU, geheugen, opslag en netwerkbandbreedte toe via de hypervisor of het cloudplatform. Bij VMware gebruikt u vSphere, bij KVM `virsh`, bij AWS EC2 kiest u een instancetype zoals t3.medium. Bij bare-metal servers bepaalt de fysieke hardware de resources — maar u moet nog steeds vaststellen welke resources naar welke rollen gaan, bijvoorbeeld 4 GB RAM voor de database en 2 GB voor de webserver.
4. Installeer de benodigde services
Installeer de software die de server nodig heeft om zijn taak uit te voeren. Voor een webserver op Ubuntu 22.04:
sudo apt update
sudo apt install -y nginx mysql-server openssh-server
sudo systemctl enable --now nginx
sudo systemctl enable --now mysqlVoor een databaseserver installeert u PostgreSQL 15 of MySQL 8.0. Voor een applicatieserver installeert u de runtime die u nodig hebt, zoals Node.js 20 of Python 3.11. De SSH-daemon is standaard aanwezig op de meeste Linux-distributies — controleer of deze draait met `sudo systemctl status ssh`.
5. Automatiseer met infrastructure as code
Gebruik Ansible om de configuratie vast te leggen in code. Maak een playbook aan, bijvoorbeeld `provision.yml`:
---
<ul><li>name: Provision web server</li></ul>
hosts: webservers
become: yes
tasks:
- name: Install nginx
apt:
name: nginx
state: present
- name: Start nginx
service:
name: nginx
state: started
enabled: yes
- name: Set hostname
hostname:
name: "{{ inventory_hostname }}"Voer het playbook uit met `ansible-playbook -i inventory provision.yml`. Voor cloudinfrastructuur gebruikt u Terraform om de infrastructuur zelf te beschrijven — bijvoorbeeld een EC2-instantie of een KVM-gast — en Ansible voor de configuratie daarbovenop.
6. Stel monitoring, logging en back-ups in
Installeer en configureer monitoringagents zoals Prometheus Node Exporter of Zabbix-agent. Configureer logforwarding naar een centrale logserver met rsyslog of Filebeat. Stel back-ups in met `cron` en `rsync` of tools als Bacula. Een voorbeeld van een cronjob voor dagelijkse databaseback-ups:
0 2 <em> </em> * mysqldump -u root -p'wachtwoord' mydatabase > /backups/mydatabase_$(date +\%Y\%m\%d).sqlStel updateroutines in met `unattended-upgrades` op Ubuntu of `dnf-automatic` op CentOS Stream.
7. Registreer de server in het beheersysteem
Voeg de server toe aan uw configuratiemanagementdatabase (CMDB) of uw cloudbeheerplatform. Bij BMC Cloud Lifecycle Management voert u de voorbereidende taken uit in BMC Server Automation en koppelt u de server daarna aan het cloudbeheersysteem. Wijs de server toe aan een omgeving (test, staging of productie) en koppel het beveiligingsbeleid.
8. Voer een laatste controle uit
Start de server opnieuw op om te controleren of alle services automatisch starten. Controleer of de server bereikbaar is op het netwerk en of alle services correct draaien.
VERIFICATIE
Controleer of de server volledig operationeel is:
ssh gebruiker@server-ip
hostname
ip addr show
systemctl status nginx
systemctl status mysql
curl -I http://localhostAls u een webserver hebt ingericht, moet de `curl`-opdracht een HTTP 200-status retourneren. Controleer ook of de monitoringagent data verstuurt naar uw centrale monitoringsysteem en of de eerste back-up succesvol is uitgevoerd.
VEELGESTELDE PROBLEMEN
1. Netwerk werkt niet na configuratie
Controleer of de netwerkconfiguratie klopt met `ip addr show` en `ip route show`. Test de verbinding met `ping 8.8.8.8`. Als DNS niet werkt, controleer dan de nameservers in `/etc/resolv.conf`. Bij Ubuntu 22.04 kan Netplan de configuratie overschrijven — controleer of u `netplan apply` hebt uitgevoerd.
2. Services starten niet na reboot
Controleer of de services zijn ingeschakeld met `systemctl is-enabled nginx`. Als ze niet zijn ingeschakeld, gebruik dan `sudo systemctl enable nginx`. Controleer ook of de services geen conflicterende poorten gebruiken met `sudo ss -tulpn`.
3. Ansible-playbook faalt met SSH-fout
Controleer of de SSH-sleutel is toegevoegd aan `~/.ssh/authorized_keys` op de doel-server. Test de verbinding handmatig met `ssh gebruiker@server-ip`. Controleer of de gebruiker sudo-rechten heeft zonder wachtwoord — voeg toe aan `/etc/sudoers.d/` met `visudo`.
SLOT
Server provisioning stopt niet bij het installeren van een OS — het is een doorlopend proces van configuratie, automatisering en beheer dat elke server identiek en voorspelbaar maakt. De volgende keer dat u een server oplevert, begint het werk pas echt.