Как в Linux поменять hostname сервера

По сути hostname сервера носит больше информационный характер и не должен влиять на работу приложений. Если у вас более одного сервера, то стоит задуматься о настройке для каждого уникального и понятного имени хоста. Например, server1.evilinside.ru, server2.evilinside.ru и т.п. Однако, если серверов очень много, то можно группировать их по странам, дата-центрам или назначению. Например, node1.dc1.ru.evilinside.ru, node2.dc2.de.evilinside.ru и т.п. Либо можно применить фантазию и называть сервера именами персонажей из любимого художественного произведения.

Теперь рассмотрим техническую реализацию. Значение хостнейма хранится в файле /etc/hostname и считывается из него во время загрузки системы. Чтобы изменить имя хоста, нужно отредактировать этот файл любым текстовым редактором. Изменения вступят в силу после перезагрузки. Это так называемый Static hostname. Но что, если перезагружать сервер нельзя? Существует ещё так называемый Transient hostname, который можно поменять динамически и значение которого потеряется после перезагрузки. Установить его можно с помощью команды hostname, передав ей в качестве аргумента имя хоста:

hostname newhost.evilinside.ru

То есть получается, чтобы задать новый постоянный хостейм нужно изменить временный hostname и изменить значение в файле /etc/hostname. Сложна. Можно как-то проще? Можно! Есть ещё одна команда hostnamectl. Вызвав её без аргументов будет выведена информация о хосте:

Static hostname: CentOS-74-64-minimal
Transient hostname: d1
         Icon name: computer-desktop
           Chassis: desktop
        Machine ID: 78c56346904393b4fc01325b0872d028
           Boot ID: fbc7ff79a654e02ca379a1948cbc370f
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-693.21.1.el7.x86_64
      Architecture: x86-64

А для смены hostname нужно воспользоваться такой командой:

hostnamectl set-hostname newhost.evilinside.ru

После чего одновременно будут изменены и Static hostname и Transient hostname. На этом всё, пока!