通过 Puppet 提供文件:“无法评估”

ted*_*r42 5 puppet

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 中不存在。这是最近的“官方邮件列表”主题,但我不知道我做错了什么。

Mik*_*ike 2

确保在 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 次

最近记录:

12 年,8 月 前