TLDR 版本:在正常使用 fileserver.conf 的情况下,我如何构建一个实际可用的 puppet URL?
.
我正在尝试开始使用 Puppet 和一些虚拟实例。对于第一个任务,我正在尝试使用文件类型分发一个 authorized_keys 文件。是的,它可以使用ssh 授权密钥类型来完成,但现在这是关于文件分发,对吗?
该服务维基文件意味着我要构建的路径。首先,这是 puppetmasterd 知道的:
$ grep -B 1 path /etc/puppet/fileserver.conf
[files]
path /etc/puppet
Run Code Online (Sandbox Code Playgroud)
其次,我创建了一个文件,/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':}
Run Code Online (Sandbox Code Playgroud)
当我直接运行文件时,它以以下方式失败:
$ 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
Run Code Online (Sandbox Code Playgroud)
我已经尝试了多个版本的 puppet 源链接。例如:
puppet:///modules/ssh/authorized_keys
puppet:///authorized_keys
Run Code Online (Sandbox Code Playgroud)
这是authorized_keys 文件实际所在的位置:
$ ls -l /etc/puppet/modules/ssh/files/authorized_keys
-rw------- 1 root root 796 Jan 6 23:30 authorized_keys
Run Code Online (Sandbox Code Playgroud)
“init.pp”和“files/*”的这种模式似乎与Advanced Puppet Pattern wiki条目相匹配。
为了完整起见,这是我的木偶版本。
$ puppet --version
2.7.18
Run Code Online (Sandbox Code Playgroud)
为了表明我不是在做“解决我的简单问题”或“做我的家庭作业”的事情,我一直在努力寻找这个基本问题的答案。我在上面包含了参考来源的链接,我也看过其他 答案。我见过证书问题(1 , 2)的失败,但这是本地的。令人讨厌的是,这看起来非常接近,但很难变成 Vagrant,尽管有一个答案是谈论一个[modules]
部分而不是一个[files]
部分,这在 wiki 中不存在。这是最近的“官方邮件列表”主题,但我不知道我做错了什么。
确保在 master 上的 puppet.conf 中将类似的内容设置为模块的路径
modulepath = /etc/puppet/modules
Run Code Online (Sandbox Code Playgroud)
如果你然后做类似的事情
source => "puppet:///modules/ssh/authorized_keys",
Run Code Online (Sandbox Code Playgroud)
如果将在以下位置查找文件
/etc/puppet/modules/ssh/files/authorized_keys
Run Code Online (Sandbox Code Playgroud)
编辑:
顺便说一句,您正在将文件与模块混合在一起。它们是两个完全不同的东西。一般来说,现在每个人都使用模块并且从不接触[文件],因为它太混乱了。
归档时间: |
|
查看次数: |
7710 次 |
最近记录: |