我是 Puppet 新手,在使用 Puppet-Labs Apache 模块时遇到了一些问题http://forge.puppetlabs.com/puppetlabs/apache。我将其与 Vagrant 结合使用,作为无服务器设置(如果这改变了您的答案。)
在我的入口点我调用了 apache.pp 类,它看起来像这样:
class {'apache::mod::php':
case $::operatingsystem {
'RedHat', 'Fedora', 'CentOS', 'Scientific', 'SLC', 'Ascendos', 'CloudLinux', 'PSBM', 'OracleLinux', 'OVS', 'OEL': {
}
default: {
$osfamily = $::operatingsystem
}
}
}
但是当我运行 puppet 时出现语法错误:
Error: Could not parse for environment production: Syntax error at '::operatingsystem'; expected '}' at /tmp/vagrant-puppet/manifests/classes/apache.pp:2
我之所以选择这条路线,是因为在之前的调试运行中,我发现 puppet 试图在 centos 机器上使用“apt”。我假设我需要根据 puppet forge 页面上的 puppet labs“类型”信息设置操作系统类型。
对于那些不知道如何使用 vagrant 的人来说,我唯一需要注意的是,*.pp 是从主机系统(在本例中是 Debian)共享的。这也可能是一个原因吗?我不认为是。
如果这个问题很愚蠢,我深表歉意。谢谢。
答案1
您无需以任何方式设置操作系统 - Facter 会处理该问题。facter
在系统上运行以验证其是否正确设置了事实。
你运行的是哪个版本的 Puppet?它似乎在使用时会受阻,$::
因为它是顶部范围的明确规范,在任何最新版本中都应该可以正常工作。