2011-10-15 10 views
46

Sto imparando a parlare di burattino e sto provando a sperimentarlo su una VM a casa. Non sto ancora usando un server fantoccio, semplicemente eseguendo le cose localmente. Funziona bene, ma ogni volta che corro puppet apply ..., ottengo un ritardo di alcuni secondi, dopo di che si visualizza il messaggioPuppet/Facter "Impossibile recuperare fact fqdn": come risolvere o aggirare?

warning: Could not retrieve fact fqdn 

Suppongo che il messaggio è legata al ritardo, e voglio sbarazzarsi di esso (il ritardo - posso vivere con il messaggio). Googling per una soluzione sembra indicare che è in qualche modo correlato alle ricerche DNS, ma non riesco davvero a trovare nient'altro al riguardo, il che sembra sorprendente. Tutto quello che voglio è essere in grado di applicare i manifesti nel mio VM velocemente, così da poter sperimentare. Come posso accelerare le cose?

Aggiornamento: non vedo alcuna info extra nell'output di debug, ma sembra che questo:

$ 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 
... 

Aggiornamento: Ho aggiunto il tag "ruby", perché fantoccio ha così pochi seguaci. Se questo non appartiene al rubino, o se conosci un tag migliore, fammelo sapere.

Aggiornamento ancora: Dopo aver imparato un po 'di più su di marionette, ho capito che questo messaggio proviene dalla componente chiamato "facter" che fiuta "fatti" circa il sistema che delle marionette è in esecuzione. Ho trovato alcune opzioni di configurazione e ho giocato con "certname", "node_name" e "node_name_value", ma non ho potuto ottenere il ritardo di andare via. Qualcuno sa specificamente come dire a Facter di ignorare il file fqdn o come rendere Facter in grado di trovare fqdn su un Ubuntu 11.10 vm?

Progress:

$ cat /etc/resolv.conf 
# Generated by NetworkManager 
nameserver 192.168.1.1 

Questo è il mio router, che è in esecuzione Dnsmasq tramite pomodoro.

$ 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 mi ha portato a ARP, che è stato bloccando per 5 secondi e chiamato due volte per ogni 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 

ho cambiato il VM dal NAT di rete a ponte, in modo che ora ha un IP sulla rete e arp restituisce immediatamente ora. (Non sono un guru del networking, quindi non ho idea del perché abbia funzionato, ma sembrava una cosa ragionevole da provare.) Ma il facter richiede ancora circa 4-5 secondi per essere eseguito e continua a riportare "Impossibile recuperare fqdn". facter -d mostra diverse occorrenze di "valore per dominio è ancora nullo", fino alla fine. Sto pensando che qualcosa non è ancora giusto.

risposta

33

Poiché puppet utilizza il fatto fqdn per determinare quale nodo è in esecuzione come, potrebbe non essere possibile eseguire se non può essere determinato. Dato quello che stai descrivendo, la cosa più semplice da eseguire per eseguire il debug è facter fqdn anziché la riga di comando di Marionetta.

Se "diversi secondi" sono molto vicini a esattamente 5 secondi, è molto probabile che la configurazione DNS sia interrotta con un solo server DNS non valido elencato. Cosa c'è in /etc/resolv.conf? Cosa succede se si esegue dig -x $HOSTIP $DNSSERVERIP con il primo server dei nomi elencato in resolv.conf?

Se si guarda in facter/fqdn.rb si può vedere cosa sta cercando di fare esattamente il facter per risolvere fqdn. Nella versione che ho più a portata di mano è usando facter/hostname.rb e facter/domainname.rb quale codice di chiamata da facter/util/resolution.rb.

Esattamente ciò che accade dipenderà dalla versione di facter che hai, da quale sistema operativo, e possibilmente anche da cosa esattamente hai installato. Chiamare /bin/hostname, uname (ecc.) E fare ricerche DNS sono tutte abbastanza probabili. Puoi sempre usare strace -t facter fqdn per vedere cosa sta prendendo il tempo (cerca il divario in data e ora)

Da tutto quello che hai descritto, sembra che il problema sia che puppet/facter vuole davvero avere un nome di dominio e non ne hai uno, hai solo un nome host nudo.

