¿Podemos establecer nombres de host fáciles de recordar para instancias EC2?


Estoy ejecutando un par de instancias estándar de Fedora en EC2. Siento que los nombres de host públicos de las instancias asignadas por Amazon son demasiado extraños y difíciles de recordar. Me gustaría cambiarlos a algo corto(como rojo / azul / verde / etc).

¿Hay algún inconveniente en hacer esto? ¿Y cómo lo configuro para que persista después de los reinicios?

Gracias.

Author: nzpcmad, 2009-03-02

11 answers

Antes de comenzar, intente ejecutar hostname y hostname --fqdn y tome nota de cuáles son las respuestas.

Puede editar /etc/hostname y establecer un nombre de host, que se mantendrá después de reiniciar. Puede forzar que el nombre de host sea "recargado" usando hostname -F /etc/hostname para leer ese valor en el nombre de host. El indicador de bash cambiará después de cerrar sesión e iniciar sesión.

Advertencia / nota:
Sí, es bueno tener el nombre de host en el prompt de bash establecido en algo más útil que ip-123-123-123-123 pero he decidió dejar la mía (al menos por ahora) porque parece que muchas cosas realmente cuentan con tener el nombre de host en las instancias ec2 establecido de una manera estándar. Después de editar /etc/hostname y cambiar el nombre de host a webserver, muchos de los servicios parecen fallar porque el nombre de host no se resolvería, y apache no se iniciaría. A continuación edité /etc/hosts y agregué

127.0.0.1 webserver

Como la segunda línea. Apache comenzaría entonces, pero se quejaba de que no podía encontrar el FQDN. Confirmé que correr hostname --fqdn ya no trabajar.

A continuación consulté man hostname y aprendí que si bien se puede configurar el hostname parece que el FQDN es lo que se devuelve a través de una búsqueda DNS.

EL FQDN

No puede cambiar el FQDN (como devuelto por hostname f fqdn) o el nombre de dominio DNS (como devuelto por dnsdomainname) con este comando. El FQDN del sistema es el nombre que el solucionador(3) devuelve para el nombre de host.

Técnicamente: El FQDN es el nombre que getaddrinfo(3) devuelve para el nombre de host devuelto por gethostname (2). El nombre de dominio DNS es la parte después del primer punto.

Por lo tanto depende de la configuración (normalmente en /etc/host.conf) ¿cómo se puede cambiar. Normalmente (si el fichero hosts se analiza antes que DNS o NIS) puede cambiarlo en /etc/hosts.

Creo que podría ser posible establecer el sistema / engañar al sistema en devolver el FQDN, algo así como ip-123-123-123-123.ec2.internal a pesar de que el nombre de host es webserver pero en este punto comenzó a parecen más problemas de lo que valía, y que para mí tener un aviso de bash más agradable podría causar muchos problemas de software y configuración en el futuro, por lo que decidí renunciar.

También aprendí que muchas instancias de amazon ec2 usan algo llamado cloud-init :

Cloud-init es el paquete Ubuntu que maneja la inicialización temprana de una instancia en la nube. Está instalado en las imágenes de Ubuntu Cloud y también en las imágenes oficiales de Ubuntu disponibles en EC2.

Algunas de las cosas que configura son:

  • establecer una configuración regional predeterminada
  • establecer el nombre de host
  • generar claves privadas ssh
  • añadiendo claves ssh a las del usuario .ssh / authorized_keys para que puedan iniciar sesión
  • establecer puntos de montaje efímeros

El comportamiento de Cloud-init se puede configurar a través de los datos de usuario. Los datos de usuario pueden ser dados por el usuario en el momento del lanzamiento de la instancia. Esto se hace a través del archivo user user-data o file user-data argumento a ec2-run-instances

También encontré esto que habla de cómo se configura el nombre de host con cloud-init:

En las instancias de EBS, un apagado y un inicio posterior terminarían con una dirección IP diferente.

En el caso de que el usuario no haya modificado /etc/hostname de su valor original (sembrado por el 'local-hostname' de metadatos), cloud-init volverá a establecer el nombre de host y actualizará /etc/hostname.

En el caso cuando el usuario haya modificado /etc / hostname, seguirá siendo administrado por el usuario.

Además, si /etc/cloud/cloud.cfg contiene el valor 'preserve_hostname' establecido en un valor Verdadero, entonces /etc / hostname nunca será tocado.

Lo interesante es que si no cambia el nombre de host, el paquete cloud-init lo mantendrá actualizado para usted.

Si alguien más tiene una solución alternativa o puede abordar algunos de los problemas mencionados y ayudar a asegurar que nada lo hará romper en las instancias ec2 debido a cambiar el nombre de host me encantaría escucharlo.

 81
Author: cwd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-15 16:34:50

Editar /etc/sysconfig/network como root.

Sustitúyase

HOSTNAME=localhost.localdomain

Con

HOSTNAME=hostname.DOMAIN_NAME

Luego, reinicie o ejecute /etc/init.d/network restart El servidor debe reportar su nombre como un FQDN.

 11
Author: andrew rimmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-30 11:50:48

Otra forma es simplemente editar ~/.bashrc y anteponer PS1 con el apodo de la máquina.

