TLDR 版本:在正常使用 fileserver.conf 的情况下,我如何构建一个实际有效的人偶 URL?
.
我正在尝试开始使用 Puppet 和一些虚拟实例。对于第一个任务,我尝试使用文件类型分发 authorized_keys 文件。是的,可以使用ssh 授权密钥类型来完成,但这是关于文件分发的,对吧?
服务 wiki的文件暗示了我应该构建的路径。首先,这里是 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 wiki entry匹配。
为了完整起见,这是我的木偶版本。
$ puppet --version
2.7.18
为了表明我不是在做“解决我的简单问题”或“做我的家庭作业”的事情,我一直在努力寻找这个基本问题的答案。我在上面包含了指向参考资源的链接,并且我也查看了其他 答案。我已经看到失败是证书问题(1、2),但这是本地的。令人讨厌的是,这看起来非常接近,但很难变成 Vagrant,尽管有一个答案谈论的是一个[modules]
部分而不是一个[files]
部分,这在 wiki 中不存在。这是最近的“官方邮件列表”主题,但我不知道我做错了什么。
你的主人有任何日志吗?
该位置是正确的,但我怀疑
600
文件上的模式阻止了文件服务器读取它,因为 puppet master 进程通常以非 root 用户身份运行(puppet
默认情况下)。检查日志,但文件的模式更改可能会解决问题。
确保在你的主人的 puppet.conf 中将这样的东西设置为你的模块的路径
如果你然后做类似的事情
如果将查找文件
编辑:
顺便说一句,你把文件和模块混在一起了。它们是两个完全不同的东西。现在一般人都用模块,从来不碰[文件],因为太乱了。