Я пытаюсь использовать марионетку для копирования файла:
file{ '/root/.ssh/id_rsa' :
source => 'puppet:///modules/certs/.ssh/id_rsa',
}
Разрешения -r-------- 1 root root
.
Если я сбегу chmod +r
в файле мой сценарий работает, но марионетка с указанными выше разрешениями не может скопировать файл.
Ошибка: /Stage[mainpting/Main/Node[default visible/File[/root/.ssh/id_rsa]: не удалось оценить: не удалось получить метаданные файла для марионетки: ///modules/certs/.ssh/id_rsa: Ошибка 500 на СЕРВЕРЕ: Ошибка сервера: в доступе отказано - /etc/puppetlabs/code/environments/production/modules/certs/files/.ssh/id_rsa
Я предположил, что марионетка будет работать от имени пользователя root и, таким образом, сможет скопировать файл. Есть ли способ сделать это без изменения разрешения?
Сообщение об ошибке указывает на то, что вы используете настройку «главный / агент». В такой конфигурации мастер (или сервер) Puppet обычно работает под управлением puppet
пользователь, поскольку это веб-приложение, которое просто предоставляет файлы и каталоги для загрузки.
Только агент Puppet (на клиенте) будет запускаться от имени пользователя root для внесения изменений в конфигурацию операционной системы.
Файл на вашем Мастере Марионетки должен быть доступен для чтения puppet
пользователь, либо сменив владельца:
chown puppet id_rsa
или предоставив группе разрешения на чтение:
chgrp puppet id_rsa
chmod g+r id_rsa
или давая Другой права на чтение, как и с chmod +r
.
Обратите внимание, что существует ограниченный контроль авторизации для доступа к файлу. Любой хост с действующим SSL-ключом / сертификатом Puppet сможет загрузить файл с мастера Puppet, даже если у него не настроен манифест / файл. Это не очень безопасный метод распространения закрытых ключей.