Использование puppet для управления сертификатами ntpd
Моя компания требует, чтобы я внедрил подписанное время в ntpd с помощью autokey. Одним из требований для работы autokey является генерация ключей на каждом хосте. Все клиенты входят в одну группу, поэтому все они используют один и тот же пароль. Я бы не хотел вручную генерировать ключ на каждом хосте, если это возможно. Есть ли способ для типа файла выполнить команду, если марионетка обнаружит, что она не существует? Или есть какие-то другие альтернативы, которые я могу использовать для управления ключами через марионетку?
1 ответ
В 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",
}
Оба примера были взяты из PuppetCookBook.
Если честно, я понятия не имею, лучший ли это способ генерации ключей для NTP. Вы также можете сгенерировать все ключи на одном компьютере, поместить их в репозиторий кукол и распространять через file
ресурс. Это может быть немного более безопасно, потому что таким образом вам не нужно раскрывать пароль.