我正在努力使这个工作,不明白我要去哪里错了,有人请指导我如何纠正?
基本上我想在我的nodes.pp中获得一个数组,然后我的模板文件通过循环遍历它并写入每个元素的一行:
nodes.pp:
node test{ net::addr { 'routing': $routes = { route1 => { address => '172.29.54.70', netmask => '255.255.255.0', gateway => '172.29.54.65', dev => 'eth0', }, route2 => { address => '192.168.1.3', netmask => '255.255.255.0', gateway => '192.168.1.1', dev => 'eth3', }, } } }
当我运行木偶客户端时,我不断收到以下内容:
err:无法从远程服务器检索目录:SERVER上的错误400:无法parsing环境生成:“=”处出现语法错误; 在节点test.myincorp.net上的/ etc / puppet / manifests / nodes / test.pp:3处预期'}'
addr.pp
define net::addr ( $address='', $netmask='', $gateway='', $dev='', ) { file { "route-${name}": ensure => 'present', mode => '0644', owner => 'root', group => 'root', path => "/etc/sysconfig/network-scripts/route-${name}", content => template('network/addr.erb'), } }
模板:addr.erb:
<% routes.each do |route| -%> <%= route['address'] %> <%= route['netmask'] %> <%= route['gateway'] %> <%= route['dev'] %> <% end -%> <% end -%> <% end -%>
有人可以帮我解决以上问题吗?
谢谢丹
看起来你打算在一个路由名称中将一组路由传递给net :: addr,但是你已经将它定义为每个路由的4个键,而不是路由数组。 尝试以下,看看它是否工作得更好。
node test{ net::addr { 'routing': routes => { route1 => { address => '172.29.54.70', netmask => '255.255.255.0', gateway => '172.29.54.65', dev => 'eth0', }, route2 => { address => '192.168.1.3', netmask => '255.255.255.0', gateway => '192.168.1.1', dev => 'eth3', }, } } }
和
define net::addr ( $routes={}, ) { file { "route-${name}": ensure => 'present', mode => '0644', owner => 'root', group => 'root', path => "/etc/sysconfig/network-scripts/route-${name}", content => template('network/addr.erb'), } }
编辑:固定错字,填充通过编辑字符限制获取