Aller au contenu
Infrastructure as Code medium

Module hostname Ansible : définir le nom d'hôte

6 min de lecture

Logo Ansible

ansible.builtin.hostname: définit le nom d’hôte d’un managed node — opération simple mais critique pour l’identification dans le réseau, la configuration DNS, et l’intégration dans des outils d’automation. Le module modifie /etc/hostname (sur RHEL/AlmaLinux) et applique le changement immédiatement sans reboot.

C’est l’un des premiers modules appliqués dans un playbook de provisioning : avant tout autre rôle, on s’assure que la machine a le bon nom.

  • Définir un nom d’hôte simple ou un FQDN complet.
  • Aligner le hostname sur l’inventory_hostname Ansible.
  • Distinguer ansible_hostname (nom court) de ansible_fqdn (nom complet).
  • Comprendre la persistance (/etc/hostname) vs le runtime (hostnamectl).
  • Diagnostiquer un hostname qui revient au défaut au reboot.
  • become: true sur le managed node (modification de /etc/hostname).
  • Connaître la différence FQDN vs hostname (web1 vs web1.lab.example.com).
- name: Definir le nom d hote
ansible.builtin.hostname:
name: web01

Le nom court web01 devient le hostname. Le module modifie /etc/hostname ET appelle hostnamectl set-hostname — le changement est immédiat ET persistant au reboot.

- name: Definir un FQDN comme nom d hote
ansible.builtin.hostname:
name: app01.lab.example.com

Sur les distributions modernes (RHEL 7+, AlmaLinux, Rocky), le FQDN complet est accepté comme hostname. Pratique pour des environnements DNS internes où chaque machine a son nom complet enregistré.

À surveiller : certains outils legacy (rsyslog, snmpd) lisent uniquement le nom court. Vérifier la conformité avant de pousser un FQDN.

Pattern fréquent — utiliser le nom de l’inventaire Ansible comme hostname :

- name: Hostname = nom dans l inventaire
ansible.builtin.hostname:
name: "{{ inventory_hostname }}"

Avantages :

  • Cohérence entre l’inventaire Ansible et la machine réelle.
  • Idempotent : si le hostname est déjà aligné, changed=0.
  • Pas de drift : à chaque run, le hostname est ré-aligné si quelqu’un l’a modifié à la main.

Variante avec inventory_hostname_short (sans .lab) :

- ansible.builtin.hostname:
name: "{{ inventory_hostname_short }}"

Sur certaines distributions, le module supporte plusieurs stratégies d’application :

- ansible.builtin.hostname:
name: web01
use: systemd # systemd | redhat | debian | freebsd | openrc | ...

use: force l’implémentation. Par défaut, Ansible auto-détecte selon ansible_os_family. À ne forcer que si le défaut pose problème (rare).

Distinction importante :

Commande LinuxEffet
hostname web01Runtime uniquement — perdu au reboot.
echo web01 > /etc/hostnamePersistant mais pas appliqué maintenant.
hostnamectl set-hostname web01Les deux — runtime + /etc/hostname.

Le module Ansible fait l’équivalent de hostnamectl set-hostname sur les systèmes systemd : runtime + persistance en une opération atomique.

Après application :

- name: Hostname
ansible.builtin.hostname:
name: "{{ inventory_hostname }}"
- name: Verifier le hostname runtime
ansible.builtin.command: hostname
register: current_hostname
changed_when: false
- name: Afficher
ansible.builtin.debug:
msg: "Hostname runtime : {{ current_hostname.stdout }}"

Pour un test plus complet :

Fenêtre de terminal
ssh ansible@web1.lab 'hostname && hostnamectl status'
SymptômeCauseFix
Hostname revient au défaut au reboothostname CLI utilisé au lieu du moduleToujours utiliser ansible.builtin.hostname:
Hostname appliqué mais ansible_hostname reste l’ancienFacts mis en cachemeta: clear_facts ou re-gather
FQDN refusé sur RHEL 6 (legacy)Distribution trop ancienneMigrer vers RHEL 8+ ou utiliser nom court
Hostname avec underscore _RFC 952/1123 interdit _Utiliser tirets - à la place
  • ansible.builtin.hostname: modifie runtime + /etc/hostname en une opération.
  • name: "{{ inventory_hostname }}" = pattern standard pour aligner inventaire et machine.
  • FQDN accepté sur RHEL 7+ (vérifier les outils legacy avant).
  • Pas d’underscore dans un hostname (RFC 952/1123).
  • Idempotent : si déjà à la bonne valeur, changed=0.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn