Я установил 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.