Alterar o nome do host da instância do Amazon Linux - Amazon Elastic Compute Cloud

Alterar o nome do host da instância do Amazon Linux

Quando você inicia uma instância em uma VPC privada, o Amazon EC2 atribui um nome de host do sistema operacional convidado. O tipo de nome de host que o Amazon EC2 atribui depende das suas configurações de sub-rede. Para obter mais informações sobre hostnames do EC2, consulte Tipos de nome de host de instância do Amazon EC2.

Um nome de DNS privado típico do Amazon EC2 para uma instância do EC2 configurada para usar nomenclatura baseada em IP com um endereço iPv4 tem essa aparência: ip-12-34-56-78.us-west-2.compute.internal, em que o nome consiste no domínio interno, o serviço (nesse caso, compute), a região e uma forma de endereço IPv4 privado. Parte desse nome do host é exibida no prompt do shell quando você se conecta à sua instância (por exemplo, ip-12-34-56-78). Sempre que você interrompe e reinicia a instância do Amazon EC2 (a menos que esteja usando um endereço IP elástico), o endereço IPv4 público muda, assim como seu nome DNS público, o nome do host do sistema e o prompt do shell.

Importante

Essas informações se aplicam ao Amazon Linux. Para obter informações sobre outras distribuições, consulte a documentação específica.

Alterar o nome do host do sistema

Se você tiver um nome DNS público registrado para o endereço IP de sua instância (como webserver.mydomain.com), poderá configurar o nome do host do sistema para que a instância se identifique como parte do domínio. Assim, o prompt do shell também é alterado, de modo que ele exibe a primeira parte desse nome em vez do nome do host fornecido pela AWS (por exemplo, ip-12-34-56-78). Se você não tiver um nome DNS público registrado, ainda assim poderá alterar o nome do host, mas o processo é um pouco diferente.

Para que a atualização do nome do host seja mantida, verifique se a preserve_hostnameconfiguração do cloud-init está definida como true. É possível executar o seguinte comando para editar ou adicionar essa configuração:

sudo vi /etc/cloud/cloud.cfg

Se a configuração preserve_hostname não estiver listada, adicione a seguinte linha de texto ao final do arquivo:

preserve_hostname: true
Para alterar o nome do host do sistema para um nome DNS público

Siga este procedimento se você já tiver um nome DNS público registrado.

    • No Amazon Linux 2: use o comando hostnamectl para definir o nome do host para refletir o nome de domínio totalmente qualificado (como webserver.mydomain.com).

      [ec2-user ~]$ sudo hostnamectl set-hostname webserver.mydomain.com
    • Para Amazon Linux AMI: em sua instância, abra o arquivo de configuração /etc/sysconfig/network em seu editor de preferência e altere a entrada HOSTNAME para refletir o nome de domínio totalmente qualificado (como webserver.mydomain.com).

      HOSTNAME=webserver.mydomain.com
  1. Reinicialize a instância para obter o novo nome do host.

    [ec2-user ~]$ sudo reboot

    Como alternativa, é possível reinicializar usando o console do Amazon EC2 (na página Instances (Instâncias), selecione a instância e escolha Instance state (Estado da instância) e Reboot instance (Reinicializar instância)).

  2. Conecte-se à sua instância e verifique se o nome do host foi atualizado. O prompt deverá mostrar o novo nome do host (até o primeiro ".") e o comando hostname deve mostrar o nome de domínio totalmente qualificado.

    [ec2-user@webserver ~]$ hostname webserver.mydomain.com
