Pouvons-nous définir des noms d'hôtes faciles à retenir pour les instances EC2?

J'exécute quelques instances Fedora standard sur EC2. Je pense que les noms d'hôtes publics des instances assignées par Amazon sont trop étranges et difficiles à retenir. Je voudrais les changer en quelque chose de court (comme rouge / bleu / vert / etc).

Y a-t-il un inconvénient à faire cela? Et comment puis-je le configurer de telle sorte qu'il persiste après les redémarrages?

Merci.

45
demandé sur nzpcmad 2009-03-02 21:02:02

11 réponses

Avant de commencer, essayez d'exécuter hostname et hostname --fqdn et prenez note des réponses.

Vous pouvez modifier /etc/hostname et définir un nom d'hôte, qui restera après le redémarrage. Vous pouvez forcer le nom d'hôte à être" rechargé " en utilisant hostname -F /etc/hostname pour lire cette valeur dans le nom d'hôte. L'invite bash changera après la déconnexion et la connexion.

Avertissement / remarque:
Oui, c'est bien d'avoir le nom d'hôte dans l'invite bash défini sur quelque chose de plus utile que ip-123-123-123-123 mais j'ai décidé de quitter le mien (au moins pour l'instant) car il semble que beaucoup de choses comptent vraiment sur le fait que le nom d'hôte sur les instances ec2 soit défini de manière standard. Après avoir modifié /etc/hostname et changé le nom d'hôte en webserver, beaucoup de services semblent échouer car le nom d'hôte ne résoudrait pas et apache ne démarrerait pas. Ensuite, j'ai édité /etc/hosts et ajouté dans

127.0.0.1 webserver

Comme deuxième ligne. Apache commencerait alors mais se plaignait qu'il ne pouvait pas trouver le nom de domaine complet. J'ai confirmé que l'exécution hostname --fqdn n'est plus travaillé.

Ensuite, j'ai consulté man hostname et j'ai appris que pendant que vous pouvez définir le hostname, Il semble que le FQDN est ce qui est retourné via une recherche DNS.

LE FQDN

Vous ne pouvez pas modifier le nom de domaine complet (tel que renvoyé par hostname --fqdn) ou le nom de domaine DNS (tel que renvoyé par dnsdomainname) avec cette commande. Le nom de domaine complet du système est le nom que le résolveur(3) renvoie pour le nom d'hôte.

Techniquement: le nom de domaine complet est le nom que getaddrinfo (3) renvoie pour le nom d'hôte renvoyé par gethostname(2). Le nom de domaine DNS est la partie après le premier point.

Cela dépend donc de la configuration (généralement dans/etc / host.conf) comment vous pouvez le modifier. Habituellement (si le fichier hosts est analysé avant DNS ou NIS), vous pouvez le modifier dans/etc / hosts.

Je pense qu'il pourrait être possible de définir le système / tromper le système en retournant le FQDN, quelque chose comme ip-123-123-123-123.ec2.internal même si le nom d'hôte est webserver mais à ce stade, il a commencé à sembler plus d'ennuis que cela vaut, et que pour moi d'avoir une plus belle invite bash pourrait causer beaucoup de logiciels et de configuration des problèmes sur la route et j'ai donc décidé de l'abandonner.

J'ai aussi appris que beaucoup d'instances amazon ec2 utiliser quelque chose appelé cloud-init:

Cloud-init est le package Ubuntu qui gère l'initialisation précoce d'une instance cloud. Il est installé dans les images Ubuntu Cloud et aussi dans les images officielles Ubuntu disponibles sur EC2.

Certaines des choses qu'il configure sont:

  • définition d'une locale par défaut
  • définition du nom d'hôte
  • générer des clés privées ssh
  • ajout de clés ssh à l'utilisateur .ssh / authorized_keys pour qu'ils puissent se connecter
  • mise en place de points de montage éphémères

Le comportement de Cloud-init peut être configuré via les données utilisateur. Les données utilisateur peuvent être données par l'utilisateur au moment du lancement de l'instance. Cela se fait via le fichier --user-data ou --user-data argument pour EC2-run-instances

