Gerenciar ativar - desativar site nginx pelo fantoche Hiera?

Gerenciar ativar - desativar site nginx pelo fantoche Hiera?

recebi a tarefa de implementar o script hiera puppet para gerenciar sites_enabled para nginx.

Aqui está meu script de fantoche:

comum.yaml

---
classes:
    - nginx

nginx:
    enabled:
        abc.com
        xyz.com
    disabled:
        test.com
        test2.com

init.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}',
    }
}

Mas recebi o erro quando o fantoche foi executado:

err: Não foi possível recuperar o catálogo do servidor remoto: Erro 400 no SERVER: não é possível converter String em Inteiro em /etc/puppet/modules/nginx/manifests/init.pp:7 no nó XX

Quando tentei consultar hiera via linha de comando:

$ aqui nginx

{"enabled"=>["abc.com", "xyz.com"]}

Eu sei que errei em algum lugar. Por favor, corrija-me. não entendo muito como hiera consulta e processa dados de array. por favor, indique-me algum documento útil, se for possível.

Muito obrigado.

Responder1

Suas perguntas são muito semelhantes àsProblemas ao criar hashes Hiera para create_resources, que tem uma resposta. Vou fornecer uma recapitulação aqui.

De acordo comdocumentação para create_resources, o hash deve estar no formato {title => {parameters} }. Você deve editar seus dados hiera para definir os parâmetros. Como não há nenhum, acho que poderia ser assim:

comum.yaml

---
classes:
    - nginx

nginx::enabled:
    abc.com: {}
    xyz.com: {}
nginx::disabled:
    test.com: {}
    test2.com: {}

Em seguida, você precisa realmente carregar os dados corretos do hiera. Você deseja carregar nginx::enabled, nem todosnginx

init.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}',
    }
}

Responder2

Obrigado Sciunus pela sua resposta rápida.

Posso fazer esta pergunta? eu gostaria de fazer meus dados yaml seguindo este tipo de formato:

nginx:

enabled:
    abc.com
    xyz.com
disabled:
    test.com
    test2.com

NÃO quero fazer o formato assim:

nginx::enabled:

abc.com: {}
xyz.com: {} 

nginx::desativado:

test.com: {}
test2.com: {}

Como posso fazer meu script de marionete funcionar conforme o esperado. Eu também li o documento Hiera, como eu sei, ele também suporta três tipos de dados de pesquisa: hiera, hiera_hash e hiera_array. mas não consegui fazer funcionar como esperado seguindo meu formato de arquivo yaml acima

Desculpe, sou muito novo no hiera.

Agradeço antecipadamente.

informação relacionada