运行Puppet模块

运行Puppet模块,puppet,Puppet,这是一个很糟糕的问题,但我已经为此绞尽脑汁太久了。 我编写了一个自定义脚本,将文件从modulepath文件服务器复制到从属节点上的目标目录。它当前存储在我的主机上,我认为这是合适的(您不想预先分发分发代码,对吗?) 脚本如下: file { 'sim/': path => '/opt/deploy/puppet_test/', ensure => directory, recurse => true, source => "puppet:///

这是一个很糟糕的问题,但我已经为此绞尽脑汁太久了。 我编写了一个自定义脚本,将文件从modulepath文件服务器复制到从属节点上的目标目录。它当前存储在我的主机上,我认为这是合适的(您不想预先分发分发代码,对吗?)

脚本如下:

file { 'sim/':
  path    => '/opt/deploy/puppet_test/',
  ensure  => directory,
  recurse => true,
  source  => "puppet:///modules/sim/sim2/",
  # This source file would be located on the puppet master at
  # /etc/puppetlabs/puppet/modules/sim/files/sim2/ (in Puppet Enterprise)
}
上述内容可能有些多余,因为我无法判断脚本是否正常工作,因为我确实不知道如何运行它。我完全有可能是瞎子,但我打开了24个单独的文档标签,我的沮丧无助于我集中精力。我试着在主节点上使用
sudopuppet代理--test--verbose
,结果执行得很好,但什么都没做。该模块不会显示在仪表板上的类中。我不知道应该运行什么命令来执行此脚本。请派人来帮忙

编辑:将其嵌套在类中有助于推动我前进,但我仍然没有进行实际的复制。查看我的测试脚本的包状态可以发现以下内容:

 on 1 node (master)
arch    —
ensure  purged
epoch   —
error   ok
name    testmod
output  —
provider    —
release —
status  missing
version —

 on 1 node (slave)
arch    —
ensure  absent
epoch   —
name    —
output  —
provider    —
release —
version —

模块本身没有出现在从机上,但我不确定它是否应该出现。它位于主控上,但它声称Sure的值为“已清除”。未在模块中启用清除功能。

资源应为类的一部分。例如:

# /etc/puppetlabs/puppet/modules/sim/manifests/init.pp

class sim {
    file {
        '/opt/deploy/puppet_test/sim': ...
    }
}
然后确保代理清单包含此类

# site.pp
node 'agent.fqdn.here' {
    include sim
}
请注意
文件{'subdir':path=>'/path/to/dir'}
不会执行您可能认为的操作。
path
参数将覆盖资源标题中的子目录,而不是在其前面加上前缀。始终使用完整路径作为标题或
path
参数。在后一种情况下,将标题作为描述:

file { 'resolv-conf': path => '/etc/resolv.dnsmasq' }

我现在已经将它显示在仪表板上的类列表中,并且我已经将它添加到我的从属节点所属的组中。在仪表板上,它说模块包含在节点详细信息中,但它仍然没有将模块或文件复制到从属节点。我已将名称更改为目标路径(“/opt/deploy/puppet_test/”:),并尝试运行runonce以提示刷新,但它仍处于相同的状态。能否运行
puppet代理--test--debug
,并将输出放在某个粘贴服务上?分发问题已通过一些基本脚本解决,因此现在我放弃puppet。我的直觉是删除这个问题,因为我不确定它是否非常有意义,但我很感激在我的问题上帮助我所做的努力,而且它可能会帮助类似的人。谢谢你,菲利克斯。