Gerenciar habilitar - desabilitar o site nginx pelo boneco Hiera?

3

eu tenho a tarefa de implementar o hiera script de marionetes para gerenciar sites_enabled para nginx.

Aqui está meu roteiro de fantoches:

common.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 um fantoche foi executado:

err: Could not retrieve catalog from remote server: Error 400 on SERVER: can't convert String into Integer at /etc/puppet/modules/nginx/manifests/init.pp:7 on node XX

Quando eu tentei consultar hiera via linha de comando:

$ hiera nginx

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

Eu sei que estou errado em algum lugar. Por favor, corrija-me. Eu não entendo muito, como hiera consulta e processo com dados de matriz. por favor, me aponte algum documento útil, se for possível.

Muito obrigado.

    
por Calvin Pham 05.12.2013 / 08:29

2 respostas

3

Suas perguntas são muito semelhantes a Problemas ao criar hashes Hiera para create_resources , que tem uma resposta. Vou dar uma recapitulação aqui.

De acordo com a documentaçã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:

common.yaml

---
classes:
    - nginx

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

Em seguida, você precisa carregar os dados corretos do hiera. Você deseja carregar nginx::enabled , não todos de nginx

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}',
    }
}
    
por 05.12.2013 / 22:23
0

Obrigado Sciunus pela sua resposta rápida.

Posso perguntar por essa 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::disabled:

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

Como posso fazer meu roteiro de fantoche funcionar como esperado? Eu também li documento Hiera, como eu sei, também é suportado três tipos de dados de pesquisa: hiera, hiera_hash e hiera_array. mas eu não poderia fazê-lo funcionar como o meu esperado seguindo o meu formato de arquivo yaml acima

Desculpe por ser muito novo com hiera.

Obrigado em avançado.

    
por 08.12.2013 / 16:36