Onde estou trabalhando no momento, temos que gerenciar a parte Linux do nosso farm de servidores, que é um pouco mais de 300 servidores Linux. Isso inclui principalmente os HP Proliants, seguidos pelo IBM 3850s, alguns blades IBM, VMware ESX e alguns KVM para nossos servidores de gerenciamento interno.
sapateiro
Vimos o sapateiro, mas o problema era que o sapateiro é muito específico do RHEL / Red Hat. Precisamos oferecer suporte a RHEL e SLES, pelo menos, e o Ubuntu é o próximo.
fantoche
Consideramos o fantoche, no entanto, mais tarde decidimos contra, pois depende do Ruby, o que significa que uma atualização do Ruby poderia potencialmente quebrar nosso sistema de gerenciamento.
fio quente
Hotwire é o que usamos (desenvolvido internamente, mas é de código aberto) e o fizemos nos últimos anos. Primeiro, inventa os sistemas que serão construídos, o que significa inventariar o datacenter, rack, hardware, sistema operacional, rede etc. Depois que o sistema é construído, o inventário automático do hotwire mantém o inventário sincronizado, enquanto o cfengine os mantém. A Hotwire conhece o hardware do servidor conversando com os dados SMBIOS / DMI na Bios via python-dmidecode .
Os pontos de bônus são que ele combina o inventário e o processo de compilação em um, portanto, há menos para gerenciar, e o recurso de inventário ao vivo é ótimo, como sabemos se algo não estiver certo.
As desvantagens são que a interface do usuário ainda precisa ser polida, e há bugs aqui e ali, mas o desenvolvimento ainda está quente e os bugs relatados são corrigidos relativamente rápido.
cfengine
Usamos cfengine porque, além disso, e fantoche, não há mais nada. Na verdade, é uma boa ferramenta, mas "boa" apenas em função de quão boas são suas políticas - se você definir políticas perigosas, um pequeno erro poderá causar muitos danos. Por exemplo, por política, não "modificamos" os arquivos, os substituímos ou não. Além disso, todos os arquivos substituídos têm um cabeçalho que faz com que qualquer pessoa que o edite saiba que será substituído na próxima vez em que for executado (é executado via cron de hora em hora).
A configuração e todos os arquivos enviados pelo cfengine aos servidores também são mantidos em um SCM e, usando ganchos pós-confirmação, sempre que possível, verificamos a sintaxe e, se isso falhar, a confirmação é rejeitada. Isso é fácil para aplicativos agradáveis, como o Apache, mas não é tão fácil para a maioria dos aplicativos corporativos.