Two files say one fact, the machine's name, and nothing owned /etc/hostname. The name written is the operator's hostname setting, with no default: three of four machines call themselves something other than their mesh name, and renaming one is the operator's call. It takes effect at the next boot.
hostname
The machine's names (novox/hq ADR 0199, ADR 0223): it holds the node seat node-hostname and owns
the two files that say what a machine is called — /etc/hostname and the machine's own lines in
/etc/hosts. It was hosts, holding node-hosts-file; the seat was renamed, and the old name
resolves to it as an alias.
What it writes
/etc/hostname, whole: the module'shostnamesetting, and nothing else. There is no default. A machine's name is the operator's: the mesh's name for a machine and the name it calls itself need not be the same, and writing the mesh's name silently would rename a machine. Set it per machine —settings set hostname '{"hostname": "<name>"}' --node <node>— before the module is assigned there; without it the module is left out of that machine's declaration, naming the key. A mesh-wide{"hostname": "${machine:name}"}makes every machine call itself by its mesh name, and a machine's own setting still overrides it.- The machine's own lines in
/etc/hosts, as the mesh's marked region at the start of the file:localhostand127.0.1.1with the machine's mesh name. Every other line is the operator's, kept byte for byte and given back when the module goes.
When a new name takes effect
At the machine's next boot. The kernel's name is set from /etc/hostname when the machine
starts; writing the file changes what hostnamectl reports as the static name and nothing that is
running. The module declares nothing that would set it live: a graphical session's X authority is
keyed by the name the session started under, so changing it underneath a running session refuses
every new window until the person logs in again. Reboot when that is acceptable, or run
hostnamectl hostname <name> by hand.
Its verbs
<node>/node-hostname.entries, .add and .remove: the hosts file's lines, each marked whose it
is; add one address and its names to the operator's lines; remove a name or an address from them.
They change the machine's file and nothing else. /etc/hostname has no verb — it is the setting.