Primeiramente, quero agradecer ao jscott, Fredi, user378016 e coderanger por todas as respostas.
Para responder minha própria pergunta
- For CF-Engine this isn't an issue as every node can be configured to run as a server and the runs will continue if the server isn't available.
Tudo isso está bem documentado no site do CF-Engine. Um exemplo pode ser encontrado aqui: link
- For Puppet you have a choice of Master/Masterless modes and their pro's and cons.
O Puppet tem uma variedade de modos e, como Fredi indicou, o modo é um ou o outro. No entanto, depois de fazer mais escavações, o Puppet é muito flexível e possui boas características que podem ser suportadas para o modo master e masterless.
- For Chef the initial run requires the master server to fetch the policy but after that any run will continue with that current policy if the master isn't available.
Portanto, isso não estava correto, quando a execução é no modo de servidor (não usando chef-solo) uma execução requer uma conexão com o mestre para cada execução. Como já foi mencionado, há maneiras de se fazer um cache que tenha algum potencial interessante e talvez valha a pena investigar mais.
- For Salt if the master server goes down then configuration is not enforced as all actions are done on the master
Então, graças a user378016 para confirmação, eu acho que a resposta fornecida não responde muito bem (permalink: link )
- For Ansible (like salt) if the master server goes down then configurations are no longer enforced, as again all actions are done by the master servers
So Ansible é complicado (novamente graças a Fredi por sua resposta). Dá o strong benefício de ter apenas que instalar o software Ansible em um servidor. Os playbooks armazenados neste "master" não são necessariamente executados no master, mas podem ser aplicados em outros via SSH. Isso, é claro, requer que todas essas caixas que você deseja configurar sejam acessadas via SSH e atendam a certas condições prévias (como descrito em um playbook). Em certos casos nem sempre é desejável.
Edit: Eu deveria adicionar Ansible pode ser executado de uma maneira que é semelhante ao fantoche masterless, chef-solo, instalando o Ansible no nó a ser gerenciado e fazendo com que ele extraia a configuração de algum lugar como git e depois aplicar a configuração localmente.
Para aqueles que estão interessados na direção que estou indo em recomendar CF-Engine, Chef ou Puppet. Embora Ansible e Salt sejam interessantes, para meu caso de usuário, não é a melhor solução, já que preciso garantir que as políticas sejam aplicadas, independentemente de boas métricas de relatório. A confiança de que o SSH está sempre disponível não é realmente uma opção. (e sim, enquanto nós poderíamos instalar os componentes do servidor em cada caixa ou um agendador de algum tipo para forçar uma configuração, isso parece contra-intuitivo para a sua arquitetura original para começar).
Todos destes produtos são muito bons e têm diferentes pontos strongs e fracos, neste caso senti que o Ansible e o Salt não são adequados não apenas pela razão acima, mas também por várias outras razões. bem.