Pergunta

Estou correndo um par de instâncias do Fedora padrão em EC2. Sinto-me os nomes de host públicas dos casos atribuídos pela Amazon são muito estranho e difícil de lembrar. Eu gostaria de mudá-los para algo curto (como o vermelho / azul / verde / etc).

Existe alguma trás empate em fazer isso? E como faço para configurá-lo de tal forma que persiste após reboots?

Graças.

Foi útil?

Solução

Antes de começar, tente executar hostname e hostname --fqdn e tome nota do que as respostas são.

Você pode editar /etc/hostname e definir um nome de host, que vai ficar em torno após a reinicialização. Você pode forçar o hostname a ser "recarregado" usando hostname -F /etc/hostname para ler esse valor para o nome do host. A festa pronta mudança vontade depois de logout e login.

aviso / nota :
Sim, é bom ter o nome da máquina na festa prompt de conjunto para algo mais útil do que ip-123-123-123-123 mas eu decidi deixar meu (pelo menos por agora), porque parece que um monte de coisas realmente contar com o nome do host no EC2 instâncias posicionados de uma forma padrão. Depois de editar /etc/hostname e mudando o nome do host para webserver um monte de serviços parece falhar porque o hostname não resolveria, e apache não iria começar. Em seguida eu editado /etc/hosts e acrescentou

127.0.0.1 webserver

como a segunda linha. Apache, então, começar, mas reclamou que não conseguia encontrar o FQDN. I confirmou que a execução de hostname --fqdn não funcionava mais.

Em seguida eu consultados man hostname e aprendeu que, enquanto você pode definir o hostname parece que a FQDN é o que é retornado por meio de uma pesquisa de DNS.

O FQDN

Você não pode mudar o FQDN (como retornado por hostname --fqdn) ou o nome de domínio DNS (como retornado por dnsdomainname) com este comando. O FQDN do sistema é o nome que o resolver (3) retorna para o nome do host.

Tecnicamente: O FQDN é o nome getaddrinfo (3) retorna para o nome do host retornado por gethostname (2). O nome de domínio DNS é a parte após o primeiro ponto.

Por isso, depende da configuração (normalmente em /etc/host.conf) como você pode alterá-lo. Normalmente (se o arquivo hosts for lido antes do DNS ou NIS) você pode alterá-la em / etc / hosts.

Eu acho que pode ser possível definir o sistema / enganar o sistema em volta do FQDN, algo como ip-123-123-123-123.ec2.internal mesmo que o nome do host é webserver mas neste momento ele começou a parecer mais problemas do que valeu a pena, e que, para me para ter uma agradável festa de alerta pode causar um software muito e configuração problemas no caminho e então eu decidi desistir.

Eu também aprendi que um monte de instâncias do Amazon EC2 usar algo chamado cloud-init :

cloud-init é o pacote Ubuntu que trata a inicialização inicial de uma instância de nuvem. Ele é instalado nos Imagens Ubuntu Cloud e também nas imagens oficiais do Ubuntu disponível no EC2.

Algumas das coisas que ele configura são:

  • definir uma localidade padrão
  • configuração hostname
  • gerar ssh chaves privadas
  • adicionando as chaves SSH para .ssh / authorized_keys do usuário para que eles possam efetuar login
  • criação efêmera pontos de montagem
comportamento

O cloud-init pode ser configurado através de dados do usuário. Dados de usuários pode ser dado pelo usuário em tempo de instância lançamento. Isto é feito através do argumento --user-data ou arquivo-dados --user para ec2-run-instances

Eu também encontrei este que fala sobre como o nome da máquina é configurado com cloud-init:

instâncias no EBS, um desligamento e início mais tarde iria acabar com um endereço IP diferente.

No caso em que o usuário não tenha modificado / etc / hostname de seu valor original (semeados por de metadados 'local-hostname'), então cloud-init voltará a definir o nome da máquina e atualização / etc / hostname.

No caso em que o usuário tenha modificado / etc / hostname, ele permanecerá usuário gerenciado.

Além disso, se / etc / nuvem / cloud.cfg contém 'preserve_hostname' valor definido para um valor True, então o / etc / hostname nunca vai ser tocado.

O takeaway interessante é que se você não mudar o nome da máquina do pacote de cloud-init irá mantê-lo atualizado para você.

Se alguém tem uma solução alternativa ou pode resolver alguns dos problemas mencionados e ajuda reafirmar que nada vai quebrar no EC2 casos por causa das mudando o nome da máquina que eu ficaria feliz em ouvi-lo.

Outras dicas

Outra maneira é simplesmente editar ~/.bashrc e prepend PS1 com o apelido da máquina.

Edit: talvez mais corretamente, máquina de largura, por exemplo, no Linux AMI AWS (um exemplo) (colar isso em console ou adicionar à sua arbitrária instalar .sh):

