Подтвердить что ты не робот

Можем ли мы установить легко запоминаемые имена хостов для экземпляров EC2?

Я запускаю несколько стандартных экземпляров Fedora на EC2. Я чувствую, что общедоступные имена хостов экземпляров, назначенных Amazon, слишком странны и трудно запоминаются. Я хотел бы изменить их на что-то короткое (например, красный/синий/зеленый/и т.д.).

Есть ли обратная сторона в этом? И как настроить его таким образом, чтобы он сохранялся после перезагрузки?

Спасибо.

4b9b3361

Ответ 1

Прежде чем начать, попробуйте запустить hostname и hostname --fqdn и обратите внимание на ответы.

Вы можете отредактировать /etc/hostname и установить имя хоста, которое будет вставлено после перезагрузки. Вы можете принудительно перезагрузить хост-имя, используя hostname -F /etc/hostname, чтобы прочитать это значение в имени хоста. Запрос bash изменится после выхода из системы и входа в систему.

предупреждение/примечание:
Да, это хорошо, если имя хоста в приглашении bash установлено на что-то более полезное, чем ip-123-123-123-123, но я решил оставить мой (по крайней мере на данный момент), потому что кажется, что многие вещи действительно рассчитывают на то, что имя хоста на экземплярах ec2, установленное стандартным образом. После редактирования /etc/hostname и изменения имени хоста на webserver многие службы, похоже, терпят неудачу, потому что имя хоста не будет разрешено, и apache не запустится. Затем я редактировал /etc/hosts и добавил в

127.0.0.1 webserver

как вторая строка. Затем Apache начал, но пожаловался, что он не смог найти полное доменное имя. Я подтвердил, что запуск hostname --fqdn больше не работает.

Далее я посоветовался с man hostname и узнал, что, хотя вы можете установить hostname, кажется, что FQDN - это то, что возвращается с помощью поиска DNS.

FQDN

Вы не можете изменить полное доменное имя (как возвращено именем хоста --fqdn) или DNS-доменное имя (как было возвращено dnsdomainname) с помощью этой команды. Полное доменное имя системы - это имя, которое возвращает преобразователь (3) для имени хоста.

Технически: FQDN - это имя getaddrinfo (3) возвращает имя хоста, возвращаемое gethostname (2). DNS-домен является частью после первой точки.

Поэтому это зависит от конфигурации (обычно в /etc/host.conf), как вы можете ее изменить. Обычно (если файл hosts разобран до DNS или NIS), вы можете изменить его в /etc/hosts.

Я думаю, что можно было бы установить систему /fool систему в FQDN, что-то вроде ip-123-123-123-123.ec2.internal, хотя имя хоста webserver, но на данный момент оно стало казаться больше неприятным, чем стоило, и что для меня более приятная подсказка bash может вызвать проблемы с программным обеспечением и конфигурацией в будущем, и поэтому я решил отказаться.

Я также узнал, что многие экземпляры Amazon ec2 используют нечто, называемое cloud-init:

cloud-init - это пакет Ubuntu, который обрабатывает раннюю инициализацию экземпляра облака. Он установлен в облачных изображениях Ubuntu, а также в официальных изображениях Ubuntu, доступных на EC2.

Некоторые из настроек, которые он настраивает:

  • настройка локали по умолчанию
  • настройка имени хоста
  • генерировать секретные ключи ssh
  • добавление ssh ключей пользователю .ssh/authorized_keys, чтобы они могли войти в систему
  • настройка эфемерных точек монтирования.

поведение cloud-init можно настроить с помощью пользовательских данных. Пользовательские данные могут быть предоставлены пользователем в момент запуска экземпляра. Это делается с помощью аргумента -user-data или -user-data-file в ec2-run-экземпляры

Я также нашел это, в котором говорится о том, как имя хоста настроено с помощью cloud-init:

В экземплярах EBS завершение работы и последующий запуск заканчиваются другим IP-адресом.

В случае, когда пользователь не изменил /etc/hostname с его первоначального значения (засеянный метаданными "local-hostname" ), cloud-init снова установит имя хоста и обновит /etc/hostname.

В случае, когда пользователь изменил имя /etc/hostname, он останется управляемым пользователем.

Кроме того, если /etc/cloud/cloud.cfg содержит значение "preserve_hostname", установленное в значение True, то имя /etc/hostname никогда не будет затронуто.

Интересным выводом является то, что если вы не измените имя хоста, пакет cloud-init сохранит его актуальность для вас.

Если у кого-то есть обходной путь или может решить некоторые из упомянутых проблем, и помогите заверить, что ничто не сломается на экземплярах ec2 из-за изменения имени хоста, я был бы рад услышать его.

Ответ 2

Другой способ - просто отредактировать ~/.bashrc и prepend PS1 с псевдонимом машины.

Изменить: возможно, более правильно, по всей машине, например. на AWS Linux AMI (пример) (вставьте это в консоль или добавьте произвольную установку .sh):

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

Ответ 3

Измените /etc/sysconfig/network как root.

Заменить

HOSTNAME=localhost.localdomain

с

HOSTNAME=hostname.DOMAIN_NAME

Затем перезагрузите или запустите /etc/init.d/network restart Затем сервер должен сообщить свое имя как полное доменное имя.

Ответ 4

С этого сайта:

Изменить имя хоста в работающей системе

В любой системе Linux вы можете изменить имя хоста с помощью команды hostname (удивлен?)… Вот несколько быстрых способов использования имени хоста командной строки:

$> hostname

без каких-либо параметров он выведет текущее имя хоста системы.

$> hostname --fqd

он выведет полное доменное имя (или FQDN) системы.

$> hostname NEW_NAME

установит имя хоста системы на NEW_NAME.

Вы также можете отредактировать /etc/hostname (по крайней мере, в Ubuntu).

Чтобы убедиться, что он остается после перезагрузки в AWS, либо добавьте команду в /etc/rc.local чтобы она запускалась при запуске машины.

Существует также способ динамического задания имени хоста через 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

Ответ 5

Чтобы изменить системное имя хоста на публичное DNS-имя

Выполните эту процедуру, если у вас уже есть общедоступное DNS-имя.

  1. Откройте файл конфигурации /etc/sysconfig/network в вашем любимом текстовом редакторе и измените запись HOSTNAME, чтобы она отражала полное доменное имя (например, webserver.mydomain.com).

    HOSTNAME=webserver.mydomain.com
    
  2. Перезагрузите экземпляр, чтобы выбрать новое имя хоста.

    [ec2-user ~]$ sudo reboot
    
  3. Войдите в свой экземпляр и убедитесь, что имя хоста обновлено. В вашем приглашении должно быть указано новое имя хоста (до первого "."), А в команде hostname должно быть указано полное доменное имя.

    [[email protected] ~]$ hostname
    webserver.mydomain.com
    

Чтобы изменить системное имя хоста без публичного DNS-имени

  1. Откройте файл конфигурации /etc/sysconfig/network в вашем любимом текстовом редакторе и измените запись HOSTNAME, чтобы отразить желаемое имя хоста системы (например, веб-сервер).

    HOSTNAME=webserver.localdomain
    
  2. Откройте файл /etc/hosts в вашем любимом текстовом редакторе и добавьте запись, начинающуюся с 127.0.1.1 (в системах DHCP) или адрес eth0 (в системах со статическим IP), чтобы соответствовать приведенному ниже примеру, подставив свое собственное имя хоста. (127.0.0.1 следует оставить как строку localhost.)

    127.0.0.1   localhost localhost.localdomain
    127.0.1.1   webserver.example.com webserver
    
  3. Перезагрузите экземпляр, чтобы выбрать новое имя хоста.

    [ec2-user ~]$ sudo reboot
    
  4. Войдите в свой экземпляр и убедитесь, что имя хоста обновлено. В вашем приглашении должно быть указано новое имя хоста (до первого "."), А в команде hostname должно быть указано полное доменное имя.

    [[email protected] ~]$ hostname
    webserver.localdomain
    

Примечание. Вы также можете изменить приглашение оболочки, не затрагивая имя хоста. Обратитесь к этой документации AWS.

Ответ 6

Конечно, вы можете это сделать, если у вас есть собственный домен (укажите CNAME, чтобы указать имя хоста Amazon). В противном случае вы в значительной степени застреваете с тем, который они дают вам (или Elastic IP, если вы установите один из них).

Ответ 7

Решение/etc/rc.local работало для меня для основного имени хоста, но не дает мне полного доменного имени.

Ответ 8

В моем Linux AMI (снимок другого экземпляра). Ни одна из вышеприведенных формул не работала. Затем я просто изменил поле HOSTNAME в файле:/etc/init.d/modifyhostname и выполнил обычную перезагрузку.

Ответ 9

Вам нужно будет сделать несколько вещей, чтобы установить имя хоста:

  1. hostname newname - устанавливает имя хоста, но является изменчивым
  2. edit/etc/hostname - устанавливает имя хоста для следующей перезагрузки
  3. отредактируйте /etc/hosts - чтобы sudo не жаловался

Я собрал их вместе в скрипт и загрузил в виде гистограммы: https://gist.github.com/mnebuerquo/5443532036af8b48995547e2817dba85

Ответ 10

Если вы не хотите связываться со своим DNS-провайдером, вы можете использовать псевдонимы для своих экземпляров. Я был очень удивлен тем, что Amazon не предоставил способ дать псевдоним для экземпляра EC2, когда они вышли с AWS Management Console, но в то же время вы можете использовать бесплатную RightScale, если вы хотите использовать функцию псевдонима - намного проще, чем помнить те экземпляры экземпляров Amazon.

Ответ 11

sudo hostname *yourdesiredhostnamehere*

sudo /etc/init.d/networking restart

то имя хоста будет изменено. На моем сервере работают все другие службы, такие как apache и postfix. Сервер Ubuntu 12.04 LTS