Bem, para o APT em particular, você pode configurar várias tarefas diárias, como atualização. Basta olhar para /etc/cron.daily/apt
para uma lista de variáveis que você pode configurar e verificar a página de manual para apt.conf
para saber como fazer isso. Os mais interessantes para você são estes:
# APT::Periodic::Update-Package-Lists "0";
# - Do "apt-get update" automatically every n-days (0=disable)
#
# APT::Periodic::Download-Upgradeable-Packages "0";
# - Do "apt-get upgrade --download-only" every n-days (0=disable)
#
# APT::Periodic::Download-Upgradeable-Packages-Debdelta "1";
# - Use debdelta-upgrade to download updates if available (0=disable)
#
# APT::Periodic::Unattended-Upgrade "0";
# - Run the "unattended-upgrade" security upgrade script
# every n-days (0=disabled)
# Requires the package "unattended-upgrades" and will write
# a log in /var/log/unattended-upgrades
Quanto à atualização do sistema, use o pacote unattended-upgrades
.
ensure => latest
, ou ensure => version
, assim como controlar números de pinos para várias listas de fontes e pacotes.
E, suponho, um poderia usar uma configuração como esta:
cron { 'upgrade': command => 'apt-get update && apt-get upgrade' }
Agora, você menciona fazer coisas antes de chamar um agente de marionetes. Você quer dizer antes de executar o agente de marionetes pela primeira vez? Se sim, então uma solução como Foreman pode fazer o truque para você.
Aqui, onde gerencio meus hosts virtuais através do Ganeti, temos o fantoche sendo instalado pelo instance-debootstrap da Ganeti. Também temos um pequeno script que usamos para instalar o fantoche em servidores mais antigos.
No final, não é possível usar uma solução automatizada para instalar o Puppet em servidores existentes, a menos que a solução automatizada já tenha sido instalada. Nossa preferência é instalar o boneco primeiro e distribuir qualquer outra coisa através dele.