使用带有 hiera 数据源的 puppet 主机资源

使用带有 hiera 数据源的 puppet 主机资源

我正在尝试/etc/hosts使用希拉作为数据源,但我当前的实现需要数据重复,因为我只能传递字符串数组$name作为主持人资源。

有什么方法可以避免这种数据重复吗?或者是否可以使用模板但保留对/etc/hosts文件进行本地修改的能力?

class hosts ($hosts = hiera("hosts"), $hostsdefs = hiera("hostsdefs"))  { 

  define hostentry( ) { 
    host{ $name: ip => $hostsdefs[$name][ipaddress], 
                 host_aliases => $hostsdefs[$name][host_aliases]  } 
  } 

  hostentry{ $hosts: } 
} 

hiera 的 YAML 数据:

---- 
hosts: 
  - host1.example.com 
  - host2.example.com 
hostsdefs: 
  host1.example.com: 
    ipaddress: 10.0.0.1 
    host_aliases: host1 
 host2.example.com: 
    ipaddress: 10.0.0.2 
    host_aliases: host2 

答案1

我能够使用create_resource函数找到以下解决方案

class hosts ($hosts = hiera_hash("hosts"))  {
  create_resources( 'host', $hosts )
}

它需要对我的原始数据进行轻微的修改(将哈希键更改为ip匹配资源参数):

---- 
hosts: 
  host1.example.com: 
    ip: 10.0.0.1 
    host_aliases: host1 
 host2.example.com: 
    ip: 10.0.0.2 
    host_aliases: host2 

相关内容