Eu tenho mais de 200 computadores que podem fornecer serviços IPMI . Os servidores são fabricados por várias empresas diferentes (SuperMicro, Dell, etc.), e existem 6-7 modelos BMC de cerca de 5 fornecedores diferentes, e cada modelo possui suas próprias idiossincrasias.
Até o momento, configuramos os BMCs usando uma combinação de DHCP e configurando manualmente cada BMC. A configuração manual pode ser feita usando um CD-ROM inicializável, configuração do BIOS (se suportado), do sistema operacional host com um utilitário como ipmitool , freeipmi , etc. ou usando remotamente o ipmitool se pudermos determinar o endereço de rede do dispositivo.
No entanto, essa configuração manual é bastante entediante. Em alguns casos, queremos alterar uma configuração globalmente em todos os BMCs, o que exige que um administrador execute um comando em dezenas de caixas. Como os BMCs são fornecidos por diferentes fornecedores e cada modelo do BMC pode ter suas próprias idiossincrasias, o mesmo comando nem sempre funciona em todos os BMCs.
Existem utilitários que permitem configurar em massa os BMCs em dezenas de caixas? Digamos que eu queira consultar um parâmetro em dezenas de BMCs diferentes ou alterar a senha, desativar o acesso HTTP à WebUI ou desativar a infame falha de segurança zero da cifra .
Pontos de bônus por qualquer utilitário que me permita atualizar o firmware do BMC, necessário para mitigar várias vulnerabilidades de segurança
fonte
Respostas:
Eu provavelmente usaria o Ansible . É um mecanismo de gerenciamento / orquestração de configuração muito mais simples do que o Puppet (o Puppet costumava ser minha escolha preferida para isso, mas nem sempre agora, tendo descoberto o Ansible).
O benefício do Ansible aqui é que ele se comunica diretamente pelo SSH, para que você possa começar a usar apenas as credenciais e o fluxo de trabalho existentes do SSH.
Se você está configurando seus BMCs com o ipmitool, poderá fazer algo como:
Definir um arquivo Hosts - Isso informa ao Ansible quais hosts estão no grupo bmc (nesse caso) e em quais itens executar.
E assim por diante ... Você também pode usar nomes de host nesse arquivo, desde que sejam solucionáveis.
Em seguida, crie um "manual", que é o conjunto de comandos para executar em cada host em um grupo de hosts. Você deseja ter esse tipo de layout de diretório de cima para baixo:
Um manual tem Funções , que são pequenas seções de configuração que você pode quebrar e reutilizar.
Então, eu criaria um arquivo chamado
bmc.yml
(Toda a configuração Ansible está nos arquivos YAML)Então, dentro,
roles/bmcconfig/tasks/main.yml
você pode começar a listar os comandos que devem ser executados em cada host, para se comunicar com o ipmi.Quando você executa o manual,
ansible-playbook -i hosts bmc.yml
os comandos listados emtasks/main.yml
cada função serão executados em ordem descendente em cada host encontrado no grupo debmc
hosts emhosts
group_vars/all
é um arquivo interessante, permite definir pares de valores-chave de variáveis e valores que podem ser usados em seus playbooks.para que você possa definir algo como
no seu
group_vars/all
e, como resultado, você poderá ter algo como:no manual.
Você pode descobrir muito mais informações sobre como usar os "módulos" - os componentes do Ansible que permitem fazer coisas, como escrever seus próprios: D e assim por diante nas Páginas de documentação do Ansible .
fonte
Eu escrevi uma pequena ferramenta python para executar comandos em nossas 1000 máquinas (e seus bmc, drac, ilo e imm)
O que fiz foi escrever uma estrutura python chamada vsc-manage, onde eu posso executar comandos que são enviados para o servidor ou para o bmc e, em seguida, configuramos que tipo de máquina precisa de qual comando.
Eu tenho várias classes que combinam uma mistura desses comandos,
Portanto, para máquinas com um imm, ele será ssh para o imm e será executado
power off
(da maneira esperada)Para o nosso chassi blade imb , ele executará isso no chassi
Para alguns dell dracs, ele será executado no sistema operacional (de um nó mestre)
Para os nossos sistemas hp mais recentes que executam o ipmi (e vejo mais e mais nos dias de hoje), ele será executado no master:
ou os sistemas dell mais recentes precisam
ipmitool -I open
, talvez seja necessário jogar um pouco com o protocolo.Para configurações não incluídas no padrão ipmi, implementei algumas coisas do DMTF SMASH CLP , por exemplo, ativar o localizador:
Tudo isso em uma ferramenta de linha de comando que pode ser executada em nossos laptops, que se conectará ao nó mestre certo, execute o comando certo para o nó direito e retorne a saída, com uma lista adicional de erros, se houver (com base em saída em stderr e / ou exitcode)
Isso provou ser muito útil, e adicionar suporte para uma nova classe de hardware é relativamente fácil agora (graças ao fato de a maioria dos fornecedores oferecer suporte total ao ipmi e ao DMTFSMASHCLP agora)
Isso não é adequado para a configuração inicial (ele precisa que o bmc tenha um ip exclusivo e um gateway correto, mas é isso que nossos fornecedores precisam nos fornecer na entrega), mas pode fazer quase qualquer outra coisa (também executar comandos arbitrários no host que está operando) e programe automaticamente o tempo de inatividade no icinga / nagios quando você reinicia um nó e / ou reconhece 1000 hosts e serviços no icinga / nagios de uma só vez)
Atualizar o firmware bmc e adicionar suporte para nossos comutadores são questões pendentes que estão planejadas.
ATUALIZAR
Como pelo menos algumas pessoas pareciam interessadas, eu dei um último polimento hoje, e o código aberto está em https://github.com/hpcugent/vsc-manage
Embora isso seja muito direcionado ao nosso próprio fluxo de trabalho (quattor e / ou pbs), espero que pelo menos possa ser interessante.
fonte
Estou surpreso que ninguém tenha mencionado o MAAS ( http://maas.io/ ), que faz exatamente o que você está procurando. Ele pode autoconfigurar e gerenciar BMCs e, além disso, implantar qualquer sistema operacional nos nós que você inscreveu no sistema. Ele possui uma interface da Web e uma API RESTful e foi desenvolvido para integrar-se a qualquer sistema de automação.
Quando uma máquina PXE é inicializada pela primeira vez, o MAAS usa IPMI em banda para configurar credenciais automaticamente para você. A partir desse momento, você pode facilmente inicializar e desligar remotamente uma máquina.
Para obter mais detalhes, consulte a documentação do MAAS BMC Power Types que mostra como configurar manualmente um BMC para qualquer nó listado no MAAS.
fonte