Puppet / Facter "не удалось получить факт fqdn": как исправить или обойти?
я узнаю о puppet и пытаюсь экспериментировать с ним на виртуальной машине дома. Я еще не использую марионеточный сервер, просто запускаю вещи локально. Он работает нормально, но каждый раз, когда я бегу puppet apply ...
, я получаю задержку в несколько секунд, после чего он отображает сообщение
warning: Could not retrieve fact fqdn
Я предполагаю, что сообщение связано с задержкой, и я хочу избавиться от него (задержка ... это мне сообщение). Поиск решения в Google, похоже, указывает на то, что он каким-то образом связан с DNS-поиском, но я не могу найти ничего другого, что кажется удивительным. Все, что я хочу, это иметь возможность быстро применять манифесты в моей виртуальной машине, чтобы я мог экспериментировать. Как я могу ускорить процесс?
обновление: я не вижу никакой дополнительной информации в выходных данных отладки, но это выглядит так:
$ puppet apply -dv puppet-1.pp
warning: Could not retrieve fact fqdn
debug: Failed to load library 'rubygems' for feature 'rubygems'
debug: Failed to load library 'selinux' for feature 'selinux'
debug: Puppet::Type::File::ProviderMicrosoft_windows: feature microsoft_windows is missing
...
обновление: я добавил тег "ruby", потому что у puppet так мало последователей. Если это не принадлежит ruby, или если вы знаете лучший тег для него, позвольте мне знать.
обновление:"certname", "node_name" и "node_name_value", но я не мог заставить задержку уйти. Кто-нибудь знает, как конкретно сказать Facter игнорировать fqdn или как сделать Facter в состоянии найти fqdn на Ubuntu 11.10 vm?
прогресса:
$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1
это мой маршрутизатор, на котором работает Dnsmasq через Tomato.
$ dig -x 192.168.1.129 192.168.1.1
; <<>> DiG 9.7.3 <<>> -x 192.168.1.129 192.168.1.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21838
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;129.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
129.1.168.192.in-addr.arpa. 0 IN PTR desk-vm-ubuntu-beta.
;; Query time: 14 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Oct 16 17:47:47 2011
;; MSG SIZE rcvd: 77
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27462
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;192.168.1.1. IN A
;; ANSWER SECTION:
192.168.1.1. 0 IN A 192.168.1.1
;; Query time: 11 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sun Oct 16 17:47:47 2011
;; MSG SIZE rcvd: 45
strace
привел меня к arp, который блокировался в течение 5 секунд и вызывал дважды для каждого facter
:
$ time arp -a
? (10.0.2.2) at 52:54:00:12:35:02 [ether] on eth0
real 0m5.127s
user 0m0.004s
sys 0m0.016s
Я изменил виртуальную машину с сети NAT на мостовую, так что теперь у нее есть IP в сети, и arp
возвращает сразу сейчас. (Я не сетевой гуру, поэтому я понятия не имею, почему это сработало, но мне показалось разумным попробовать.), Но facter
по-прежнему занимает около 4-5 секунд для запуска и по-прежнему сообщает "не удалось получить факт fqdn". facter -d
показывает несколько вхождений "значение для домена по-прежнему равно нулю", вплоть до конца. Я думаю, что-то все еще не так.
6 ответов
поскольку puppet использует факт fqdn для определения того, какой узел он работает как, может быть невозможно запустить, если он не может быть определен. Учитывая то, что вы описываете, самая простая вещь для отладки -facter fqdn
вместо вашей кукольной командной строки.
если "несколько секунд" очень близко к точно 5 секунд, очень вероятно, что ваша конфигурация DNS сломана с одним плохим DNS-сервером в списке. Что находится в /etc / resolv.конф? Что произойдет, если вы запустите dig -x $HOSTIP $DNSSERVERIP
С первым сервер имен, указанный в resolv.конф?
если вы посмотрите в facter/fqdn.rb
вы можете увидеть, что именно facter пытается сделать, чтобы решить fqdn. В версии, которую я наиболее удобен, он использует facter/hostname.rb
и facter/domainname.rb
какой код вызова из facter/util/resolution.rb
.
именно то, что произойдет, будет зависеть от того, какая версия facter у вас есть, какая ОС, и, возможно, также, что именно вы установили. Зову /bin/hostname
, uname
(etc) и выполнение DNS-запросов вполне вероятно. Вы всегда можете использовать strace -t facter fqdn
чтобы увидеть, что занимает время (ищите разрыв во временных метках)
из всего, что вы описали, похоже, проблема в том, что puppet/facter действительно хочет иметь доменное имя, и у вас его нет, у вас просто есть голое имя хоста.
добавлять domain example.com
to /etc / resolv.конф должен сделать трюк. Бег!--10--> также должен сделать трюк (но его нужно будет повторно применить). Постоянные решения зависят от точной настройки ОС.
я получил ту же ошибку при запуске puppet на моей домашней машине (Xubuntu). Что сработало для меня, так это изменение второй строки файла /etc/hosts
. Первые две строки перед изменением:
127.0.0.1 localhost
127.0.1.1 box
и после изменения:
127.0.0.1 localhost
127.0.1.1 box.example.com box
теперь команда hostname -f
возвращает box.example.com
вместо box
, и марионетка счастлива.
FQDN означает "полное доменное имя". Например, в домене Windows (или другом подобном домене на основе LDAP) это будет имя сетевого домена, например "организация".внутренний " - домен, к которому присоединены ваши компьютеры и серверы, и домен, содержащий ваши сетевые группы и учетные записи пользователей.
таким образом, у него, вероятно, были проблемы с получением fqdn для некоторой аутентификации, необходимой для выполнения остальных шагов конфигурации, было бы моим догадка.
http://en.wikipedia.org/wiki/Fully_qualified_domain_name
возможно, вы получите лучший ответ на ServerFault, так как управление системой/конфигурацией также переходит в их область.
добавить эту строку в /etc/resolv.conf
domain abc.com
запустите facter fqdn еще раз
Fqdn требует доменного имени, которое, возможно, отсутствует в вашем недавно установленном ubu12
другой возможный способ обойти это, чтобы переопределить факт.
http://www.puppetcookbook.com/posts/override-a-facter-fact.html
FACTER_fqdn=box.example.com facter
в Windows это будет
SET FACTER_fqdn=box.example.com
facter fqdn