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 tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn