usando recurso de host de fantoches com fonte de dados hiera

1

Estou tentando implementar a manipulação /etc/hosts do boneco usando hiera como dados fonte, mas a minha implementação atual requer duplicação de dados porque eu poderia passar apenas array de strings como $name para o recurso host .

Existe alguma maneira de evitar essa duplicação de dados? Ou talvez seja possível usar modelos, mas manter a capacidade de ter modificações locais para o arquivo /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: } 
} 

Dados YAML para hiera:

---- 
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 
    
por AlexD 15.08.2011 / 19:34

1 resposta

2

Consegui encontrar a seguinte solução usando create_resource function

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

ele precisa de uma ligeira modificação nos meus dados originais (altere a chave de hash para ip para corresponder ao parâmetro de recurso):

---- 
hosts: 
  host1.example.com: 
    ip: 10.0.0.1 
    host_aliases: host1 
 host2.example.com: 
    ip: 10.0.0.2 
    host_aliases: host2 
    
por 16.08.2011 / 09:57

Tags