Etc/hosts debian
Le problème
A partie de la version 11 (Buster) les distributions Debian (et les Ubuntu et autres qui en découlent) gèrent le /etc/hosts d'une façon différente d'avant.
Un truc qui marchait depuis plus de 50 ans :
Ajouter un nouveau hôte distant avec un :
sudo vi /etc/hosts
On croit que ca marche mais au prochain reboot... la modification est perdue.
Pourquoi changer un truc truc qui marche depuis 50 ans... je ne sais pas. Ils ont surement de très très bonnes raisons mais ils nous saoulent!
Bon si on regarde le contenu du fichier:
# Your system has configured 'manage_etc_hosts' as True.
# As a result, if you wish for changes to this file to persist
# then you will need to either
# a.) make changes to the master file in /etc/cloud/templates/hosts.debian.tmpl
# b.) change or remove the value of 'manage_etc_hosts' in
# /etc/cloud/cloud.cfg or cloud-config from user-data
#
127.0.1.1 hote.domaine.fr hote
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
C'est clairement expliqué suffit de lire le commentaire... ce que je n'avais pas fait sur mon Raspberry PI avec un micro écran de 5''. Ok ma faute mais quand même.
Il y a donc deux solutions:
Les solutions
Le fichier hosts.debian.tmpl
Je trouve que c'est la solution la plus simple.
Avant on faisait :
sudo vi /etc/hosts
Maintenant on fait :
sudo vi /etc/cloud/templates/hosts.debian.tmpl
Ils se sont fait plaisir sur le PATH! Le template ressemble à ça:
## template:jinja
{#
This file (/etc/cloud/templates/hosts.debian.tmpl) is only utilized
if enabled in cloud-config. Specifically, in order to enable it
you need to add the following to config:
manage_etc_hosts: True
-#}
# Your system has configured 'manage_etc_hosts' as True.
# As a result, if you wish for changes to this file to persist
# then you will need to either
# a.) make changes to the master file in /etc/cloud/templates/hosts.debian.tmpl
# b.) change or remove the value of 'manage_etc_hosts' in
# /etc/cloud/cloud.cfg or cloud-config from user-data
#
{# The value '{{hostname}}' will be replaced with the local-hostname -#}
127.0.1.1 {{fqdn}} {{hostname}}
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Si j'ai bien tout compris c'est pour que, après le DHCP le nom de domaine peut changer donc {{fqdn}} a une origine externe. De même si on change le hostname de la machine pas besoin de changer le /etc/hosts.
Bon pourquoi pas....
Il faut donc ajouter ses "hôtes" dans le fichier. Moi je fais ca après le 127.0.0.1 localhost mais finalement on fait ça ou on veut.
Le fichier /etc/cloud/cloud.cfg
Dans ce fichier il y a une section (il est long je donne pas tout):
cloud_init_modules:
- seed_random
- bootcmd
- write_files
- disk_setup
- mounts
- set_hostname
- update_hostname
- update_etc_hosts
- ca_certs
- rsyslog
- users_groups
- ssh
- set_passwords
Il suffit ce commenter le - update_etc_hosts.
Personnellement je préfère la solution avec le template. Tant qu'à changer quelque chose utilisons la nouvelle methode.