
Me dieron la tarea de implementar el script hiera puppet para administrar sites_enabled para nginx.
Aquí está mi guión de títeres:
común.yaml
---
classes:
- nginx
nginx:
enabled:
abc.com
xyz.com
disabled:
test.com
test2.com
inicio.pp
class nginx{
create_resources("site_enabled", hiera("nginx"), {})
}
define site_enabled($name){
file { '/etc/nginx/sites_enabled/${name}':
ensure => 'link',
target => '/etc/nginx/site_available/${name}',
}
}
Pero recibí el error cuando se ejecutó el títere:
err: No se pudo recuperar el catálogo del servidor remoto: Error 400 en el SERVIDOR: no se puede convertir una cadena en un entero en /etc/puppet/modules/nginx/manifests/init.pp:7 en el nodo XX
Cuando intenté consultar hiera a través de la línea de comandos:
$ hiera nginx
{"habilitado"=>["abc.com", "xyz.com"]}
Sé que me he equivocado en alguna parte. Por favor corríjame. No entiendo mucho cómo hiera consulta y procesa con datos de matriz. Por favor, indíqueme algún documento útil si es posible.
Muchas gracias.
Respuesta1
Tus preguntas son muy similares aProblemas al crear hashes de Hiera para create_resources, que tiene una respuesta. Proporcionaré un resumen aquí.
De acuerdo con ladocumentación para create_resources, el hash debe tener el formato {title => {parameters} }
. Debes editar los datos de tu hiera para configurar los parámetros. Como no hay ninguno, creo que podría verse así:
común.yaml
---
classes:
- nginx
nginx::enabled:
abc.com: {}
xyz.com: {}
nginx::disabled:
test.com: {}
test2.com: {}
A continuación, debe cargar los datos correctos de hiera. Quieres cargar nginx::enabled
, no todosnginx
inicio.pp
class nginx{
create_resources("site_enabled", hiera("nginx::enabled"))
}
define site_enabled($name){
file { '/etc/nginx/sites_enabled/${name}':
ensure => 'link',
target => '/etc/nginx/site_available/${name}',
}
}
Respuesta2
Gracias Sciunus por tu rápida respuesta.
¿Puedo hacer esta pregunta? Me gustaría que mis datos yaml siguieran este tipo de formato:
nginx:
enabled: abc.com xyz.com disabled: test.com test2.com
NO quiero hacer el formato así:
nginx::habilitado:
abc.com: {} xyz.com: {}
nginx::deshabilitado:
test.com: {} test2.com: {}
¿Cómo puedo hacer que el guión de mi marioneta funcione como se esperaba? También leí el documento de Hiera y, como sé, también se admiten tres tipos de datos de búsqueda: hiera, hiera_hash y hiera_array. pero no pude hacerlo funcionar como esperaba siguiendo mi formato de archivo yaml anterior
Lo siento porque soy muy nuevo con hiera.
Gracias de antemano.