哈希语法在 Puppet 清单中不起作用

哈希语法在 Puppet 清单中不起作用

我现在已经走到了尽头,有人可以帮我理解我在这里做错了什么吗:

我的 nodes.pp (除了这个定义之外,这个文件中没有其他内容)

node test {
    net::addr { 'routing':
        routes = {
            route1 => {
                address => '192.168.23.14',
                netmask => '255.255.255.0',
                gateway => '192.168.23.1',
                dev     => 'eth0',
            },
            route2 => {
                address => '192.168.1.3',
                netmask => '255.255.255.0',
                gateway => '192.168.1.1',
                dev     => 'eth2',
            },
        }
    }
}

无论我进行什么更改,每次在测试服务器上运行时都会出现此问题,运行会立即终止:

错误:无法从远程服务器检索目录:服务器上的错误 400:无法解析环境生产:节点测试中的 /etc/puppet/manifests/nodes/nodes.pp:3 处‘=’处语法错误;预期为‘}’

第 3 行是我从上面得到的结果:

net::addr {'路由':

我这里漏掉了什么?请帮助我,因为它让我绝望!

谢谢丹

答案1

从我所处的位置来看,第三行是:

routes = {

这里需要右角括号。

答案2

正如已经提到的,您需要将“=”更改为“=>”资源运算符。

调试时会用到以下命令:

puppet parser validate test.pp

这将帮助您发现语法错误。

答案3

您需要一个 => 运算符来定义资源参数:

net::addr { 'routing':
  routes => {
    ...

以这种方式指定参数有点令人困惑且难以阅读。我建议首先将此复杂哈希保存在变量中:

$route_hash = {
    route1 => {
        address => '192.168.23.14',
        netmask => '255.255.255.0',
        gateway => '192.168.23.1',
        dev     => 'eth0',
    },
    route2 => {
        address => '192.168.1.3',
        netmask => '255.255.255.0',
        gateway => '192.168.1.1',
        dev     => 'eth2',
    },
}

net::addr { 'routing':
    routes => $route_hash,
}

相关内容