cat << EOF | sudo tee /etc/profile.d/ps1.sh
if [ "$PS1" ]; then
  PS1="[\u@myinst1:\l \t \! \W]\\$ "
fi
EOF

Editar /etc/sysconfig/network como root.

Substitua

HOSTNAME=localhost.localdomain

com

HOSTNAME=hostname.DOMAIN_NAME

Em seguida, reinicializar ou run /etc/init.d/network restart O servidor, em seguida, deve informar o seu nome como um FQDN.

De este site :

Alterar o nome do host em um sistema em execução

Em qualquer sistema Linux pode alterar seu nome de host com o hostname comando (surpreso?) ... Aqui estão alguns usos rápidas do hostname linha de comando:

$> hostname

sem qualquer parâmetro que irá imprimir o nome do host atual do sistema.

$> hostname --fqd

que irá imprimir o nome de domínio totalmente qualificado (ou FQDN) do sistema.

$> hostname NEW_NAME

irá definir o nome do host do sistema para NEW_NAME.

Você também pode editar /etc/hostname (pelo menos no Ubuntu).

Para se certificar de que permanece após a reinicialização no AWS, adicione o comando em /etc/rc.local para que ele funcione quando a máquina começa.

Há também uma maneira de set o nome do host dinamicamente 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`
hostname $HOSTNAME
echo $HOSTNAME > /etc/hostname

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

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

  1. Abra o arquivo de configuração /etc/sysconfig/network em seu editor de texto favorito e altere a entrada HOSTNAME para refletir o nome de domínio totalmente qualificado (como webserver.mydomain.com).

    HOSTNAME=webserver.mydomain.com
    
  2. Reiniciar a instância para pegar o novo hostname.

    [ec2-user ~]$ sudo reboot
    
  3. Faça o login na sua instância e verificar se o nome do host foi atualizado. Seu prompt deve mostrar o novo nome de host (até o primeiro "") eo 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

  1. Abra o arquivo de configuração /etc/sysconfig/network em seu editor de texto favorito e altere a entrada HOSTNAME para refletir o nome do sistema desejada (como servidor web).

    HOSTNAME=webserver.localdomain
    
  2. Abra o arquivo /etc/hosts em seu editor de texto favorito e adicione uma entrada começando com 127.0.1.1 (em sistemas DHCP) ou endereço de eth0 (em sistemas IP estáticos) para coincidir com o exemplo abaixo, substituindo seu próprio nome de host. (127.0.0.1 deve ser deixado como a linha de localhost.)

    127.0.0.1   localhost localhost.localdomain
    127.0.1.1   webserver.example.com webserver
    
  3. Reiniciar a instância para pegar o novo hostname.

    [ec2-user ~]$ sudo reboot
    
  4. Faça o login na sua instância e verificar se o nome do host foi atualizado. Seu prompt deve mostrar o novo nome de host (até o primeiro "") eo comando hostname deve mostrar o nome de domínio totalmente qualificado.

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

Nota: Você também pode alterar o shell prompt de sem afetar o nome do host. Consulte esta documentação AWS.

Claro, você pode fazer isso se você tiver o seu próprio domínio (configurar um CNAME para apontar para o hostname Amazon). Caso contrário, você está muito presa com o que eles dão-lhe (ou um IP Elastic, se você definir um daqueles up).

A solução /etc/rc.local trabalhou para mim por um hostname básico, mas não me dá um FQDN.

Na minha Linux AMI (um instantâneo de outra instância) .. nenhuma fórmula acima funcionou. Então, eu simplesmente mudou campo hostname no arquivo:. /Etc/init.d/modifyhostname e fez uma reinicialização normais

Você vai precisar de fazer várias coisas para definir o nome do host:

  1. hostname newname - define o nome do host, mas é volátil
  2. editar / etc / hostname - define o nome do host para o próximo reboot
  3. Editar / etc / hosts - para manter sudo de reclamar

Eu coloquei estes juntos em um script e carregou-o como uma essência: https://gist.github.com/mnebuerquo/5443532036af8b48995547e2817dba85

Se você não quer mexer com o seu provedor de DNS, você poderia usar aliases para suas instâncias. I foi realmente surpreendidos que a Amazon não forneceu uma maneira de dar um apelido para uma instância EC2 quando saiu com o AWS Management Console , mas, entretanto, você poderia usar o href="http://www.rightscale.com" rel="nofollow noreferrer"> serviço gratuito se você quiser o recurso de alias - muito mais fácil do que lembrar essas identificações instância do Amazon.

sudo hostname *yourdesiredhostnamehere*

sudo /etc/init.d/networking restart

, em seguida, o nome do host é alterado. No meu servidor todos os outros serviços como o Apache e postfix obras. Servidor é o Ubuntu 12.04 LTS

scroll top