J'ai également trouvé ceci qui parle de la façon dont le nom d'hôte est configuré avec cloud-init:

Sur les instances EBS, un arrêt et un démarrage ultérieur aboutiraient à une adresse IP différente.

Dans le cas où l'utilisateur n'a pas modifié /etc / hostname de sa valeur d'origine (ensemencée par 'local-hostname' des métadonnées), cloud-init définira à nouveau le nom d'hôte et mettra à jour /etc/hostname.

Dans le cas où l'utilisateur a modifié /etc/hostname, il restera utilisateur géré.

En Outre, si /etc/nuage/cloud.cfg contient la valeur' preserve_hostname ' définie sur une valeur vraie, alors /etc / hostname ne sera jamais touché.

Ce qui est intéressant, c'est que si vous ne changez pas le nom d'hôte, le package cloud-init le gardera à jour pour vous.

Si quelqu'un d'autre a une solution de contournement ou peut résoudre certains des problèmes mentionnés et aider à rassurer que rien ne pause sur les instances ec2 en raison de la modification du nom d'hôte, je serais heureux de l'entendre.

81
répondu cwd 2012-10-15 16:34:50

Modifier /etc/sysconfig/network en tant que root.

Remplacer

HOSTNAME=localhost.localdomain

Avec

HOSTNAME=hostname.DOMAIN_NAME

Ensuite, redémarrez ou exécutez /etc/init.d/network restart Le serveur doit alors signaler son nom en tant que nom de domaine complet.

11
répondu andrew rimmer 2011-11-30 11:50:48

Une autre façon est de simplement modifier ~/.bashrc et ajouter PS1 avec le surnom de la machine.

Edit: peut-être plus correctement, à l'échelle de la machine, par exemple sur L'AMI AWS Linux (un exemple) (collez ceci dans la console ou ajoutez-le à votre install .sh arbitraire):

cat << EOF | sudo tee /etc/profile.d/ps1.sh
if [ "$PS1" ]; then
  PS1="[\u@myinst1:\l \t \! \W]\\$ "
fi
EOF
10
répondu youurayy 2017-12-13 04:26:32

À Partir de ce site:

Changer le nom d'hôte sur un système en cours d'exécution

Sur N'importe quel système Linux, vous pouvez changer son nom d'hôte avec la commande ' hostname‘ (surpris?)… Voici quelques utilisations rapides du nom d'hôte en ligne de commande:

$> nom d'hôte

Sans aucun paramètre, il affichera le nom d'hôte actuel du système.

$ > hostname --fqd

Il affichera le nom de domaine complet (ou FQDN) du système.

$> nom d'hôte NEW_NAME

Définira le nom d'hôte du système sur NEW_NAME.

Vous pouvez également modifier /etc / hostname (au moins sur Ubuntu).

Pour vous assurer qu'il reste après un redémarrage dans AWS, ajoutez la commande dans /etc / rc.local donc il fonctionne lorsque la machine démarre.

Il existe également un moyen de définir dynamiquement le nom d'hôte via USER_DATA:

USER_DATA=/usr/bin/curl -s http://169.254.169.254/latest/user-data

HOSTNAME=echo $USER_DATA

IPV4 = /usr/bin/curl -s http://169.254.169.254/latest/meta-data/public-ipv4

Nom D'hôte $nom D'hôte

Echo $nom d'hôte > /etc/hostname

6
répondu Rafa 2012-05-22 08:56:54

Pour changer le nom d'hôte système en un nom DNS public

Suivez cette procédure si vous avez déjà un nom DNS public enregistré.

1) Ouvrez le fichier de configuration /etc/sysconfig/network dans votre éditeur de texte préféré et modifiez l'entrée de nom D'hôte pour refléter le nom de domaine complet (tel que webserver.mydomain.com).

HOSTNAME=webserver.mydomain.com

2) Redémarrez l'instance pour récupérer le nouveau nom d'hôte.

[ec2-user ~]$ sudo reboot

