Как прочитать все файлы в Puppet дословно (без разбора, как шаблон)?

984
Mikhail T.

Мне нужно создать кучу ssh_authorized_keysресурсов. Ресурс ожидает, что ее keyатрибут по быть открытым ключом сам по себе - нет никакого способа, чтобы обратиться к файлу, содержащему ключ.

Поскольку ключи очень длинные и поскольку у меня они уже есть в файлах, я бы предпочел, чтобы Puppet прочитал их из файлов, а не цитировал их в манифесте.

Я могу представить и несколько других вариантов использования.

Есть ли уже функция для чтения указанного файла дословно, не пытаясь интерпретировать их, как это template()делает?

С открытыми ключами я могу на самом деле сойти с рук template(), но это сопряжено с накладными расходами на попытку синтаксического анализа. Кроме того, в некоторых других случаях, в зависимости от содержимого файла, синтаксический анализ может на самом деле «провалиться» или, что еще хуже, не дать сбой, но незаметно изменить содержимое ...

0

2 ответа на вопрос

1
Dominic Cleal

Уже есть функция для чтения указанного файла дословно, не пытаясь интерпретировать их как template ()?

file()Функция чтения и возвращает содержимое файла на кукловоде (или там, где КАТАЛОГ компилируется), подобно тому, template()как вы описали.

Назовите его с таким путем, ssh_keys/foo.keyчтобы загрузить файл ssh_keys/files/foo.keyв модульный путь.

Обратите внимание, что эта функция требует Puppet 3.7 или выше для загрузки из пути модуля так же, как template(). До этого он работал только с абсолютными путями, хотя был в каждой основной версии.

0
bgStack15

Используйте тип ресурса fileс определенным атрибутом source. Моя марионеточная среда для управления ключами ssh на самом деле просто импортирует файл ~ / .ssh / authorized_keys в виде файла.

Это работает только тогда, когда у вас есть один доверенный ключ для каждой учетной записи. Ресурс `ssh_trusted_keys` может объединять несколько ключей в файл` authorized_keys` одного и того же пользователя. Например, ваше предложение неприемлемо для `~ root / .ssh / authorized_keys`, если у вас более одного сотрудника на уровне оператора ... Mikhail T. 7 лет назад 0
И что-либо в авторизованном ключе является открытым ключом для каждого пользователя, поэтому допустимо ли публиковать один файл, содержащий все четыре пользовательских ключа корневого уровня? bgStack15 7 лет назад 0
Такая «публикация» говорит: «этим учетным записям разрешено входить как me_». Вроде как: «у всех этих людей есть ключи от моей квартиры». Публикуется ли такое знание в порядке или нет, зависит от учетной записи ... `sshd` не настаивает на том, чтобы файл был нечитаемым для других - до тех пор, пока никто не сможет _модифицировать_ его. Mikhail T. 7 лет назад 0