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

Почему шеф-повар указывает имя моего узла как «localhost»?

Я установил chef-client на узел Linux, и, похоже, он успешно подключился к моему серверу Chef. Однако когда я это сделаю: chef node list, он отображается как "localhost".

Почему шеф-повар не подбирает собственное имя узла? Если я попрошу подробностей, я увижу:

$ chef node show localhost
node Name:   localhost
Environment: _default
FQDN:        localhost
IP:          192.168.1.5
Run List:    
Roles:       
Recipes:     
Platform:    ubuntu 11.10

У него настроено правильное доменное имя. Например, если я это сделаю: hostname, он возвращает «mynodename», а не «localhost».

Как повар определяет имя узла? И почему у него в полном доменном имени отображается собственное имя?

РЕДАКТИРОВАТЬ: В ответ на cjc ниже, вот некоторые из результатов ohai | grep host:

(Примечание: этот узел работает на EC2)

"fqdn": "localhost",
"hostname": "mynodename",
"public_hostname": "ec2-...-.amazonaws.com",
"local_hostname": "ip-...ec2.internal",
"hostname": "ip-...ec2.internal",

Кроме того, hostname -s дает ожидаемый результат:

$ hostname -s
mynodename

Причина в том, что охай бежит hostname --fqdn, что дает "localhost".

Основная причина проблемы заключается в том, что я установил имя хоста как «mynodename» вместо «mynodename.example.com». Если я сделаю:

sudo hostname mynodename.example.com

Тогда он поступает правильно, когда я: hostname --fqdn

У меня та же проблема. Кажется, это охаи. Но это немного глубже. Лучший тест - увидеть, возвращает ли hostname --fqdn что-нибудь разумное.

Все сводится к файлу hosts. Установка имени хоста с sudo hostname my.fqdn не сработает. Строго говоря, в этом нет необходимости, потому что системные имена отличаются от доменных имен. Но системы, которые выполняют обратный поиск, легко запутаются. нижняя строка, в вашем файле etc / hosts ваш fqdn должен быть первой записью после ip-адреса, если это то, что вы хотите вернуть, например

127.0.0.1 myserver.mydomain.com myserver localhost # работает, вернуть fqdn

127.0.0.1 localhost myserver.mydomain.com myserver # это вернет localhost

127.0.0.1 myserver myserver.mydomain.com localhost # это вернет myserver

Если вы посмотрите файл по умолчанию etc / hosts, вы увидите, что ubuntu использует 127.0.1.1, а также 127.0.0.1. это из-за подобных ситуаций. Наличие имени хоста на отдельном IP-адресе (который по-прежнему является действующим с обратной связью) обеспечивает четкое сопоставление между именем системы и именем домена.

В инстансах Amazon AMI на основе RHEL 5 и 6. В этом случае посмотрите:

/etc/sysconfig/network

Я подозреваю, что он настроен как таковой:

HOSTNAME=localhost
DOMAINNAME=localhost

В этом случае внесите исправление с помощью:

HOSTNAME=mynodename
DOMAINNAME=mynodename.example.com

В экземплярах Linux типа Debian (таких как Ubuntu) вы можете посмотреть следующий файл для имени хоста:

/etc/hostname

И внесите изменения там.

chef-client использует ohai при настройке узла. Что вы получаете, когда бежите ohai |grep host ?

Просматривая исходный код ohai в lib / ohai / plugins для провайдера linux, я вижу, что он в основном запускает "hostname -s", так что это немного загадочно, учитывая ваши результаты.

Могло ли имя хоста быть задано после запуска chef-client?

Для меня это проблема в / etc / hosts. Мой файл / etc / hosts выглядит как

127.0.0.1      localhost myhostname
...
...

удаление localhost в файле / etc / hosts решает мою проблему. В любом случае мне не нужен localhost.