O fantoche é muito fácil de configurar. Você não precisa fazer quase nada, e um cliente pode rodar autonomamente. Deixe-me apenas dar um exemplo. Digamos que você tenha um arquivo chamado config.pp
com as seguintes linhas:
package { 'apache2': ensure => installed }
service { 'apache2':
ensure => running,
enable => true,
require => Package['apache2'],
}
user { 'bob':
ensure => present,
uid => 1000,
gid => 'bob',
require => Group['bob'],
}
group { 'bob':
ensure => present,
gid => 1000,
}
Se você executar puppet apply config.pp
, ele garantirá que o pacote apache2 esteja instalado, que o serviço esteja em execução e ativado para iniciar ao inicializar e que o usuário bob seja criado com o grupo bob.
Isso é tudo - instale o cliente de marionetes, digite isso nesse arquivo e execute um comando. Você pode agendar isso no crontab se quiser garantir que a configuração seja mantida sob controle, sem mestre. Uma vez eu instalei 10 servidores ganeti - o que envolve a configuração de vários pacotes e configurações, com pelo menos uma reinicialização no meio do caminho - muito parecido com isso.
O Puppet consome alguma memória - 500 MB é um pouco barato, mas se você for executá-lo principalmente para instalar coisas, isso deve ser suficiente. Eu mantenho meus próprios servidores a 1 GB, pelo menos, para garantir que os fantoches não causem problemas aos serviços em execução no servidor.
Além disso, o Puppet é definitivamente declarativo, embora você precise aumentá-lo um pouco com os scripts a serem executados ou com o código Ruby para ensinar novos truques. Para as suas necessidades, parece improvável que você tenha que recorrer a isso.