03/10/2024

Commandes et Système

CentOS : Identité des machines, hostnamectl, l’agent facilitateur

I. Présentation

Sur des distributions RedHat antérieures à la version 7 (ainsi que sur des distributions CentOS 6.x), lorsque l’on souhaitait modifier le nom du serveur local, on devait éditer le fichier /etc/sysconfig/network et modifier le champ HOSTNAME :

# vi /etc/sysconfig/network
…
HOSTNAME=xxxxxxxx

La modification était alors prise en compte lors du redémarrage  de la machine. Si l’on souhaitait une modification immédiate, il fallait alors exécuter la commande suivante :

# hostname xxxxxxxx

La vérification s’effectuait alors en utilisant la commande hostname sans argument, et, éventuellement en se déconnectant afin de fermer sa session et en ouvrir une nouvelle :

# hostname
xxxxxxxx

II. La commande hostnamectl

Depuis la version CentOS7 et l’apparition de SystemD, il existe une commande hostnamectl fort pratique, pour ce genre de modification. Mais, on dispose alors de trois niveaux de nom de machine :

  • Le niveau supérieur, appelé "pretty" hostname, pouvant intégrer tout type de caractères. Il s’agit plus d’une forme descriptive du nom de machine.
  • Le niveau intermédiaire, appelé nom de machine statique, permettant d’initialiser le nom de machine pour le noyau, au démarrage.
  • Le niveau inférieur, appelé nom de machine "transient" reçu de la configuration réseau.

REMARQUE : dans le cas où la forme statique du nom de machine est déclarée, la forme "transient" n’est alors plus utilisée. C’est généralement ce que l’on fait en déclarant le nom de la machine dès la phase d’installation.

Le nom de machine statique est déclaré dans le fichier /etc/hostname et le nom de machine "pretty" est initialisé dans le fichier /etc/machine-info. Si l’on souhaite interroger son serveur et distinguer les trois catégories de noms, il faut le faire à l’aide de la commande suivante, en précisant l’une des trois directives optionnelles ci-dessous :

# hostnamectl status {--transient|--static|--pretty}

Pour pouvoir modifier le nom d’un serveur, il suffit alors uniquement de remplacer l’option status de l’interrogation précédente, par set-hostname dans la commande. Par défaut, sans spécification particulière, la modification du nom de machine impacte l’ensemble des trois niveaux de nommage.

Si l’on souhaite modifier spécifiquement le nom "pretty", il faut alors le mentionner lors du passage de la commande :

# hostnamectl set-hostname –pretty "Serveur Applicatif"

Cela n’affecte alors que le nom de niveau supérieur, sans impacter le nom statique. Pour s’en assurer, on peut exécuter les commandes suivantes :

# hostnamectl status --pretty
Serveur Applicatif
# hostnamectl status --static
xxxxxxx

ATTENTION : si le nom de machine "pretty" est positionné et que les noms statique et "transient" sont également utilisés, le nom de machine défini sera alors simplifié au regard des règles de nommage. Cela implique que les espaces seront remplacés par des "-" et que les caractères spéciaux seront supprimés. Ainsi, les noms "static" et "pretty" seront toujours en corrélation en respectant les règles de nommage.

Toutefois, cette simplification n’est pas effectuée si les noms "transient" et/ou "static" sont initialisés et que le nom "pretty" n’est pas modifié. Pour réinitialiser le nom de machine à son origine "localhost", par défaut, il suffit d’exécuter la commande suivante :

# hostnamectl ""

III. Conclusion

Il est vrai que cette nouvelle commande hostnamectl (ainsi que d’autres associées à l’environnement SystemD), est vraiment très pratique, car elle permet de mettre à jour rapidement (et sans erreur possible), le nom de machine d’un serveur. De plus, la commande hostnamectl peut interagir avec les conteneurs locaux (option --machine=), ou être pilotée à distance (option --host=). Afin d’identifier de façon nette et précise les machines, on peut même préciser la localisation de ses serveurs, grâce à l’option set-location.

author avatar
Philippe PIERRE
A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.