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

Как сковать кукловодов

У меня есть сервер Puppetmaster A и сервер B, который является клиентом Puppet для A. Я хотел бы настроить сервер B в качестве самого Puppetmaster и сделать сервер C клиентом Puppet для сервера B. (Примечание: все серверы являются Debian squeeze .)

PM A <------ PM B <------ C
      client       client

Я пробовал, но когда пытаюсь запустить puppetmaster на сервере B, получаю такую ​​ошибку:

Не удалось подготовиться к выполнению: сертификат, полученный от мастера, не соответствует закрытому ключу агента.

Возможна ли такая цепочка? Если да, то как?

В /etc/puppet.conf вам нужно указать сертификаты для сервера B как сервера, а для сервера B как клиента.

При запуске puppetmasterd на serverB

puppetmasterd --no-daemonize --verbose --certname serverB_server

Чтобы создать сертификат клиента:

puppet cert generate <puppet master's certname> --dns_alt_names=<comma-separated list of DNS names>

затем файл conf

========/etc/puppet.conf===========
[puppetmasterd]
  certname=serverB_server
  ca=true

[puppetd]
  certname=serverB_client
  ca_server=serverA

Настройка, которая казалась простой и работающей на хосте Debian / Ubuntu, заключалась в простой настройке отдельных файлов конфигурации и каталога. Это для вебрика, не уверен, что вам нужно сделать для пассажира.

Создать конфдир для мастера mkdir -p /etc/puppetmaster/

Обновите /etc/default/puppetmaster

--- a/default/puppetmaster
+++ b/default/puppetmaster
@@ -4,4 +4,4 @@
 START=yes

 # Startup options.
-DAEMON_OPTS=""
+DAEMON_OPTS="--confdir=/etc/puppetmaster/"

Создать puppet.conf файл в /etc/puppetmaster/ для мастера.

[main]
logdir=/var/log/puppetmaster
vardir=/var/lib/puppetmaster
ssldir=/var/lib/puppetmaster/ssl
rundir=/var/run/puppetmaster
factpath=$vardir/lib/facter
templatedir=$confdir/templates
# pluginsync = true
certname=submaster.example.org