¿Administrar habilitar - deshabilitar el sitio nginx por Hiera Puppet?

¿Administrar habilitar - deshabilitar el sitio nginx por Hiera Puppet?

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.

información relacionada