Puppet定义的资源和hiera json

Puppet定义的资源和hiera json,puppet,hiera,Puppet,Hiera,试着把希拉和木偶一起使用。我想知道我怎样才能把这样的东西移到希拉身上: vagrant::box { 'dev.local': sshport => '2223', ip => '10.69.69.101' } vagrant::box { 'it.local': sshport => '2224', ip => '10.69.69.102' } 定

试着把希拉和木偶一起使用。我想知道我怎样才能把这样的东西移到希拉身上:

  vagrant::box { 'dev.local':
    sshport       => '2223',
    ip            => '10.69.69.101'
  } 

  vagrant::box { 'it.local':
    sshport       => '2224',
    ip            => '10.69.69.102'
  } 
定义:

define apache::namevirtualhost {
  $addr_port = $name

  # Template uses: $addr_port
  concat::fragment { "NameVirtualHost ${addr_port}":
    target  => $apache::ports_file,
    content => template('apache/namevirtualhost.erb'),
  }
}
然后在我的super_node.pp中:

apache::namevirtualhost { '*:80': }
$namevirtualhost = hiera("apache::namevirtualhost")
apache::namevirtualhost { $namevirtualhost : }
如何将“*:80”移动到hiera json文件?类似这样的东西(似乎不起作用):

同样的问题如果我多次包含定义,我如何将配置移动到hiera:

  vagrant::box { 'dev.local':
    sshport       => '2223',
    ip            => '10.69.69.101'
  } 

  vagrant::box { 'it.local':
    sshport       => '2224',
    ip            => '10.69.69.102'
  } 

只需在清单中使用hiera函数,因此在super_node.pp中:

apache::namevirtualhost { '*:80': }
$namevirtualhost = hiera("apache::namevirtualhost")
apache::namevirtualhost { $namevirtualhost : }
同样适用于您的箱子:

  vagrant::box { 'dev.local':
    sshport       => hiera("dev_local_sshport"),
    ip            => hiera("dev_local_ip"),
  }
首先,您应该通过键入

hiera "apache::namevirtualhost"

从命令行

你测试了你的答案吗?:你建议的“apache::namevirtualhost{hiera(“apache::namevirtualhost”):}”给了我“错误:无法为环境产品解析:语法错误在“:”;应为“}”对不起,但实际上我无法检查语法,可能puppet不喜欢
资源{foo():}
语法。但是hiera调用是打印出来的,并且将像命令行
HieraVariableName
那样工作。