【问题标题】:Why is Puppet parser failing in some cases but working for others which are identical?为什么 Puppet 解析器在某些情况下失败,但在其他相同的情况下工作?
【发布时间】:2019-02-25 11:32:07
【问题描述】:

所以,第一段测试清单代码可以使用“parser validate”并成功验证:

$display = @("END")
Family ${facts['os']['name']}
Name ${facts['os']['family']}
Family ${facts['os']['name']}
Version ${facts['os']['release']['full']}
END

notify { $display : }

但是,下一段清单代码失败并出现以下错误:

Error: Could not parse for environment production: Syntax error at '[' 
(file: /home/vagrant/puppet/facts.pp, line: 4, column: 21)

此清单未通过上述错误验证:

$display = @("END")
Family ${facts['os']['name']}
Name ${facts['os']['family']}
Family ${facts['os']['family']}
Version ${facts['os']['release']['full']}
END

notify { $display : }

据我所知,既然这都是在一个变量中,只要事实的语法是正确的,应该没有问题。 “Family”、“Version”、“Name”字符串都不应该有所作为。我已经尝试了这些行的任意数量的不同组合,并看到了看起来像是非确定性行为的东西。例如,我无法弄清楚为什么有时它会验证,有时则不会。

我真的很困惑这里使用了什么神秘的验证逻辑。

另一个例子(这个工作和验证),唯一的变化是改变每个测试行的开始,事实部分没有改变。

$display = @("END")
Test ${facts['os']['name']}
Test ${facts['os']['family']}
Test ${facts['os']['family']}
Test ${facts['os']['release']['full']}
END

notify { $display : }

如果这很重要,这是在 VirtualBox vm (Centos 7) 内的 mac 上运行的。

【问题讨论】:

  • 无论如何,我无法使用 Puppet 5.5.3 重现此内容。您能否确认您向我们提供了用于在“行:4,列:21”处生成语法错误的文件的确切内容?
  • 刚出的Puppet 6我也试过了,都不错
  • @AlexHarvey 我可以在 5.5.6 上重现这个,它还没有绑定到 PE 版本(这就是为什么我猜你在 5.5.3 上测试,因为它是 2018.1.4)。但是,如果它不在这两个版本中,那么这可能是解析器中的回归,它被无意引入然后修复。
  • 运行它的操作系统无关紧要,但 Puppet 的版本可能会起作用。如果相同版本的 Puppet,配置相同,有时接受有时拒绝相同的代码,那么很可能是代码上下文中的某些差异造成了差异。
  • 好吧,我现在确实重现了它,到目前为止,我在所有版本的 Puppet >= 5 中都找到了它,包括 6。奇怪的是,如果代码被包装在一个类中,它就不会发生。

标签: linux validation parsing puppet


【解决方案1】:

我已经确认这是一个错误并创建了一个错误报告PUP-9163。错误报告中的更多信息。

建议的解决方法是:

木偶 6

$display = @("END")
${getvar("facts.os.family")}
END

木偶 4、5

$display = @("END")
${($facts['os']['family'])}
END

感谢 Henrik Lindberg 提供的解决方法。

对此的修复已合并到 here 中,它应该会出现在下一个 Puppet 5/6 版本中。

【讨论】:

    猜你喜欢
    • 2018-05-17
    • 2019-12-27
    • 1970-01-01
    • 2010-10-12
    • 2014-06-13
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多