> ## Documentation Index
> Fetch the complete documentation index at: https://infra-docs.kaeyros.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Ajouter un nouveau serveur au parc Hetzner

> Procédure complète pour ajouter un serveur Hetzner : commande, installation Ubuntu, bootstrap Ansible, intégration Rancher et monitoring.

Cette page décrit la procédure complète pour ajouter un nouveau serveur au parc Hetzner de la plateforme Kaeyros Analytics. Elle couvre la commande du matériel, l'installation du système, le bootstrap par Ansible, l'intégration au cluster Kubernetes et la déclaration dans les outils de surveillance.

> [!NOTE]
>
> Le provisionnement matériel chez Hetzner (commande et installation initiale) reste une étape manuelle. Ansible intervient à partir de l'étape 5, une fois Ubuntu installé.

## Procédure

**1. Commander le serveur dans Hetzner Cloud**

Connectez-vous à la console Hetzner Cloud et commandez un serveur dédié adapté à l'usage prévu (nœud Kubernetes, outillage, ou autre). Notez l'adresse IP et les identifiants d'accès Rescue.

**2. Installer Ubuntu via installimage**

Démarrez le serveur en mode Rescue, puis lancez l'outil `installimage` pour installer Ubuntu 22.04 LTS (ou la version standardisée par l'équipe). Configurez le RAID si nécessaire et redémarrez sur le disque.

**3. Copier la clé SSH admin**

Une fois Ubuntu démarré, copiez la clé SSH publique de l'équipe DevOps dans le fichier `~/.ssh/authorized_keys` de l'utilisateur root (ou créez un utilisateur dédié). Vérifiez la connexion SSH depuis votre poste :

```bash theme={null}
ssh root@<ip_du_serveur>
```

**4. Ajouter dans l'inventaire Ansible**

Éditez le fichier d'inventaire correspondant à l'environnement cible (dev, stg ou prod) :

```bash theme={null}
ansible-vault edit inventory/prod/hosts.yml
```

Ajoutez le nouvel hôte dans le groupe approprié (par exemple `k8s_workers`, `tooling`, etc.) avec son adresse IP et ses variables spécifiques.

**5. Lancer le playbook bootstrap**

Exécutez le playbook de bootstrap sur le nouveau serveur en mode simulation, puis réellement :

```bash theme={null}
ansible-playbook -i inventory/prod playbooks/bootstrap.yml --limit <nom_du_serveur> --check
ansible-playbook -i inventory/prod playbooks/bootstrap.yml --limit <nom_du_serveur>
```

**6. Enrôler dans Rancher si nœud Kubernetes**

Si le serveur est destiné à rejoindre le cluster RKE2, suivez la procédure d'enrôlement via l'interface Rancher. Récupérez la commande d'inscription du cluster et exécutez-la sur le nouveau nœud. Attendez la validation du statut `Ready`.

**7. Déclarer dans le monitoring**

Ajoutez le serveur dans les configurations de scrape de VictoriaMetrics (vmagent) et dans l'inventaire Wazuh si ce n'est pas déjà couvert par les rôles Ansible. Vérifiez que les métriques remontent dans Grafana.

**8. Documenter dans le tableau d'inventaire**

Mettez à jour le tableau d'inventaire du chapitre 4 de la documentation interne avec les informations du nouveau serveur : nom, IP, rôle, environnement, date d'ajout, responsable.

> [!WARNING]
>
> Le nouveau nœud Kubernetes ne doit pas être nommé `big-one-9d0479e4`. Ce nom est soumis à une règle d'anti-affinité (rollout `preferred`, data-precompute `required`) qui provoquerait l'évitement automatique de tous les workloads par le planificateur. Choisissez un nom unique et conforme à la convention de nommage de l'équipe.

## Checklist de validation

Après l'ajout du serveur, vérifiez les points suivants :

* [ ] Connexion SSH opérationnelle avec clé (pas de mot de passe)
* [ ] Playbook Ansible exécuté sans erreur (`failed=0`)
* [ ] Docker démarré et fonctionnel (si applicable)
* [ ] Nœud Kubernetes en statut `Ready` dans Rancher (si applicable)
* [ ] Métriques visibles dans Grafana (node-exporter, vmagent)
* [ ] Agent Wazuh connecté au manager
* [ ] Serveur documenté dans le tableau d'inventaire

## Contact

Pour toute question lors de l'ajout d'un serveur, contactez l'équipe DevOps à [devops@kaeyros-analytics.com](mailto:devops@kaeyros-analytics.com).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.