AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 465988
Accepted
theillien
theillien
Asked: 2013-01-11 15:05:56 +0800 CST2013-01-11 15:05:56 +0800 CST 2013-01-11 15:05:56 +0800 CST

测试清单时出现 Puppet 错误

  • 772

前缀:我搜索了这个,但事实上有很多事情会导致这个问题,我一直无法找到解决这个特殊情况的方法。

我有一个人偶大师(3.0.2-1;RHEL6)和 /etc/puppet/manifests/site.pp 文件包含以下内容:

import 'nodes/nodes.pp'
$puppetserver = 'puppet.example.dom'

自然地,服务器域不是正在使用的域,而是已更改以保护无辜者。

nodes/nodes.pp 文件包含:

node 'agent1.example.dom' {
    include users,
}

用户类在 /etc/puppet/modules/users 下。清单/init.pp 文件包含:

class users {
    group { 'admins':
        ensure => 'present',
        gid    => '501',
    }
    user { 'user1':
        ensure           => 'present',
        uid              => '10000',
        gid              => '501',
        home             => '/home/user1',
        password_max_age => '60',
        password_min_age => '1',
        shell            => '/bin/bash',
    }
}

如果我从 nodes.pp 文件中删除“include users”行,将应用目录:

Info: Retrieving plugin
Info: Caching catalog for agent1.example.dom
Info: Applying configuration version '1357858753'
Notice: Finished catalog run in 0.02 seconds

但是,当我包含它时,会出现以下错误:

[root@agent1 ~]# puppet agent --test --noop
Info: Retrieving plugin
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not 
parse for environment production: Syntax error at '}' at 
/etc/puppet/manifests/nodes/nodes.pp:3 on node agent1.example.dom
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

这让我觉得我在 init.pp 文件中有一个语法错误,但我不知道它会是什么。也许我没有正确配置,或者我错误地链接了各个部分?

我试过在 nodes.pp 文件中不使用逗号,也尝试过使用逗号。我也尝试过在用户 init.pp 文件的最后一行不带逗号以及带逗号。我试过在组定义和用户定义之间添加一个空行。不管我做了什么小改动,我都会得到相同的结果。

我也试过将节点定义直接放入 site.pp 文件中,但出现了同样的错误。只是来自与以前不同的位置(site.pp 与 nodes/nodes.pp)。

已使用从 agent1 到 puppet master 上的端口 8140 的 telnet 验证了与服务器的连接。

有任何想法吗?代理也是 v3.0.2-1,但是是 RHEL5。我还没有测试过 RHEL6 代理。

编辑:我使用 --debug 选项运行了测试。输出在这里: http: //pastebin.com/zNs5DvCD

编辑 2:在尝试之前我没有声明类/模块。我这样做了puppet apply /etc/puppet/modules/users/manifests/users.pp(在更改文件名之后)。现在这给了我以下错误:

[root@agent1 puppet]# puppet agent --test --noop
Info: Retrieving plugin
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not 
find class users for agent1 on node agent1
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

所以,有些事情发生了变化。语法错误没有了,但是找不到类。

linux
  • 3 3 个回答
  • 15152 Views

3 个回答

  • Voted
  1. Best Answer
    theillien
    2013-01-15T16:20:25+08:002013-01-15T16:20:25+08:00

    我按照 Sirex 在聊天中的建议将其发布在http://ask.puppetlabs.com上。有人指出,我已将文件模块清单重命名为 users.pp,但根据 Puppet 内置的自动加载类和子类,它应该是 init.pp。

    • 1
  2. Sirex
    2013-01-11T15:25:16+08:002013-01-11T15:25:16+08:00

    去掉,后面include users的——那是我唯一能用眼睛看到的。

    ensure => present你也应该可以一起去

    尝试人偶解析器验证 .pp

    尝试木偶皮棉

    • 0
  3. Ger Apeldoorn
    2013-01-11T22:38:39+08:002013-01-11T22:38:39+08:00

    首先,您必须将该类重命名回 init.pp,否则 Puppet 将无法找到它。

    其次,使用定义类的文件运行 puppet apply什么都不做。如果你想使用 puppet apply 来测试你的类,你可以把它放在 tests/init.pp

    include users
    

    然后,您可以使用以下方法测试该类:

    puppet apply modules/users/tests/init.pp
    

    第三,include 语句 (nodes.pp) 后面的 , 需要去掉。

    亲切的问候,德国。

    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve