Моя компания требует, чтобы я реализовал подписанное время в ntpd с автоключом. Одно из требований для автоключа к работе должно генерировать, включает каждый хост. Все клиенты являются частью той же группы, таким образом, они все используют тот же пароль. Я хотел бы не должным быть вручную генерировать ключ на каждом хосте, если это возможно. Существует ли путь к типу файла для выполнения команды, если марионетка обнаруживает, что это не существует? Или есть ли некоторые другие альтернативы, которые я могу использовать для руководящих ключей через марионетку?
В марионетке, чтобы выполнить команду, используйте ресурс exec
. Чтобы убедиться, что ваша команда будет выполнена только в том случае, если конкретного файла не существует, укажите опцию create
.
Например:
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
. Это может быть немного более безопасно, потому что таким образом вам не нужно будет раскрывать пароль.