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

Puppet: можно ли «принудительно» указать имя сертификата, когда вы ожидаете перетасовать узлы?

Мы все знаем (хороший пример по SF), что определение имени хоста Puppet может быть ... забавным.

В нашей компании (и я думаю, что мы не одиноки в этом) мы обычно предварительно настраиваем серверы в наших офисах и тестируем их, прежде чем доставить оборудование в удаленный центр обработки данных и установить их в стойку. Конечно, обратный DNS изменится при этом, даже если мы не изменим фактическое имя хоста системы.

Мы медленно разрабатываем нашу марионеточную установку, и я хотел бы быть уверен, что эти шаги не создадут проблем. Моя идея состоит в том, чтобы явно настроить желаемое полное доменное имя системы как certname в puppet.conf во время предоставления сервера (перед самым первым запуском марионетки). Мой процесс будет выглядеть примерно так:

  1. основные o.s. монтаж
  2. базовая конфигурация сети, достаточная для выхода в Интернет и разрешения DNS
  3. установить марионетку и настроить имя сертификата
  4. запустить марионетку и позволить ему управлять всей конфигурацией
  5. тестировать, исправлять проблемы в конфигурации (через марионетку), повторно тестировать и так далее ...
  6. вручную остановить марионетку
  7. настроить новую конфигурацию сети для сети центра обработки данных
  8. переместить машину в DC
  9. включи это
  10. марионетка должна автоматически запускаться и продолжать делать свою работу

Процесс поддерживается путем обнаружения среды в манифестах марионетки (например, на основе подсети, например они делают в Викимедиа) и при необходимости измените конфигурацию (например, resolv.conf содержание, подходящее для каждой сети). Каждый узел certname никогда не изменится за весь жизненный цикл системы.

Есть ли проблема с таким подходом? Можно ли это улучшить?

Я согласен с тем, что принудительное указание имени сертификата упростит задачу. Однако hostname сама команда может вести себя очень непоследовательно, когда дело доходит до определения --fqdn (он разрешает IP для hostname, затем ищет обратное имя этого IP-адреса; все это можно настроить в /etc/hosts конечно).

Если вы настроите имя хоста системы как полное доменное имя, а не только короткое имя, puppet не будет пытаться выполнять какие-либо забавные поиски имени. Он просто будет использовать эту строку как есть, разбивая ее на hostname и domain в первой точке и fqdn быть всем. Это то, что вы также можете рассмотреть.