Configurer un serveur
Provisioning de serveur : de la machine vierge au serveur opérationnel
Un serveur sans provisioning est une coûteuse boîte en métal. Cet article explique comment fonctionne le provisioning, quelles étapes le processus comprend et comment l’automatiser avec des outils comme Ansible et Terraform — pour les administrateurs qui veulent déployer des serveurs de manière cohérente et reproductible.
PRÉREQUIS
- Un serveur physique, une machine virtuelle ou une instance cloud avec au minimum 2 cœurs CPU, 4 Go de RAM et 20 Go de stockage
- Un accès SSH au serveur (port 22)
- Un système d’exploitation au choix : Ubuntu 22.04 LTS, CentOS Stream 9 ou SUSE Linux Enterprise Server 15 SP5
- Pour l’automatisation : Ansible 2.14 ou supérieur, ou Terraform 1.5 ou supérieur sur votre système de gestion
- Des droits root ou sudo sur le serveur cible
1. Installez le système d’exploitation
Pour les serveurs physiques, vous installez l’OS via une clé USB bootable, une image ISO ou une installation réseau PXE. Pour les serveurs virtuels et les instances cloud, vous choisissez un modèle ou une image dans la plateforme — par exemple une image cloud Ubuntu 22.04 dans AWS EC2 ou KVM. Assurez-vous de définir un mot de passe root robuste ou d’ajouter une clé SSH pendant l’installation.
2. Configurez l’environnement réseau
Définissez l’adresse IP, le masque de sous-réseau, la passerelle et les serveurs DNS. Sous Ubuntu 22.04, vous modifiez le fichier `/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.4Appliquez le fichier avec `sudo netplan apply`. Définissez ensuite le nom d’hôte avec `sudo hostnamectl set-hostname webserver01`. Configurez la synchronisation temporelle avec NTP via `sudo timedatectl set-ntp true`.
3. Attribuez les ressources matérielles
Pour les serveurs virtuels, vous allouez le CPU, la mémoire, le stockage et la bande passante réseau via l’hyperviseur ou la plateforme cloud. Avec VMware, vous utilisez vSphere ; avec KVM, `virsh` ; avec AWS EC2, vous choisissez un type d’instance comme t3.medium. Pour les serveurs bare-metal, le matériel physique détermine les ressources — mais vous devez quand même déterminer quelles ressources vont à quels rôles, par exemple 4 Go de RAM pour la base de données et 2 Go pour le serveur web.
4. Installez les services nécessaires
Installez le logiciel dont le serveur a besoin pour accomplir sa tâche. Pour un serveur web sous Ubuntu 22.04 :
sudo apt update
sudo apt install -y nginx mysql-server openssh-server
sudo systemctl enable --now nginx
sudo systemctl enable --now mysqlPour un serveur de base de données, installez PostgreSQL 15 ou MySQL 8.0. Pour un serveur d’applications, installez l’environnement d’exécution nécessaire, comme Node.js 20 ou Python 3.11. Le démon SSH est présent par défaut sur la plupart des distributions Linux — vérifiez qu’il tourne avec `sudo systemctl status ssh`.
5. Automatisez avec l’infrastructure en tant que code
Utilisez Ansible pour consigner la configuration dans le code. Créez un playbook, par exemple `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 }}"Exécutez le playbook avec `ansible-playbook -i inventory provision.yml`. Pour l’infrastructure cloud, utilisez Terraform pour décrire l’infrastructure elle-même — par exemple une instance EC2 ou un invité KVM — et Ansible pour la configuration par-dessus.
6. Configurez la surveillance, les journaux et les sauvegardes
Installez et configurez des agents de surveillance comme Prometheus Node Exporter ou l’agent Zabbix. Configurez le transfert des journaux vers un serveur de journaux central avec rsyslog ou Filebeat. Configurez des sauvegardes avec `cron` et `rsync` ou des outils comme Bacula. Un exemple de tâche cron pour des sauvegardes quotidiennes de la base de données :
0 2 <em> </em> * mysqldump -u root -p'motdepasse' mydatabase > /backups/mydatabase_$(date +\%Y\%m\%d).sqlConfigurez des routines de mise à jour avec `unattended-upgrades` sur Ubuntu ou `dnf-automatic` sur CentOS Stream.
7. Enregistrez le serveur dans le système de gestion
Ajoutez le serveur à votre base de données de gestion de configuration (CMDB) ou à votre plateforme de gestion cloud. Avec BMC Cloud Lifecycle Management, vous effectuez les tâches préparatoires dans BMC Server Automation puis vous liez le serveur au système de gestion cloud. Assignez le serveur à un environnement (test, préproduction ou production) et liez la politique de sécurité.
8. Effectuez une vérification finale
Redémarrez le serveur pour vérifier que tous les services démarrent automatiquement. Vérifiez que le serveur est joignable sur le réseau et que tous les services fonctionnent correctement.
VÉRIFICATION
Vérifiez que le serveur est pleinement opérationnel :
ssh utilisateur@ip-serveur
hostname
ip addr show
systemctl status nginx
systemctl status mysql
curl -I http://localhostSi vous avez configuré un serveur web, la commande `curl` doit retourner un statut HTTP 200. Vérifiez également que l’agent de surveillance envoie des données à votre système de surveillance central et que la première sauvegarde a été effectuée avec succès.
PROBLÈMES FRÉQUENTS
1. Le réseau ne fonctionne pas après la configuration
Vérifiez que la configuration réseau est correcte avec `ip addr show` et `ip route show`. Testez la connexion avec `ping 8.8.8.8`. Si le DNS ne fonctionne pas, vérifiez les serveurs de noms dans `/etc/resolv.conf`. Sous Ubuntu 22.04, Netplan peut écraser la configuration — vérifiez si vous avez exécuté `netplan apply`.
2. Les services ne démarrent pas après un redémarrage
Vérifiez si les services sont activés avec `systemctl is-enabled nginx`. S'ils ne sont pas activés, utilisez `sudo systemctl enable nginx`. Vérifiez également que les services n'utilisent pas de ports conflictuels avec `sudo ss -tulpn`.
3. Le playbook Ansible échoue avec une erreur SSH
Vérifiez que la clé SSH a été ajoutée à `~/.ssh/authorized_keys` sur le serveur cible. Testez la connexion manuellement avec `ssh utilisateur@server-ip`. Vérifiez que l'utilisateur a des droits sudo sans mot de passe — ajoutez-le à `/etc/sudoers.d/` avec `visudo`.
CONCLUSION
Le provisioning de serveurs ne s'arrête pas à l'installation d'un OS — c'est un processus continu de configuration, d'automatisation et de gestion qui rend chaque serveur identique et prévisible. La prochaine fois que vous livrez un serveur, le travail ne fait que commencer.