Моя компания требует, чтобы я реализовал время подписи в ntpd с помощью autokey. Одним из требований для работы autokey является создание ключей на каждом хосте. Все клиенты входят в одну группу, поэтому все они используют один и тот же пароль. Я бы хотел, чтобы вам не приходилось вручную генерировать ключ на каждом хосте, если это возможно. Есть ли способ для данного типа файла выполнить команду, если марионетка обнаруживает, что она не существует? Или есть другие альтернативы, которые я могу использовать для управления ключами через марионетку?
В Puppet для выполнения команды используйте exec
ресурс. Чтобы ваша команда выполнялась только в том случае, если конкретный файл не существует, укажите creates
вариант.
Например:
exec { "create_needed_directory":
command => "/bin/mkdir -p /tmp/needed/directory",
creates => "/tmp/needed/directory"
}
Если вам нужно выполнить более сложную проверку, вы можете использовать onlyif
вариант:
exec { "run_account_purger":
command => "/usr/local/sbin/account_purger",
onlyif => "grep -c old_account /etc/passwd",
}
Оба примера взяты из МарионеткаКухняКнига.
Честно говоря, я понятия не имею, лучший ли это способ сгенерировать ключи для NTP. Вы также можете сгенерировать все ключи на одном компьютере, поместить их в марионеточное репо и распространить их через file
ресурс. Это может быть немного безопаснее, потому что таким образом вам не нужно раскрывать пароль.