1

私はこれを機能させるのに苦労していて、どこが間違っているのかわかりません。誰かが私に修正方法を教えてもらえますか?

基本的に、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',
            },
          }
        }
}

puppetクライアントを実行すると、次のようになります。

エラー:リモートサーバーからカタログを取得できませんでした:サーバーでエラー400:環境生成を解析できませんでした:'='での構文エラー。ノード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 -%>

誰かが上記の修正を手伝ってもらえますか?

ありがとうダン

4

1 に答える 1

0

ここでの実際の問題は$routes、リソースの定義での変数()の使用であると思います。を使用する代わりに、リソースの定義で$routes = { ... }キーと値のペアを設定する必要がありますroutes => { ... }

しかし、実際にはまったく別のルートをお勧めします。puppet-networkモジュールを見たことがありますか?静的ルートファイルの作成を自動的に処理するため、この機能を自分で実装する必要はありません。たとえば、puppet-networkは、以下を使用してこれを実装します。

network::route { "eth0":
  address => [ "192.168.2.0", "10.0.0.0", ],
  netmask => [ "255.255.255.0", "255.0.0.0", ],
  gateway => [ "192.168.1.1", "10.0.0.1", ],
}

詳細については、GitHubまたはPuppetForgeをご覧ください。

于 2013-03-04T00:47:14.263 に答える