TLDR 版本:假设 fileserver.conf 正常使用,我该如何构建一个真正能起作用的 puppet URL?
。
我正在尝试使用 Puppet 和一些虚拟实例。对于第一个任务,我尝试使用文件类型。是的,可以用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源链接。例如:
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/*”的模式似乎与高级 Puppet Pattern 维基条目。
为了完整起见,这是我的木偶版本。
$ puppet --version
2.7.18
为了表明我没有做“解决我的简单问题”或“做我的家庭作业”的事情,我一直在努力寻找这个基本问题的答案。我在上面附上了参考资料的链接,我查看了其他 答案我也遇到过证书问题导致的失败(1,2),但这是本地的。令人恼火的是,这看起来很接近,但很难转变为 Vagrant,尽管有一个答案它讨论的是某个[modules]
部分,而不是[files]
wiki 中不存在的某个节。这是最近的“官方邮件列表”主题,但我不知道我做错了什么。
答案1
确保在主服务器上的 puppet.conf 中将类似这样的内容设置为模块的路径
modulepath = /etc/puppet/modules
如果你然后做类似的事情
source => "puppet:///modules/ssh/authorized_keys",
如果将在
/etc/puppet/modules/ssh/files/authorized_keys
编辑:
顺便说一句,你把文件和模块搞混了。它们是完全不同的东西。现在一般人都使用模块,从来不碰[文件],因为它太乱了。
答案2
你的主人有日志吗?
该位置是正确的,但我怀疑600
文件的模式阻止文件服务器读取它,因为 Puppet Master 进程通常以非 root 用户身份运行(puppet
默认情况下)。
检查日志,但文件上的模式更改可能会起作用。