O que você deve mirar é:
-
Tenha uma maneira automatizada de criar / reconstruir suas máquinas
-
Use isso para criar um ambiente de teste idêntico (geralmente VMs)
-
Tenha um conjunto automatizado de testes que garanta que uma máquina esteja fazendo o que deveria estar fazendo
-
Execute esse teste automatizado no ambiente de teste antes e depois dos upgrades e, em seguida, novamente antes e depois das atualizações do ambiente real.
Isso tudo depende de ser capaz de construir suas máquinas de forma rápida e automática, que é onde entram os fantoches / chefs e similares. Usamos vagrant & virtualbox para o ambiente de teste, que também permite escrever com segurança novo código de fantoche / chef e testá-lo também.
Você sabe quando sua automação é "suficiente" quando seus testes passam por uma nova máquina que anteriormente era uma instalação nova, de preferência sem intervenção do usuário.
Ah, e para sistemas críticos, use um par de failover e atualize primeiro o nó passivo (em seguida, o failover e, se os testes forem aprovados, atualize o nó anteriormente ativo).