Editar: quizás más correctamente, en toda la máquina, por ejemplo, en la AMI de AWS Linux (un ejemplo) (pegue esto en la consola o agréguelo a su instalación arbitraria .sh):

cat << EOF | sudo tee /etc/profile.d/ps1.sh
if [ "$PS1" ]; then
  PS1="[\u@myinst1:\l \t \! \W]\\$ "
fi
EOF
 10
Author: youurayy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-13 04:26:32

Desde este sitio :

Cambiar el nombre de host en un sistema en ejecución

En cualquier sistema Linux, puede cambiar su nombre de host con el comando "hostname' (sorprendido?)… Estos son algunos usos rápidos del nombre de host de la línea de comandos:

{[3] }name > hostname

Sin ningún parámetro mostrará el nombre de host actual del sistema.

Host > hostname {fqd

Mostrará el nombre de dominio completo (o FQDN) del sistema.

Host > hostname NEW_NAME

Establecerá el nombre de host del sistema en NEW_NAME.

También puede editar /etc/hostname (al menos en Ubuntu).

Para asegurarse de que permanece después de un reinicio en AWS, agregue el comando en /etc/rc.local por lo que se ejecuta cuando se inicia la máquina.

También hay una manera de establecer el nombre de host dinámicamente a través de 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

Hostname {HOSTNAME

Echo > HOSTNAME > / etc / hostname

 6
Author: Rafa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-22 08:56:54

Para cambiar el nombre de host del sistema a un nombre DNS público

Siga este procedimiento si ya tiene un nombre DNS público registrado.

1) Abra el archivo de configuración /etc/sysconfig/network en su editor de texto favorito y cambie la entrada HOSTNAME para reflejar el nombre de dominio completo (como webserver.mydomain.com).

HOSTNAME=webserver.mydomain.com

2) Reinicie la instancia para recoger el nuevo nombre de host.

[ec2-user ~]$ sudo reboot

3) Inicie sesión en su instancia y verifique que el actualizar. Su solicitud debe mostrar el nuevo nombre de host (hasta el primero ".") y el comando hostname debe mostrar el nombre de dominio completo.

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

Para cambiar el nombre de host del sistema sin un nombre DNS público

1) Abra el archivo de configuración /etc/sysconfig/network en su editor de texto favorito y cambie la entrada HOSTNAME para reflejar el nombre de host del sistema deseado (como el servidor web).

HOSTNAME=webserver.localdomain

2) Abra el archivo /etc/hosts en su editor de texto favorito y agregue una entrada que comience con 127.0.1.1 (en sistemas DHCP) o la dirección de eth0 (en sistemas IP estáticos) para que coincida con el ejemplo a continuación, sustituyendo su propio nombre de host. (127.0.0.1 debe dejarse como la línea localhost.)

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

3) Reinicie la instancia para recoger el nuevo nombre de host.

[ec2-user ~]$ sudo reboot

4) Inicie sesión en su instancia y verifique que el nombre de host se haya actualizado. Su solicitud debe mostrar el nuevo nombre de host (hasta el primero ".") y el comando hostname debe mostrar el dominio completo nombre.

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

Nota: También puede cambiar el símbolo del shell sin afectar el nombre del host. Consulte esta documentación de AWS :

 1
Author: manish_s,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-18 11:58:04

Claro, puede hacerlo si tiene su propio dominio (configure un CNAME para que apunte al nombre de host de Amazon). De lo contrario, está prácticamente atascado con la que le dan (o una IP elástica, si configura una de esas).

 0
Author: obeattie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-02 19:05:49

El /etc/rc.la solución local funcionó para mí para un nombre de host básico, pero no me da un FQDN.

 0
Author: chrowe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-12 05:42:17

En mi AMI Linux (una instantánea de otra instancia).. ninguna de las fórmulas anteriores funcionó. Luego, simplemente cambié el campo NOMBRE DE HOST en el archivo: / etc / init.d / modifyhostname e hizo un reinicio normal.

 0
Author: Blackpirate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-07 13:09:26

Tendrá que hacer varias cosas para establecer el nombre de host:

  1. hostname newname - establece el nombre del host, pero es volátil
  2. edit /etc/hostname - establece el nombre de host para el siguiente reinicio
  3. editar/etc / hosts-para evitar que sudo se queje

Los junté en un script y lo subí como una síntesis: https://gist.github.com/mnebuerquo/5443532036af8b48995547e2817dba85

 0
Author: Mnebuerquo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-17 22:26:03

Si no desea interferir con su proveedor de DNS, puede usar alias para sus instancias. Me sorprendió mucho que Amazon no proporcionara una forma de dar un alias para una instancia EC2 cuando salió con la AWS Management Console, pero mientras tanto, podría usar el servicio gratuito RightScale si desea la función de alias, mucho más fácil que recordar esos ID de instancia de Amazon.

 -1
Author: gareth_bowles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-02 19:15:02
sudo hostname *yourdesiredhostnamehere*

sudo /etc/init.d/networking restart

Entonces se cambia el nombre de host. En mi servidor funcionan todos los demás servicios como apache y postfix. El servidor es Ubuntu 12.04 LTS

 -1
Author: Dennis Johansen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-29 17:26:46