Мы используем марионеточную версию 2.7.11 на клиенте debian с включенным автозапуском (START=yes
в /etc/default/puppet
). Подключаемся к puppetmaster с помощью сертификата с FQDN (dummyclient.work-network.pri
) и все работает нормально. Измененный /etc/default/puppet
например, файл отправляется нашему клиенту.
Проблема в следующем: после перезагрузки мы видим новый запрос сертификата от dummyclient
которую наш кукловод считает совершенно другой машиной. Одна из причин этого, по-видимому, заключается в том, что мы используем DHCP для имен наших клиентов и IP-адресов, и сеть еще не полностью готова, когда puppet-agent
запущен. (В нашем системном журнале puppet-agent
начато до NetworkManager
предоставляет информацию о сервере имен и доменном имени.) В качестве дополнительного доказательства hostname -f
также пусто во время загрузки (тогда как hostname -s
дает правильный ответ).
Очевидно, запущенный марионеточный процесс никогда не обновляет эту информацию независимо от того, как долго работает система. (При запуске марионеток, запускаемых вручную, используется полное доменное имя.)
Можно ли отложить запуск марионетки по времени или, в качестве альтернативы, запустить перезапуск марионетки при изменении сетевой информации. (Например, когда клиент был запущен вообще без подключения к сети.)
Или было бы оптимальным решением просто жестко закодировать полное доменное имя в клиентском /etc/hosts
файл? (Но опять же, это должно быть работой нашего DHCP-сервера, не так ли?)
Вполне возможно изменить порядок, в котором службы запускаются при загрузке. Видеть www.debian.org для получения информации о том, как работает уровень запуска и как изменить порядок, в котором запускаются сценарии запуска.
Если вы хотите перезапускать марионетку каждый раз, когда вы получаете новую аренду dhcp, вы можете добавить задание cron, которое периодически проверяет наличие новой аренды dhcp в /var/lib/dhcp.leases и выполняет перезапуск при изменении.