L'aggiunta di domain example.com a /etc/resolv.conf dovrebbe fare il trucco. In esecuzione hostname foo.example.com dovrebbe anche fare il trucco (ma dovrà essere riapplicato). Le soluzioni permanenti dipendono dall'esatta configurazione del sistema operativo.

+3

Ah! 'strace' ha trovato qualcosa:'/usr/lib/ruby ​​/ 1.8/facter/arp.rb' stava chiamando 'arp -a' che stava bloccando per 5 secondi. Ho aggiunto il resolv.conf, l'output di scavo e l'output arp alla mia risposta. È più veloce ora, ma non è ancora veloce. 4-5 secondi suonano correttamente per un VM su un core del desktop? –

+0

Sta facendo davvero fatica a trovare un nome di dominio e fallendo in ogni modo. Dagli un dominio e ci riuscirai più velocemente. Aggiungerò qualcosa alla risposta tra un momento. – freiheit

+1

Poiché vm è una distribuzione desktop, ho impostato un dominio nel mio router e riavviato il gestore di rete, e ha aggiunto il dominio a resolv.conf stesso. Questo si è preso cura del dominio e di fqdn. Non ho mai trovato la necessità di avere un nome di dominio configurato prima. Ora è a circa 4 secondi al massimo - molto meglio di quanto fosse, e non sono sicuro che andrà molto meglio. Grazie per l'aiuto! –

5

FQDN è l'acronimo di "nome dominio completo". In un dominio Windows (o un altro dominio simile basato su LDAP), ad esempio, sarebbe il nome del dominio di rete, come "organization.internal" - il dominio a cui sono uniti i tuoi computer e server, e il dominio che contiene i tuoi gruppi di rete e account utente.

Quindi, probabilmente ha avuto problemi a ottenere fqdn per l'autenticazione necessaria per eseguire il resto dei passaggi di configurazione, sarebbe la mia ipotesi.

http://en.wikipedia.org/wiki/Fully_qualified_domain_name

E 'possibile che si otterrà una risposta migliore ServerFault, dal momento che la gestione del sistema/configurazione attraversa anche oltre nel loro regno.

+1

Giusto, capisco cosa sia un fqdn. Ho visto indicazioni che è in qualche modo correlato all'autent, ma in realtà non impedisce che qualcosa accada. Funziona tutto. Introduce solo un fastidioso ritardo. Anche questo non è una casella di Windows o un dominio di Windows. È una virtual machine virtuale con Ubuntu 11.11. Buona idea su ServerFault: se non ricevo più input qui, potrei vedere se riesco a capire come spostare la domanda laggiù. Ho aggiunto un po 'più di dettagli che ho scoperto alla mia domanda. –

+1

Ah, gotcha. Per migrare la domanda, le persone devono fondamentalmente votare per chiuderla come fuori tema (suggerendo di passare a ServerFault). Se non si ottiene alcuna trazione, probabilmente dovrai semplicemente postare la croce da solo. – jefflunt

+0

Fresco. Grazie per l'aiuto. –

25

Ho avuto lo stesso errore durante l'esecuzione di puppet sulla mia macchina domestica (Xubuntu). Ciò che ha funzionato per me è stata la modifica della seconda riga del file /etc/hosts. Le prime due righe prima della modifica:

127.0.0.1 localhost 
127.0.1.1 box 

e dopo la modifica:

127.0.0.1 localhost 
127.0.1.1 box.example.com box 

Ora, il comando restituisce hostname -fbox.example.com invece di box e fantoccio è felice.

+1

Ho dovuto trovare il completo prima del nome breve/etc/hosts altrimenti non funzionava ancora. – flickerfly

+4

Assicurati di avere l'ordine del tuo reindirizzamento corretto. Devi fare attenzione a fare qualcosa come '127.0.1.1 box www.box.com' –

4

accodamento questa linea in /etc/resolv.conf

domain abc.com 

corsa facter fqdn nuovo

Fqdn richiede nome di dominio, che forse manca nel vostro appena installato ubu12

23

Aggiunta

config.vm.hostname = "vagrant.example.com" 

alla mia Vagrantfile fissata per me.

+1

Questo è in linea con le informazioni in questa pagina: http://blog.doismellburning.co.uk/2013/01/19/ aggiornamento-fantoccio-in-vaganti-box / – demaniak

Problemi correlati