Назад | Перейти на главную страницу

Как переопределить имя хоста, которое DHCP настраивает в поле CentOS7 в AWS?

В названии почти все сказано. У меня есть виртуальная машина в EC2 под управлением CentOS 7. Она использует DHCP, что, кажется, является требованием EC2. DHCP продолжает перезаписывать имя хоста при перезагрузке, что бы я ни пытался. Я не буду перечислять это, но я пробовал практически все предложения здесь: Переопределить имя хоста DHCP в RHEL5 / CentOS / Amazon Linux а также те, которые были найдены на нескольких других сайтах, на которых появлялся поиск в Google. Я не понимаю, какая это конкретная версия ОС или среда AWS / EC2, но я не могу изменить имя хоста и заставить его оставаться при перезагрузках. Даже грубая форсировка через /etc/rc.d/rc.local (добавление "/ bin / hostnamectl set-hotname foo.bar.baz" не сработало. Не могу поверить, что другие пользователи AWS / EC2 этого не поняли из. Пожалуйста, помогите.

Обновление: это тоже не работает: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-hostname.html То есть, добавление записи A DNS для ящика в AWS Route53 (и проверка его работы) и установка HOSTNAME = foo.bar.baz в / etc / sysconfig / network (проверка после перезагрузки) также бесполезны.

Обновление 2: на аналогичный вопрос был дан ответ для Fedora 20. Принятое решение также включало перенастройку cloud-init, хотя и другим способом. Кроме того, не было ясно, относится ли этот вопрос / решение к другим дистрибутивам. Таким образом, я считаю, что мой вопрос, вероятно, должен остаться для других, использующих CentOS и ищущих его таким образом (да, я знаю, что Fedora и CentOS являются братьями и сестрами, но не все ищут в Google все синонимы при поиске решений).

Хорошо. Я потратил на эту проблему около пяти часов, прежде чем пришел к ответу. Предложение @Sirex об удалении cloud-init было ключом к разгадке. По сути, cloud-init - это служба, встроенная в большинство образов EC2 (AMI), включая AMI Linux и CentOS. Система делает много вещей (погуглите) и, вероятно, полезна для определенной подготовки и обслуживания foo. Поэтому я не решаюсь просто отключить его. Но, похоже, он также устанавливает имя хоста EC2. Итак, чтобы заменить это предпочтительным именем хоста, просто сделайте следующее:

(1) создайте файл с именем что-то вроде 99 _... cfg (я назвал свой 99_hostname.cfg) и запишите в него следующее содержимое:

#cloud-config
hostname: foo
fqdn: foo.bar.baz

Конечно, заменив "foo" и "foo.bar.baz" на имя вашего хоста и полное доменное имя.

(2) Поместите этот файл в /etc/cloud/cloud.cfg.d/99_hostname.cfg

(3) Убедитесь, что права доступа к файлу / владелец / контекст selinux (если у вас есть принудительное применение SELinux) установлены правильно с помощью следующих команд:

sudo su -
cd /etc/cloud/cloud.cfg.d/
chown root: 99_hostname.cfg
chmod 644 99_hostname.cfg
chcon system_u:object_r:etc_t:s0 99_hostname.cfg

(4) Перезагрузите виртуальную машину, и должно быть установлено новое имя хоста. Если вы не доверяете своей командной строке bash, вы можете проверить это, например, выполнив одно из следующих действий:

hostnamectl

или

cat /etc/hostname

удалить cloud-init.

Это привело меня умственный первый раз :-)

Все еще ищу время, чтобы решить, как заставить cloud-init задавать имя хоста, как ожидалось (из тега или чего-то подобного) - я еще не дошел до этого.