Puppet: Nazwa węzła wydaje się zależeć od odwrotnego dns?

20

Wydaje mi się, że mam trochę problemów ze zrozumieniem, jak to zrobić. Mam nowy serwer, który buduję, siedzący za biurowym NAT w pracy, z odwrotnymi mapami dns office.mydomain.com, ale chcę, żeby maszyna była ns2.mydomain.comze względu na marionetkę.

Fragment kodu nodes.pp:

node 'ns2.mydomain.com' inherits basenode {
  info('ns2.mydomain.com')
}

node 'office.mydomain.com' inherits basenode {
  info('office.mydomain.com')
}

I mój „puppet.conf” na kliencie:

[main]
#was node_name=ns2.mydomain.com
#was fqdn=ns2.mydomain.com
certname=ns2.mydomain.com
node_name=cert

Mój syslog na serwerze raportuje:

Sep 16 22:59:12 support puppetmasterd[2800]: Host is missing hostname and/or domain: office.mydomain.com
Sep 16 22:59:12 support puppetmasterd[2800]: (Scope(Node[office.mydomain.com])) office.mydomain.com
Sep 16 22:59:12 support puppetmasterd[2800]: Compiled catalog for office.mydomain.com in 0.03 seconds
Sep 16 22:59:12 support puppetmasterd[2800]: Caching catalog for ns2.mydomain.com

Jak mogę zmusić go do pobrania konfiguracji ns2.mydomain.combez robienia czegoś takiego:

node 'ns2.mydomain.com' inherits basenode {
  info('ns2.mydomain.com')
}

node 'office.mydomain.com' inherits 'ns2.mydomain.com' {
  info('office.mydomain.com')
}

AKTUALIZACJA : Wydaje się, że ten problem powoduje również inne problemy. Na przykład, jeśli ja, info("$fqdn")gdy maszyna siedzi za office.mydomain.comfaktem, fakt jest pusty, podobnie jak $operatingsystem. To prawie tak, jakby fakty nie zostały właściwie odkryte. Czy może jest problem NAT? Czy są jakieś sugestie dotyczące wyśledzenia tej przyczyny tego problemu?

gnarf
źródło

Odpowiedzi:

26

Aaah, wykrywanie nazwy hosta kukiełkowego. Co za koszmar...

Domyślnie, jaka nazwa zostanie użyta, aby znaleźć nodedefinicję do użycia na podstawie zawartości faktu fqdn. To , co tak naprawdę odwzorowuje, zależy od kilku różnych rzeczy i tak, odwrotny DNS jest jedną z nich - i jest lepszy niż własna nazwa hosta maszyny!

Jednak ta nazwa (zwykle) obowiązuje tylko podczas generowania certyfikatu. W rzeczywistości niewłaściwie używasz node_namezmiennej - powinna ona być ustawiona na „cert” lub „facter”. fqdnParametr jest również przestarzała.

To, co naprawdę chcesz zrobić, to ustawić certnameparametr na kliencie na nazwę węzła, której chcesz użyć, a następnie ustawić node_namena cert(lub po prostu go pominąć, ponieważ certjest to ustawienie domyślne). Spowoduje to pobranie nazwy węzła z CN certyfikatu przedstawionego przez klienta, a certnameparametr upewni się, że jest ustawiony na coś rozsądnego, a nie na fakt, że faktograf sam wymyśli. Niestety, ponieważ masz już utworzone „złe” certyfikaty, musisz ponownie wygenerować te certyfikaty ( rm -rf /var/lib/puppet/sslna kliencie i ponownie uruchomić Puppet) po skonfigurowaniu konfiguracji, aby odpowiednie certyfikaty zostały utworzone i wykorzystane.

Jeśli to wszystko wydaje się trochę skomplikowane, masz rację - to prawda. Witamy w Puppet.

womble
źródło
Cześć - tak patrząc na puppetmaster i puppet - oba mają node_name=cert, zaktualizowały się cert_name=ns1.mydomain.comi facter fqdnwracają ns1.mydomain.comdo klienta, ale wciąż otrzymuję te same komunikaty o błędach office.mydomain.com.
gnarf
1
re: nazwa, masz rację, źle zapamiętałem i nie sprawdziłem dokumentów tak, jak powinienem. Jeśli chodzi o brak fiksacji, musisz zregenerować certyfikat klienta; Zaktualizowałem moją odpowiedź, aby to uwzględnić.
womble
1
Właściwie - mój plik cert jest, ns1.mydomain.com.pema jego CN to także ns1 ... To jest „poprawne” prawda? office.mydomain.comjest tym, czego używa jako nazwy węzła i najwyraźniej za każdym razem, gdy próbuje uchwycić fakty podczas analizy, zamiast używać nazwy cert jako nazwy węzła. Może brakuje mi czegoś jeszcze? Wydaje się, że żaden z moich faktów nie został przekazany do analizatora składni ani info($fqdn)nie pokazuje pustej linii w zakresie, w którym go umieściłem.
gnarf
Nie wiem, co zrobiłeś, ale udało ci się wykopać coś naprawdę dobrego. Myślę, że jesteś sam.
womble
Kolejna aktualizacja: udało mi się uzyskać wszystkie „wstępne ustawienia” zza biurowej sieci i uruchomić nowy serwer nazw - gdy tylko zaczął używać prawidłowego odwrotnego DNS, wszystkie fakty pokazały się poprawnie ...
gnarf
5

Wydaje mi się, że mam szczęście (chociaż wciąż jest kilka przypadków testowych, które chcę zobaczyć) w edytowaniu, /etc/hostsaby wymienić pożądaną fqdn pod 127.0.0.1 jako pierwszą opcję. Wydaje się, że wtedy wykrywa to poprawnie / przekazuje fakty. Chociaż wydaje się, że nadal muszę utworzyć węzeł o nazwie, office.mydomain.comktóry dziedziczy żądany węzeł.

gnarf
źródło
To zadziałało dla mnie. (musiałem usunąć katalog ssl jak wspomniano powyżej)
bwizzy
To również działało dobrze dla mnie i jest również obsługiwane przez dokumentację Puppet: puppetlabs.com/blog/resolving-dns-issues
DuffJ