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

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

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

为了表明我没有做“解决我的简单问题”或“做我的家庭作业”的事情,我一直在努力寻找这个基本问题的答案。我在上面附上了参考资料的链接,我查看了其他 答案我也遇到过证书问题导致的失败(12),但这是本地的。令人恼火的是,这看起来很接近,但很难转变为 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默认情况下)。

检查日志,但文件上的模式更改可能会起作用。

相关内容