Para alterar o nome do host do sistema sem um nome DNS público
    • No Amazon Linux 2: use o comando hostnamectl para definir o nome do host para refletir o nome do host do sistema desejado (como webserver).

      [ec2-user ~]$ sudo hostnamectl set-hostname webserver.localdomain
    • No Amazon Linux AMI: em sua instância, abra o arquivo de configuração /etc/sysconfig/network em seu editor de texto de preferência e altere a entrada HOSTNAME para refletir o nome do host do sistema desejado (como webserver webserver).

      HOSTNAME=webserver.localdomain
  1. Abra o arquivo /etc/hosts em seu editor de texto de preferência e altere a entrada começando com 127.0.0.1 para corresponder ao exemplo abaixo, substituindo seu próprio nome do host.

    127.0.0.1 webserver.localdomain webserver localhost4 localhost4.localdomain4
  2. Reinicialize a instância para obter o novo nome do host.

    [ec2-user ~]$ sudo reboot

    Como alternativa, é possível reinicializar usando o console do Amazon EC2 (na página Instances (Instâncias), selecione a instância e escolha Instance state (Estado da instância) e Reboot instance (Reinicializar instância)).

  3. Conecte-se à sua instância e verifique se o nome do host foi atualizado. O prompt deverá mostrar o novo nome do host (até o primeiro ".") e o comando hostname deve mostrar o nome de domínio totalmente qualificado.

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

Também é possível implementar soluções mais programáticas, como especificar dados do usuário para configurar sua instância. Se sua instância fizer parte de um grupo do Auto Scaling, você poderá usar ganchos do ciclo de vida para definir os dados do usuário. Para obter mais informações, consulte Executar comandos em sua instância do Linux na inicialização e Hook do ciclo de vida para inicialização da instância no Guia do usuárioAWS CloudFormation.

Alterar o prompt do shell sem afetar o nome do host

Se você não quiser modificar o nome do host para sua instância, mas quiser que um nome de sistema mais útil (como webserver) seja exibido no lugar do nome privado fornecido pela AWS (por exemplo, ip-12-34-56-78), será possível editar os arquivos de configuração do prompt do shell para exibir o apelido do sistema em vez do nome do host.

Para alterar o prompt do shell para um apelido de host
  1. Crie um arquivo em /etc/profile.d que defina a variável do ambiente chamada NICKNAME para o valor que você deseja no prompt do shell. Por exemplo, para definir o apelido do sistema como webserver, execute o seguinte comando.

    [ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/profile.d/prompt.sh'
  2. Abra o arquivo /etc/bashrc (Red Hat) ou /etc/bash.bashrc (Debian/Ubuntu) no seu editor de texto favorito (como vim ou nano). Você precisa usar sudo com o comando do editor, pois /etc/bashrc e /etc/bash.bashrc são de propriedade de root.

  3. Edite o arquivo e altere a variável do prompt do shell (PS1) para exibir seu apelido em vez do nome do host. Encontre a seguinte linha que define o prompt do shell em /etc/bashrc ou /etc/bash.bashrc (várias linhas adjacentes são mostradas abaixo para fornecer o contexto; procure a linha que começa com [ "$PS1"):

    # Turn on checkwinsize shopt -s checkwinsize [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ " # You might want to have e.g. tty in prompt (e.g. more virtual machines) # and console windows

    Altere o \h (o símbolo para hostname) nessa linha para o valor da variável NICKNAME.

    # Turn on checkwinsize shopt -s checkwinsize [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@$NICKNAME \W]\\$ " # You might want to have e.g. tty in prompt (e.g. more virtual machines) # and console windows
  4. (Opcional) Para configurar o título nas janelas do shell com um novo apelido, conclua as seguintes etapas.

    1. Crie um arquivo chamado /etc/sysconfig/bash-prompt-xterm.

      [ec2-user ~]$ sudo touch /etc/sysconfig/bash-prompt-xterm
    2. Torne o arquivo executável usando o comando a seguir.

      [ec2-user ~]$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
    3. Abra o arquivo /etc/sysconfig/bash-prompt-xterm no seu editor de texto de preferência (como vim ou nano). Você precisará usar sudo com o comando do editor, pois /etc/sysconfig/bash-prompt-xterm é de propriedade de root.

    4. Adicione a linha a seguir ao arquivo.

      echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
  5. Desconecte-se e conecte-se novamente para obter o novo valor do apelido.

Alterar o nome do host em outras distribuições do Linux

Os procedimentos desta página são destinados ao uso com o Amazon Linux somente. Para obter mais informações sobre outras distribuições do Linux, consulte a documentação específica e os seguintes artigos: