Personalizar instalações de software
Os modelos do Azure CycleCloud facilitam a configuração de clusters HPC abstraindo os detalhes de implementação da infraestrutura subjacente, permitindo que você se concentre no gerenciamento de carga de trabalho. No entanto, essa carga de trabalho normalmente tem várias dependências relacionadas ao software, que exigem etapas adicionais de personalização. Felizmente, o Azure CycleCloud também fornece uma estrutura para implementar essas etapas por meio de seu suporte para tarefas de provisionamento e gerenciamento de configuração aplicadas diretamente a nós de cluster.
Suas metas incluem a necessidade de implantar imagens personalizadas e usar scripts de configuração desenvolvidos internamente que você tem usado em seu ambiente HPC local. Você deseja determinar como pode usar os recursos do Azure CycleCloud para atingir essas metas.
Como implementar o gerenciamento de configuração com o Azure CycleCloud?
O Azure CycleCloud oferece três métodos principais que você pode combinar de maneira arbitrária para personalizar o sistema operacional e o software em nós de cluster de acordo com seus próprios requisitos ou preferências:
- Imagens personalizadas
- Projetos
- Cloud-init
Como usar imagens personalizadas com o Azure CycleCloud?
O Azure CycleCloud dá suporte a nós de cluster que executam as distribuições mais comuns do Linux e, dependendo do agendador, do Windows Server. Os modelos internos são pré-configurados com os padrões recomendados, mas você é livre para escolher imagens do Azure Marketplace ou provisionar nós com base em imagens personalizadas. A última opção pode ser preferível se você quiser minimizar o atraso associado à instalação pós-implantação do sistema operacional e quaisquer dependências adicionais de suas cargas de trabalho de HPC. Ele também pode ser necessário para atender às necessidades de negócios, segurança ou conformidade.
As imagens personalizadas permitem que você tenha controle total sobre o software pré-instalado e a configuração inicial do sistema operacional. Sua principal desvantagem é a sobrecarga associada à manutenção de várias imagens para acomodar diferentes combinações de aplicativos e suas versões, especialmente em cenários de desenvolvimento.
Como usar projetos do Azure CycleCloud para instalação de software?
Um projeto do Azure CycleCloud é uma coleção de arquivos que você faz referência ao definir configurações de nós de cluster por meio de modelos. Os projetos têm a seguinte estrutura de diretório:
\project
|- project.ini
|- blobs
|- templates
|- specs
| |
| default
| |- cluster-init
| |- scripts
| |- files
| |- tests
| | - chef
| |- site-cookbooks
| |- data_bag
| |- roles
O arquivo project.ini contém os metadados do projeto, incluindo seu nome, rótulo, versão e tipo. Os tipos com suporte incluem o agendador e o aplicativo. O primeiro é usado para instalar e inicializar daemons do agendador nos nós principais e nos nós de computação, enquanto o segundo define as cargas de trabalho do cluster.
O diretório de blobs contém blobs de projeto, como arquivos binários para um projeto de software livre que pode ser redistribuído livremente, e blobs de usuário, que devem ser excluídos da redistribuição do projeto devido a restrições de licenciamento.
O diretório de modelos contém modelos, enquanto o diretório de especificações hospeda especificações que definem as configurações a serem aplicadas aos nós de cluster de destino.
Observação
Por exemplo, um projeto Slurm contém, no mínimo, duas especificações: uma para os nós de gerenciamento e outra para os nós de computação.
No diretório de especificações, há dois subdiretórios chamados cluster-init e Chef personalizado. O cluster-init contém scripts que são executados automaticamente no nó de destino. Arquivos de dados brutos que são copiados para o nó de destino e testes que serão executados quando um cluster for iniciado no modo de teste. O subdiretório Chef personalizado contém arquivos específicos do Chef, incluindo arquivos de guia, de recipiente de dados e de definição de função. Você pode usar os cookbooks e as receitas do Chef para configurar os nós. Especificações de cluster-init são mapeadas para funções e guias do Chef.
Observação
O Azure CycleCloud usa o Chef como a ferramenta de gerenciamento de configuração para preparar e configurar cada nó. O CycleCloud usa o Chef em um modo autônomo que não depende de um servidor Chef centralizado. Em vez disso, todos os guias destinados aos nós de cluster gerenciados serão baixados do cofre durante a fase de inicialização do sistema operacional. Nesse ponto, o Chef processará a lista de receitas definidas nas especificações de cluster-init do nó, convertendo efetivamente a VM subjacente em um nó de HPC em funcionamento.
Para provisionar um cluster com base em um projeto, você precisa carregar o conteúdo do projeto em um cofre do Azure CycleCloud. Em seguida, sempre que o nó de destino for iniciado, ele baixará automaticamente os arquivos de projeto necessários do cofre e processará as especificações necessárias.
Como usar cloud-init com o Azure CycleCloud?
O Azure CycleCloud dá suporte à cloud-init como uma forma de configurar nós de cluster durante a fase de inicialização, antes que as especificações relacionadas ao projeto sejam aplicadas. Isso fornece um método conveniente para lidar com qualquer infraestrutura ou dependências relacionadas ao software, como definir configurações de rede ou aplicar atualizações de pacote do sistema operacional.
Embora você possa definir a configuração de cloud-init usando um modelo, você também pode fazer isso diretamente da interface gráfica do Azure CycleCloud. Ao criar ou editar um cluster, você encontrará as configurações relevantes na guia rotulada Cloud-Init, em que você pode inserir os scripts para cada tipo de nó.
Observação
Como o cloud-init é executado antes de qualquer especificação de projeto do CycleCloud, o agendador e a configuração que o Azure CycleCloud aplica a um nó podem substituir as alterações feitas por meio do cloud-init. Se você precisar garantir que seus comandos sejam executados após a instalação do agendador, use as especificações de projeto do Azure CycleCloud.