Версия TL; DR: При нормальном использовании fileserver.conf как мне создать марионеточный URL-адрес, который действительно будет работать?
.
Я пытаюсь начать работу с Puppet и несколькими виртуальными экземплярами. Для первой задачи я пытаюсь распространить файл authorized_keys с помощью тип файла. Да, это можно сделать с помощью Тип авторизованного ключа ssh, но это о распространение файлов пока, правда?
В файловая вики подразумевает пути, которые я должен строить. Во-первых, вот что знает puppetmasterd:
$ grep -B 1 path /etc/puppet/fileserver.conf
[files]
path /etc/puppet
Во-вторых, я создал файл, /etc/puppet/modules/ssh/manifests/init.pp
, который содержит следующее:
$ cat /etc/puppet/modules/ssh/manifests/init.pp
class ssh {
file { "/home/ubuntu/.ssh/authorized_keys":
source => "puppet:///modules/ssh/authorized_keys",
mode => 400,
owner => ubuntu,
group => ubuntu
}
file { "/home/ubuntu/.ssh":
ensure => directory,
mode => 700,
owner => ubuntu,
group => ubuntu
}
notify {"all done.":}
}
# declare class
class {'ssh':}
Когда я запускаю файл напрямую, он не работает следующим образом:
$ puppet apply --verbose /etc/puppet/modules/ssh/manifests/init.pp
info: Applying configuration version '1357516270'
notice: all done.
notice: /Stage[main]/Ssh/Notify[all done.]/message: defined 'message' as 'all done.'
err: /Stage[main]/Ssh/File[/home/ubuntu/.ssh/authorized_keys]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///modules/ssh/authorized_keys at /etc/puppet/modules/ssh/manifests/init.pp:7
notice: Finished catalog run in 0.04 seconds
Я пробовал несколько версий ссылки на источник марионетки. Например:
puppet:///modules/ssh/authorized_keys
puppet:///authorized_keys
Здесь находится файл authorized_keys фактически проживает:
$ ls -l /etc/puppet/modules/ssh/files/authorized_keys
-rw------- 1 root root 796 Jan 6 23:30 authorized_keys
Этот шаблон "init.pp" и "files / *" соответствует Запись вики по Advanced Puppet Pattern.
Вот моя марионеточная версия для полноты.
$ puppet --version
2.7.18
Чтобы показать, что я не занимаюсь вопросами «исправлю свой простой вопрос» или «сделаю домашнее задание», я стараюсь найти ответы на этот основной вопрос. Я включил ссылки выше на справочные источники и просмотрел Другой ответы слишком. Я видел сбои, связанные с проблемами сертификата (1, 2), но это локально. Досадно, это выглядит очень близко, но резко превращается в Бродягухотя есть Ответ это говорит о [modules]
раздел вместо [files]
раздел, которого нет в вики. Вот недавняя ветка "официального списка рассылки", но я не мог понять, что делаю не так.
Убедитесь, что что-то вроде этого установлено в пути ваших модулей в puppet.conf на вашем главном компьютере.
modulepath = /etc/puppet/modules
Если вы сделаете что-то вроде
source => "puppet:///modules/ssh/authorized_keys",
Если искать файл в
/etc/puppet/modules/ssh/files/authorized_keys
РЕДАКТИРОВАТЬ:
вы смешиваете файлы с модулями, кстати ... это две совершенно разные вещи. Обычно в наши дни все используют модули и никогда не трогают [файлы], потому что это слишком беспорядочно.
Есть какие-нибудь логи на вашем хозяине?
Это место правильное, но я подозреваю, что 600
режим файла не позволяет файловому серверу прочитать его, поскольку главный процесс марионетки обычно запускается от имени пользователя без полномочий root (puppet
по умолчанию).
Проверьте журналы, но изменение режима файла, вероятно, поможет.