Como copiar arquivos para todas as máquinas usando o fantoche mestre?

12

Instalei o puppetmaster no ubuntu 11.04 e o puppet em todos os meus clientes. Eu juntei todos os meus clientes de marionetes ao mestre de marionetes. É possível copiar um arquivo para todos esses clientes de marionetes do mestre de marionetes?

Por exemplo:

Eu tenho o arquivo chamado datas.xls na minha área de trabalho (Puppet Master). Como copiar esses arquivos para todos os meus clientes fantoches no seguinte local (/ home / operator1 / Desktop / Backup /)?

Atualizar:

  • Oi, ainda o arquivo não está sendo compartilhado.
  • Como modificar esta linha, puppet:///modules/module_name/datas.xlso arquivo a ser copiado está neste local /etc/puppet/modules/mymodule/manifests/datas.xls?

Erro no cliente: (resolvido)

root@testing:~# puppetd --test 
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class sudo at /etc/puppet/manifests/site.pp:2 on node testing.chn.jd.com
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

Erro 2 no cliente:

root@tme13:~# puppetd --test
err: Could not run Puppet configuration client: Could not retrieve local facts: bad URI(is not URI?): http://169.254.169.254/2008-02-01/meta-data/<HTML><HEAD><TITLE>HTTP access denied</TITLE></HEAD><BODY><img src/

Nova atualização:

Como aplicar este módulo a todos os nós? Tal que o arquivo será copiado para todos os nós.

karthick87
fonte
... mas você já não fez esta pergunta? askubuntu.com/questions/61080/…
fossfreedom
Sim, mas a solução não está mais funcionando.
karthick87
Também não está muito claro, o usuário apenas copiou o conteúdo de alguns sites.
karthick87
Ainda não há uma razão para fazer uma nova pergunta (?), Porque eu copiei aquela de um link que Jorge me deu e ele me disse para c / p;) afaik o que está nessa resposta ainda funciona !?
Rinzwind
aqui está outra referência: serverfault.com/questions/200101/…
Rinzwind

Respostas:

24

Fantoche é um monstro para se entender, então aprender pelo exemplo não é uma coisa ruim. No abaixo, presumo que você esteja usando módulos - diga em um comentário se não está ou se precisa de mais detalhes sobre como montar o módulo.

Digamos que você inicie um novo módulo chamado mymodule. No diretório inicial do fantoche (geralmente /etc/puppet) no mestre de fantoches, você deve criar o diretório de manifestos e arquivos do módulo:

mkdir -p modules/mymodule/manifests
mkdir -p modules/mymodule/files

Em seguida, crie um arquivo nesse diretório chamado init.ppe digite:

class myfile {
    file { '/home/operator1/Desktop/Backup':
        ensure => directory,
        mode => '0755',
        owner => 'operator1',
        group => 'operator1',
    }

    file { "/home/operator1/Desktop/Backup/datas.xls":
        mode => "0644",
        owner => 'operator1',
        group => 'operator1',
        source => 'puppet:///modules/module_name/datas.xls',
    }
}

Em seguida, coloque o datas.xlsarquivo no filesdiretório do módulo - neste exemplo em modules/mymodule/files/. (Observe que também pode haver um templatesdiretório para modelos ).

No manifests/site.pparquivo, você precisa importar o módulo e incluir a classe, fazendo algo como:

import 'mymodule'

node base {
    include myfile
}

node server1 inherits base {}
node server2 inherits base {
    # extra config here
}

Verifique se todos os seus nós herdam da base e isso deve ser tudo o que você precisa fazer. No fantoche 0,25, você pode usar expressões regulares no nome do nó, por exemplo:

node server[0-9] inherits base {}

Deixe-me saber nos comentários se precisar de mais esclarecimentos.

Configurando um cliente para conversar com o mestre de marionetes

No cliente, você precisa fazer:

sudo apt-get install puppet

Depois edite /etc/default/puppete mude START=nopara START=yes.

Edite /etc/puppet/puppet.confe adicione uma linha à [main]seção para dizer onde encontrar o mestre de marionetes:

server=puppet.mydomain.com

Então podemos fazer um teste com sudo puppetd --test. Se você receber erros de chave, poderá ser necessário acessar o servidor mestre de marionetes e assinar a chave do cliente. Para verificar o nome exato, você pode fazer sudo puppetca --liste depois sudo puppetca --sign server1.mydomain.com(ou qualquer que seja o nome do servidor no comando list).

Agora inicie o serviço de marionetes sudo service puppet starte você deve estar ausente. O serviço de marionetes será executado a cada hora; portanto, se você atualizar suas receitas de marionetes, todos os seus clientes também serão atualizados.

Excluindo arquivos

Observo na pergunta original que você queria saber como excluir arquivos. Você editaria o manifests/init.pppara ser

file { "/home/operator1/Desktop/Backup/datas.xls":
    ensure => absent,
}

Outras dicas úteis

Se você está tendo problemas, há algumas coisas que você pode fazer. Em qualquer máquina com fantoche instalado, você pode verificar sua sintaxe executando

puppet --parseonly --ignoreimport myfile.pp

ou verifique todo o lote retirando a --ignoreimportbandeira, embora isso possa levar a algumas mensagens de erro engraçadas que não são realmente erros que encontrei. Você também pode executar o fantoche ao vivo em uma máquina cliente de fantoches, fazendo:

sudo puppetd --test

que mostra várias saídas úteis, com erros e avisos destacados em cores diferentes. Se você quiser ainda mais detalhes, poderá executar:

sudo puppetd --test --debug

mas isso geralmente gera tanta produção que é difícil analisar, apenas faça isso se você já tentou as etapas anteriores e está preso e precisa ver tudo o que está sendo feito.

Observe que isso se baseia no fantoche 0.25.x, que eu uso atualmente no trabalho, e também é a versão no Ubuntu 10.04. O código fantoche na seção principal definitivamente ainda funcionará, mas as versões posteriores do fantoche têm novos sinalizadores que podem ajudar na saída de depuração.

Hamish Downer
fonte
Deixe-me tentar esta solução hoje à noite e informe as atualizações. Muito obrigado :)
karthick87
Como modificar esta linha puppet:///modules/module_name/datas.xlsdo arquivo a ser copiado é sob este local/etc/puppet/modules/mymodule/manifests/datas.xls
karthick87
O arquivo a ser copiado deve ser inserido /etc/puppet/modules/mymodule/files/datas.xls- atualizarei a resposta para que fique mais claro.
amigos estão dizendo sobre
Oke obrigado. como executar os manifestos?
karthick87
Como aplicar este módulo a todos os nós do puppetmaster? Em vez de aplicá-lo a todos os nós com força, executandopuppet agent --test
karthick87