3) Connectez-vous à votre instance et vérifiez que le nom d'hôte a été mettre. Votre invite devrait afficher le nouveau nom d'hôte (jusqu'au premier ".") et la commande hostname doit afficher le nom de domaine complet.

[ec2-user@webserver ~]$ hostname
webserver.mydomain.com

Pour changer le nom d'hôte système sans nom DNS public

1) Ouvrez le fichier de configuration /etc/sysconfig/network dans votre éditeur de texte préféré et modifiez l'entrée de nom D'hôte pour refléter le nom d'hôte système souhaité (tel que le serveur web).

HOSTNAME=webserver.localdomain

2) Ouvrez le fichier /etc/hosts dans votre éditeur de texte préféré et ajoutez une entrée commençant avec 127.0.1.1 (sur les systèmes DHCP) ou l'adresse d'eth0 (sur les systèmes IP statiques) pour correspondre à l'exemple ci-dessous, en substituant votre propre nom d'hôte. (127.0.0.1 doit être laissé comme ligne localhost.)

127.0.0.1   localhost localhost.localdomain
127.0.1.1   webserver.example.com webserver

3) Redémarrez l'instance pour récupérer le nouveau nom d'hôte.

[ec2-user ~]$ sudo reboot

4) Connectez-vous à votre instance et vérifiez que le nom d'hôte a été mis à jour. Votre invite devrait afficher le nouveau nom d'hôte (jusqu'au premier ".") et la commande hostname doit afficher le domaine complet nom.

[ec2-user@webserver ~]$ hostname
webserver.localdomain

Remarque: Vous pouvez également modifier l'invite du shell, sans affecter le nom d'hôte. Reportez-vous à cette documentation AWS :

1
répondu manish_s 2014-12-18 11:58:04

Bien sûr, vous pouvez le faire si vous avez votre propre domaine(configurez un CNAME pour pointer vers le nom D'hôte Amazon). Sinon, vous êtes à peu près coincé avec celui qu'ils vous donnent (ou une IP élastique, si vous en définissez un).

0
répondu obeattie 2009-03-02 19:05:49

Le fichier/etc / rc.la solution locale a fonctionné pour moi pour un nom d'hôte de base mais ne me donne pas de nom de domaine complet.

0
répondu chrowe 2010-11-12 05:42:17

Dans mon ami Linux (un instantané d'une autre instance).. aucune des formules ci-dessus n'a fonctionné. Ensuite, j'ai simplement changé le champ Nom D'hôte dans file: / etc / init.d / modifyhostname et a fait un redémarrage normal.

0
répondu Blackpirate 2015-01-07 13:09:26

Vous devrez faire plusieurs choses pour définir le nom d'hôte:

  1. hostname newname - définit le nom d'hôte, mais est instable
  2. modifier /etc/hostname - définit le nom d'hôte pour le prochain redémarrage
  3. modifier /etc / hosts - pour empêcher sudo de se plaindre

Je les ai mis ensemble dans un script et je l'ai téléchargé comme essentiel: https://gist.github.com/mnebuerquo/5443532036af8b48995547e2817dba85

0
répondu Mnebuerquo 2018-03-17 22:26:03

Si vous ne voulez pas jouer avec votre fournisseur DNS, Vous pouvez utiliser des alias pour vos instances. J'ai été vraiment surpris Qu'Amazon ne fournisse pas un moyen de donner un alias pour une instance EC2 quand ils sont sortis avec AWS Management Console, mais en attendant, vous pouvez utiliser le service gratuit RightScale Si vous voulez la fonctionnalité alias - beaucoup plus facile que de se souvenir de ces ID D'instance Amazon.

-1
répondu gareth_bowles 2009-03-02 19:15:02
sudo hostname *yourdesiredhostnamehere*

sudo /etc/init.d/networking restart

Ensuite, le nom d'hôte est modifié. Sur mon serveur tous les autres services comme apache et postfix fonctionne. Le serveur est Ubuntu 12.04 LTS

-1
répondu Dennis Johansen 2013-03-29 17:26:46