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

StackOverflow https://stackoverflow.com/questions/603351

  •  03-07-2019
  •  | 
  •  

Pregunta

Estoy ejecutando un par de instancias estándar de Fedora en EC2. Creo 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 retroceso al hacer esto? ¿Y cómo lo configuro de manera que persista después de los reinicios?

Gracias.

¿Fue útil?

Solución

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 del reinicio. Puede forzar que el nombre de host se vuelva a cargar " utilizando hostname -F / etc / hostname para leer ese valor en el nombre de host. La solicitud 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 indicador de bash configurado en algo más útil que ip-123-123-123-123 pero he decidido dejar el mío (al menos por ahora) porque parece que muchas cosas realmente cuentan con tener el nombre de host en las instancias ec2 configuradas de 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. Luego edité / etc / hosts y agregué

127.0.0.1 webserver

como la segunda línea. Apache entonces comenzaría, pero se quejó de que no pudo encontrar el FQDN. Confirmé que ejecutar hostname --fqdn ya no funcionaba.

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

  

EL FQDN

     

No puede cambiar el FQDN (como lo devuelve el nombre de host --fqdn) o el nombre de dominio DNS (como lo devuelve dnsdomainname) con este comando. El FQDN del sistema es el nombre que el resolutor (3) devuelve para el nombre de host.

     

Técnicamente: el FQDN es el nombre que devuelve getaddrinfo (3) para el nombre de host que devuelve gethostname (2). El nombre de dominio DNS es la parte posterior al primer punto.

     

Por lo tanto, depende de la configuración (generalmente en /etc/host.conf) cómo se puede cambiar. Por lo general (si el archivo de hosts se analiza antes de DNS o NIS), puede cambiarlo en / etc / hosts.

Creo que podría ser posible configurar el sistema / engañar al sistema para que devuelva el FQDN, algo como ip-123-123-123-123.ec2.internal aunque el nombre de host sea < code> webserver pero en este punto, parecía que tenía más problemas de los que valía la pena, y para mí, tener un mensaje de bash más agradable podría causar muchos problemas de configuración y software en el futuro, por lo que decidí dar arriba.

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

  

cloud-init es el paquete de Ubuntu que maneja la inicialización temprana de una instancia de la nube. Se instala en las imágenes de la nube de Ubuntu 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
  •   
  • configuración del nombre de host
  •   
  • generar claves privadas ssh
  •   
  • agregar claves ssh a las .ssh / Authorized_keys del usuario para que puedan iniciar sesión
  •   
  • configuración de puntos de montaje efímeros
  •   
     El comportamiento de

cloud-init se puede configurar a través de datos de usuario. El usuario puede proporcionar los datos del usuario en el momento de inicio de la instancia. Esto se hace mediante el argumento --user-data o --user-data-file para ec2-run-instancia

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 (generado por el 'nombre de host local' de los metadatos), entonces cloud-init volverá a establecer el nombre de host y actualizar / etc / hostname.

     

En el caso de que 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 True, entonces / etc / hostname nunca se tocará.

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 se interrumpirá en las instancias de EC2 debido a que cambié el nombre de host, me encantaría escucharlo.

Otros consejos

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 Linux AMI (un ejemplo) (pegue esto en la consola o agregue 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

Edite / etc / sysconfig / network como root.

Reemplazar

HOSTNAME=localhost.localdomain

con

HOSTNAME=hostname.DOMAIN_NAME

Luego, reinicia o ejecuta /etc/init.d/network restart El servidor debe informar su nombre como FQDN.

De 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:

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
gt; hostname NEW_NAME
gt; hostname --fqd
gt; hostname
     

sin ningún parámetro, generará el nombre de host actual del sistema.

<*>      

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

<*>      

establecerá el nombre de host del sistema en NEW_NAME .

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

Para asegurarse de que se mantenga después de reiniciar en AWS, agregue el comando en /etc/rc.local para que se ejecute cuando se inicie la máquina.

También hay una forma de set el nombre de host dinámicamente a través de USER_DATA :

<*>

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 nombre de host se haya actualizado. Su solicitud debe mostrar el nuevo nombre de host (hasta el primer ". & Quot;) 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 de IP estática) para que coincida el siguiente ejemplo, 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@webserver ~]$ hostname
    webserver.localdomain
    
  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 primer ". & Quot;) y el comando hostname debe mostrar el nombre de dominio completo.

    <*>

Nota: también puede cambiar el indicador de shell sin afectar el nombre de host. Consulte esta documentación de AWS .

Claro, puedes hacerlo si tienes tu propio dominio (configura un CNAME para que apunte al nombre de host de Amazon). De lo contrario, te quedas estancado con el que te dan (o con una Elastic IP, si configuras uno de ellos).

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

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

Deberá hacer varias cosas para configurar el nombre de host:

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

Los puse juntos en un script y los cargué como un gist: https://gist.github.com/mnebuerquo/5443532036af8b48995547e2817dba85

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

sudo hostname *yourdesiredhostnamehere*

sudo /etc/init.d/networking restart

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top