gpt4 book ai didi

puppet - 安装了Puppet 5,并且Puppet代理-t不应用更改,也没有错误

转载 作者:行者123 更新时间:2023-12-01 10:27:51 31 4
gpt4 key购买 nike

我在主服务器和服务器上安装了puppet 5,并从代理安装了设置/签名证书...现在我想尝试运行一个简单的代理...

我关注了同时测试Hiera 5的p官方文档(下面的链接):
https://docs.puppet.com/puppet/5.0/hiera_quick.html

但是当我运行时,代理永远不会应用更改:

# puppet agent -t
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for xxxxxx.xxx.xxx
Info: Applying configuration version '1504530655'
Notice: Applied catalog in 0.04 seconds

在主服务器上,当我运行puppet时,应用/[manifest-location]/manifest.pp可以正常工作。

我的主人puppet.conf:
[main]
server = puppet-master-test.xxx.xxx
dns_alt_names = puppet-master-test.xxx.xxxx
certificate_revocation = false
modulepath = /etc/puppetlabs/code/environments/production/modules

[master]
certname = puppet-master-test.xxx.xxx
vardir = /opt/puppetlabs/server/data/puppetserver
logdir = /var/log/puppetlabs/puppetserver
rundir = /var/run/puppetlabs/puppetserver
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid
codedir = /etc/puppetlabs/code
environment_timeout = unlimited

特工的puppet.conf:
[main]
server = puppet-master-test.xxx.xxx

[master]
certname = puppet-master-test.xxx.xxx

[agent]
environment = production
certname = puppet-client.xxx.xxx
server = puppet-master-test.xxx.xxx

有人可以建议吗?
提前致谢。

编辑:

我创建了一个简单的模块:
#/etc/puppetlabs/code/environments/production/modules/profile/manifests/hiera_test.pp
class profile::test {
file { '/tmp/hiera_test.txt':
ensure => file,
owner => root,
mode => '0755',
}
}

init.pp:
#/etc/puppetlabs/code/environments/production/modules/profile/manifests/init.pp
include profile::test

我在以下位置有一个site.pp:/etc/puppetlabs/code/environments/production/manifests/site.pp
node 'puppet-client.xxx.xxx' {
include profile
}

输出:
#puppet config print modulepath --section master --environment production
/etc/puppetlabs/code/environments/production/modules

#puppet config print manifest --section master --environment production
/etc/puppetlabs/code/environments/production/manifests/site.pp

当我使用主人时:
#puppet apply /etc/puppetlabs/code/environments/production/modules/profile/manifests/init.pp
Notice: Compiled catalog for puppet-master-test.xxx.xxx in environment production in 0.07 seconds
Notice: /Stage[main]/Profile::Test/File[/tmp/hiera_test.txt]/ensure: created
Notice: Applied catalog in 0.11 seconds

但是,puppet agent -t on agent不会在/ tmp下创建文件... / tmp权限为1777,能否让我知道是否需要更多信息?

谢谢。

最佳答案

正如我从评论开头说的那样,如果在给定的目录运行中,代理未尝试将任何资源应用于目标计算机,并且不发出任何诊断,则说明目标计算机已经完全同步与目录一起送达它。该代理会缓存目录(详细信息取决于Puppet版本),因此您可以检查实际包含了哪些资源。有时困扰Puppet站点(尤其是新站点)的问题之一是,代理实际上收到了空目录。这通常归因于母版上设置的相关清单中的缺陷。

重要的是要理解,主服务器从站点清单开始为代理程序环境构建目录(这不一定是puppet apply做到这一点的方式),并且只有通过该过程发现的给定节点声明的类和资源。 ,包括在其目录中。同样重要的是要了解代理和主服务器都执行各种形式的缓存-前者可以在主服务器不可用时强制执行配置,后者可以提高容量和性能。

假设站点清单中的节点块将与该代理配置为用作其证书名的标识符相同的标识符指定为节点名,则清单集(尽管确实存在缺陷)不应成功地为此生成空目录目标节点。您可以考虑在调试时通过添加或切换到默认节点块来取消使用节点名称:

node default {
include profile
}

由于已将主数据库的 environment cache timeout设置为无限制(默认值),因此,如果自启动主数据库以来已修改清单集,则服务器可能仍会提供空目录。您可以手动使主服务器过期,或者更容易地,您可以重新启动主服务器服务。如果愿意,还可以通过将缓存超时设置为0(然后重新启动服务)来禁用环境缓存。

至于清单集中的缺陷,至少存在三个关键问题:
  • Puppet的include函数声明。为此,它可能会导致清单文件被求值,但不应将其解释为对清单进行词法内插,例如C预处理程序的#include指令。它更类似于Python的import命令。
  • 在网站清单之外,清单中除了顶级类别的类或定义的类型定义外,不应该包含任何其他内容。它们尤其不应包含该范围内的类或资源声明。这些清单中的此类声明应仅出现在类或定义的类型定义的内部。声明可以出现在站点清单内的任何范围内,但在这种情况下,它们通常应出现在节点块中。
  • 为了使Puppet查找类和定义的类型定义,它们必须驻留在a correctly located and named file中。

  • 关于(1),您的站点清单包含一个执行 include profile的节点块。这声明类'profile'应该包含在目标节点的目录中,但是不存在此类。 Puppet将在其中查找类定义的清单的内容( production/modules/profile/manifests/init.pp)而是在顶部范围包含一个 profile::test类的声明(请参阅(2))。目录构建器应在缺少请求的类时进行故障转移。它没有这样做,这告诉我要么根本不查看您的节点块(也许节点名称不匹配),要么它正在使用不受此问题困扰的环境的缓存版本首先(但也不会导致包含想要的类)。

    您似乎在 modules/profile/manifests/init.pp中想要的是
    class profile {
    include profile::test
    }

    请注意, include语句出现在类'profile'的定义内,该类又是Puppet将在该特定文件中查找的类的名称。这与您直接使用 puppet apply应用此清单不同。

    或者,您可以完全跳过这个简单的“profile”类,而只是让节点块直接声明“profile::test”,尽管有些人可能会基于风格批评这种方法。

    但这还不是全部。您确实提供了 profile::test类的可行定义,但您将其描述在名称不对应的文件中。木偶无法在 production/modules/profile/manifests/hiera_test.pp中找到它;它必须改为 production/modules/profile/manifests/test.pp(3)。

    关于puppet - 安装了Puppet 5,并且Puppet代理-t不应用更改,也没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46074969/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com