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

Puppet: имя узла, кажется, зависит от обратного DNS?

Кажется, у меня возникла небольшая проблема с пониманием того, как заставить это работать. У меня есть новый сервер, который я создаю, сидя за офисным NAT на работе, его обратный DNS сопоставляется с office.mydomain.com, но хочу, чтобы машина была ns2.mydomain.com ради марионетки.

node.pp фрагмент:

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

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

И мой 'puppet.conf' на клиенте:

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

Мой системный журнал на сервере сообщает:

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

Как я могу заставить его получить конфиг для ns2.mydomain.com не делая что-то вроде этого:

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

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

ОБНОВИТЬ: Эта проблема, похоже, вызывает и другие проблемы. Например, если я info("$fqdn") пока машина сидит сзади office.mydomain.com факт fqdn пуст, как и $operatingsystem. Похоже, что факты не раскрываются должным образом. Возможно, проблема с NAT? Есть ли какие-нибудь предложения по поиску причины этой проблемы?

Аааа, определение имени хоста марионетки. Какой кошмар...

По умолчанию, какое имя будет использоваться для поиска node определение для использования основано на содержании fqdn fact. какой который на самом деле сопоставление зависит от нескольких разных вещей, и да, обратный DNS является одним из них - и он предпочтительнее собственного имени хоста машины!

Однако это имя (обычно) применяется только во время создания сертификата. Вы на самом деле неправильно используете node_name переменная - должна быть установлена ​​одна из «cert» или «facter». В fqdn параметр также устарел.

Что ты фактически хочу сделать это установить certname параметр на клиенте на имя узла, которое вы хотите использовать, а затем установите node_name к cert (или просто оставьте это, так как cert по умолчанию). Это возьмет имя узла из CN сертификата, который представляет клиент, и certname Параметр гарантирует, что он установлен на что-то разумное, а не на то, что фактор решит придумать самостоятельно. К сожалению, поскольку у вас уже были созданы "неправильные" сертификаты, вам необходимо восстановить эти сертификаты (rm -rf /var/lib/puppet/ssl на клиенте и повторно запустите Puppet) после того, как вы настроите конфигурацию, чтобы нужные сертификаты были созданы и использованы.

Если все это звучит немного сложно, вы правы - это так. Добро пожаловать в Марионетку.

Кажется, мне повезло (хотя есть еще несколько тестовых примеров, которые я хочу увидеть) в редактировании /etc/hosts чтобы указать желаемый fqdn под 127.0.0.1 в качестве первого варианта. Похоже, он правильно это обнаруживает / передает факты. Хотя кажется, что мне все еще нужно создать узел с именем office.mydomain.com наследует нужный мне узел.