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_hostname
configuraçã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 entradaHOSTNAME
para refletir o nome de domínio totalmente qualificado (comowebserver.mydomain.com
).HOSTNAME=
webserver.mydomain.com
-
-
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)).
-
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 entradaHOSTNAME
para refletir o nome do host do sistema desejado (como webserverwebserver
).HOSTNAME=
webserver
.localdomain
-
-
Abra o arquivo
/etc/hosts
em seu editor de texto de preferência e altere a entrada começando com127.0.0.1
para corresponder ao exemplo abaixo, substituindo seu próprio nome do host.127.0.0.1
webserver
.localdomainwebserver
localhost4 localhost4.localdomain4 -
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)).
-
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
-
Crie um arquivo em
/etc/profile.d
que defina a variável do ambiente chamadaNICKNAME
para o valor que você deseja no prompt do shell. Por exemplo, para definir o apelido do sistema comowebserver
, execute o seguinte comando.[ec2-user ~]$
sudo sh -c 'echo "export NICKNAME=
webserver
" > /etc/profile.d/prompt.sh' -
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 deroot
. -
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 windowsAltere o
\h
(o símbolo parahostname
) nessa linha para o valor da variávelNICKNAME
.# 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 -
(Opcional) Para configurar o título nas janelas do shell com um novo apelido, conclua as seguintes etapas.
-
Crie um arquivo chamado
/etc/sysconfig/bash-prompt-xterm
.[ec2-user ~]$
sudo touch /etc/sysconfig/bash-prompt-xterm
-
Torne o arquivo executável usando o comando a seguir.
[ec2-user ~]$
sudo chmod +x /etc/sysconfig/bash-prompt-xterm
-
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 deroot
. -
Adicione a linha a seguir ao arquivo.
echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
-
-
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: