Прежде чем начать, попробуйте запустить 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) или имя домена DNS (возвращаемое именем dnsdomainname). Полное доменное имя системы - это имя, которое resolver (3) возвращает для имени хоста.
Технически: полное доменное имя - это имя, которое getaddrinfo (3) возвращает для имени хоста, возвращаемого gethostname (2). DNS-имя домена является частью после первой точки.
Следовательно, от конфигурации зависит (как правило, в /etc/host.conf), как вы можете ее изменить. Обычно (если файл hosts анализируется до DNS или NIS), вы можете изменить его в /etc/hosts.
Я думаю, что было бы возможно настроить систему / заставить систему вернуть полное доменное имя, что-то вроде ip-123-123-123-123.ec2.internal
, хотя имя хоста webserver
, но в этот момент это стало казаться большим количеством проблем, чем оно того стоило и что для меня более приятное приглашение bash может вызвать много проблем с программным обеспечением и конфигурацией в будущем, и поэтому я решил отказаться.
Я также узнал, что многие экземпляры amazon ec2 используют что-то под названием cloud-init :
cloud-init - это пакет Ubuntu, который обрабатывает раннюю инициализацию экземпляра облака. Он устанавливается в облачных образах Ubuntu, а также в официальных образах Ubuntu, доступных на EC2.
Некоторые из его настроек:
- установка языка по умолчанию
- настройка имени хоста
- генерация закрытых ключей ssh
- добавление ключей ssh в пользовательские .ssh / авторизованные_ключи, чтобы они могли войти в систему
- настройка эфемерных точек монтирования
поведение cloud-init можно настроить с помощью пользовательских данных. Пользовательские данные могут быть предоставлены пользователем во время запуска экземпляра. Это делается с помощью аргумента --user-data или --user-data-file для ec2-run-instances
Я также нашел это , которое говорит о том, как имя хоста настроено с помощью 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 ничего не сломается из-за изменения имени хоста, я был бы рад услышать его.