O Puppet é um monstro para você entender, então aprender pelo exemplo não é ruim. No abaixo, eu estou supondo que você está usando módulos - por favor, diga em um comentário, se você não é ou se você precisar de mais detalhes sobre como montar o módulo.
Digamos que você inicie um novo módulo chamado mymodule
. No diretório inicial do boneco (geralmente /etc/puppet
) no mestre de bonecos 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.pp
e insira:
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 arquivo datas.xls
no diretório files
do módulo - neste exemplo, em modules/mymodule/files/
. (Observe que também pode haver um diretório templates
para os modelos ).
No arquivo manifests/site.pp
, 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
}
Certifique-se de que todos os seus nós sejam herdados da base e que isso seja tudo o que você precisa fazer. A partir do Puppet 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 você precisar de mais esclarecimentos.
Configurando um cliente para falar com o mestre de marionetes
No cliente, você precisa fazer:
sudo apt-get install puppet
Em seguida, edite /etc/default/puppet
e altere START=no
para START=yes
.
Edite também /etc/puppet/puppet.conf
e adicione uma linha à seção [main]
para informar 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, talvez seja necessário ir para o servidor mestre de marionetes e assinar a chave do cliente. Para verificar o nome exato, você pode fazer sudo puppetca --list
e, em seguida, sudo puppetca --sign server1.mydomain.com
(ou qualquer que seja o nome do servidor no comando de lista).
Agora inicie o serviço de marionetes com sudo service puppet start
e você deve estar ausente. O serviço de marionetes será executado a cada hora, portanto, se você atualizar suas receitas de fantoches, todos os seus clientes também serão atualizados.
Excluindo arquivos
Eu observei na pergunta original que você queria saber como excluir arquivos. Você editaria o manifests/init.pp
para 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 o sinal --ignoreimport
, 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 fantoches ao vivo em uma máquina cliente de fantoche fazendo:
sudo puppetd --test
que mostra vários resultados úteis, com erros e avisos destacados em cores diferentes. Se você quiser mais detalhes, pode executar:
sudo puppetd --test --debug
mas, geralmente, gera uma quantidade tão grande de resultados que é difícil percorrer, por isso só faça isso se já tiver tentado as etapas anteriores e estiver preso e precisar ver tudo sendo feito.
Note que isto é baseado no fantoche 0.25.x que é o que eu uso no trabalho atualmente, 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 depuração do resultado.