我现在已经走到了尽头,有人可以帮我理解我在这里做错了什么吗:
我的 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,
}