Exercício - Criar um script cloud-init para uso com o Azure CycleCloud
Ao provisionar nós para um cluster, talvez você queira ser capaz de executar tarefas de configuração personalizadas durante o processo de inicialização do sistema operacional, antes que quaisquer alterações orientadas pelo agendador entrem em vigor. Essas tarefas podem incluir, por exemplo, a atualização de variáveis de ambiente de caminho, a definição de configurações de resolução de nomes DNS (Sistema de Nomes de Domínio) ou a vinculação de nós a um domínio dos Serviços de Domínio Microsoft Entra (AD DS).
Para implementar essa funcionalidade, você decide explorar o uso do cloud-init em clusters do Azure CycleCloud e testá-lo com um script Bash simples que modifica o conteúdo de um arquivo local em cada nó. Você pretende validar o resultado conectando-se a nós de cluster e revisando o conteúdo dos arquivos modificados.
Observação
Ao criar scripts do cloud-init, pode utilizar qualquer método de script ou configuração que o sistema operativo em execução nos nós de destino reconheça e processe, incluindo scripts de shell tradicionais, Python e YAML.
Neste exercício, você executará as seguintes tarefas:
- Tarefa 1: Configurar a autenticação baseada em SSH para nós de cluster do Azure CycleCloud
- Tarefa 2: Adicionar um script cloud-init aos nós do cluster
- Tarefa 3: Verificar a funcionalidade do cloud-init no nó do agendador
- Tarefa 4: Verificar a funcionalidade cloud-init nos nós de computação
- Tarefa 5: Limpar o ambiente de exercício
Observação
Certifique-se de que concluiu com êxito o exercício anterior antes de iniciar este exercício.
Tarefa 1: Configurar a autenticação baseada em SSH para nós de cluster do Azure CycleCloud
Para validar a execução dos scripts cloud-init, irá conectar-se aos nós do cluster através da CLI do Azure CycleCloud no Azure Cloud Shell. Essa conexão depende da autenticação baseada em chave SSH, portanto, você precisará carregar a chave privada correspondente à chave pública distribuída aos nós de cluster para o diretório inicial do Azure Cloud Shell.
Navegue até portal do Azuree, quando solicitado, autentique-se com uma conta da Microsoft ou uma conta do Microsoft Entra que tenha a função de Colaborador ou Proprietário na assinatura do Azure que você está usando neste módulo.
No portal do Azure, abra o do Cloud Shell selecionando seu ícone na barra de ferramentas ao lado da caixa de pesquisa e verifique se você está executando uma sessão Bash.
No painel do Azure Cloud Shell, na barra de ferramentas do painel, selecione o quarto ícone exibindo uma página com um par de setas verticais apontando nas direções opostas. Em seguida, no menu suspenso, selecione Carregar.
Na caixa de diálogo Abrir, navegue até o local do arquivo de .pem que contém a chave privada e selecione Abrir.
Execute os seguintes comandos no Cloud Shell para mover o arquivo de .pem do carregado para o local correto e configurar as permissões necessárias no nível do arquivo (substitua o espaço reservado
<private_key.pem>pelo nome do arquivo .pem do):mkdir -p ~/.ssh mv private_key.pem ~/.ssh chmod 600 ~/.ssh/cc-ssh-keys.pem
Tarefa 2: Adicionar um script cloud-init aos nós do cluster
A opção para adicionar scripts aos nós de cluster está disponível diretamente na interface gráfica do Azure CycleCloud. Você o usará para atribuir o mesmo script cloud-init ao agendador e aos nós de computação e verificar sua funcionalidade. O script adiciona uma entrada 10.10.10.10 cc.contoso.com ao arquivo de /etc/hosts.
Se você ainda não estiver conectado ao aplicativo Web Azure CycleCloud, abra outra janela do navegador e navegue até a URL https://<IP_address>. Se lhe for pedido, confirme que pretende continuar.
Se você for solicitado a autenticar, entre fornecendo credenciais da sua conta de usuário do aplicativo Azure CycleCloud com a função de Administrador.
Na interface gráfica do Azure CycleCloud, navegue até a página Clusters. Na lista de clusters, selecione a entrada contoso-custom-slurm-lab-cluster e, em seguida, selecione Editar.
Na janela pop-up Edit contoso-custom-slurm-lab-cluster, selecione a entrada Cloud-init e, na guia do agendador de na seção de configuração do Cloud-init, insira o seguinte script:
#!/bin/bash echo "10.10.10.10 www.contoso.com" >> /etc/hosts
Na mesma janela pop-up, com a entrada Cloud-init selecionada, selecione cada uma das guias restantes (incluindo cuda, hpce htc) e insira o mesmo script. Selecione Salvar.
Tarefa 3: Verificar a funcionalidade do cloud-init no nó do agendador
Para verificar a funcionalidade cloud-init no nó do agendador, você iniciará o cluster. Isso vai iniciar o provisionamento do nó do agendador. Depois que o nó estiver em execução, você poderá se conectar a ele a partir do Azure Cloud Shell e verificar se o arquivo /etc/hosts contém a entrada 10.10.10.10 www.contoso.com.
Na janela do navegador que exibe a aplicação web Azure CycleCloud, selecione o link Iniciar na página contoso-custom-slurm-lab-cluster. Quando solicitado a confirmar, selecione OK.
Observação
Se o cluster já estiver em execução, você precisará encerrá-lo e reiniciá-lo para aplicar a configuração atualizada, caso contrário, essa configuração não ficará visível nas etapas subsequentes.
Na lista de nós, selecione a entrada Scheduler e monitore o seu estado no painel Detalhes, aguardando até que mude de Aquisição para Pronto.
Observação
Isto pode demorar cerca de três minutos.
No painel Detalhes, selecione Conectar. Na janela pop-up Conectar ao nó: agendador, na seção Usando a CLI do CycleCloud, selecione a entrada contendo o comando que permite conectar-se ao nó do agendador e selecione Fechar:
Observação
O comando deve ter o formato
cyclecloud connect scheduler -c contoso-custom-slurm-lab-clusterAlterne para a janela do navegador da Web com o painel Cloud Shell e execute o comando copiado na etapa anterior.
Observação
O comando deve gerar saída no seguinte formato:
m@Azure:~$ cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster Connecting to cc-admin@40.87.52.25 (contoso-custom-slurm-lab-cluster scheduler) using SSH [cc-admin@ip-0A000304 ~]$Quando você estiver conectado ao nó do agendador, execute o seguinte comando para verificar se o arquivo /etc/hosts contém a entrada 10.10.10.10
www.contoso.com:grep "10.10.10.10 www.contoso.com" /etc/hostsObservação
O comando deve gerar saída no seguinte formato:
[cc-admin@ip-0A000304 ~]$ grep "10.10.10.10 www.contoso.com" /etc/hosts 10.10.10.10 www.contoso.com
Tarefa 4: Verificar a funcionalidade cloud-init nos nós de computação
Agora, você repetirá a sequência equivalente de etapas para verificar a funcionalidade de inicialização na nuvem nos nós de computação.
Importante
Antes de aplicar o procedimento equivalente para verificar a funcionalidade cloud-init nos nós de computação, você precisa remover e realocar o conjunto de escala de máquina virtual correspondente. Esta etapa é específica para os clusters baseados em Slurm porque, neste caso, a integração do dimensionamento automático do agendador requer que o Azure CycleCloud provisiona previamente os nós de computação. Como resultado, a configuração cloud-init aplicada anteriormente neste exercício não afetaria os nós já existentes.
Enquanto estiver conectado ao nó do agendador, execute os seguintes comandos no Cloud Shell para remover e realocar os nós de computação em seu cluster do Azure CycleCloud e encerrar a conexão com o nó do agendador:
sudo -i cd /opt/cycle/jetpack/system/bootstrap/slurm ./cyclecloud_slurm.sh remove_nodes ./cyclecloud_slurm.sh scale exit exitObservação
Você receberá as mensagens informando Tentativa de remover os seguintes nós seguidos por redimensionamento de cluster concluído assim que esta etapa for concluída.
No seu computador, mude para a janela do navegador exibindo a página contoso-custom-slurm-lab-cluster do aplicativo Web Azure CycleCloud. Na guia Nodes, selecione a linha htc e, no painel Detalhes, selecione a entrada htc-1, depois selecione o cabeçalho da guia Ações. No menu suspenso, selecione Iniciare selecione OK quando solicitado a confirmar.
No painel Detalhes, monitorize o nó recém-iniciado e aguarde até que o seu estado mude de Adquirindo para Pronto.
Observação
Isto pode demorar cerca de três minutos.
No painel Detalhes, selecione Conectar. Na janela pop-up Conectar ao nó: htc-1, selecione a entrada na seção Usando a CLI do CycleCloud que contém o comando que permite que você se conecte ao nó do agendador e selecione Fechar:
Observação
O comando deve ter o formato
cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster.Alterne para o painel Cloud Shell e execute o comando copiado na etapa anterior.
Observação
O comando deve gerar saída no seguinte formato:
m@Azure:~$ cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster Connecting to cc-admin@10.0.3.5 (contoso-custom-slurm-lab-cluster htc-1) through SSH bastion at cc-admin@40.87.52.25 [cc-admin@ip-0A000305 ~]$Quando você estiver conectado ao nó htc-1 , execute o seguinte comando para verificar se o arquivo /etc/hosts contém a entrada 10.10.10.10
www.contoso.com:cat /etc/hosts | grep "10.10.10.10 www.contoso.com"Observação
Você deve excluir todos os recursos implantados neste e nos exercícios anteriores deste módulo assim que chegar a este ponto. Isso permite que você evite as cobranças associadas à manutenção desses recursos em relação à sua assinatura do Azure.
Tarefa 5: Limpar o ambiente de laboratório
Seu teste da personalização do cluster usando o aplicativo Azure CycleCloud foi concluído. Para evitar custos desnecessários associados ao uso de recursos do Azure, agora você encerrará o cluster e removerá todos os recursos provisionados ao longo dos exercícios deste módulo.
No navegador da Web que exibe a interface gráfica do aplicativo Web Azure CycleCloud, selecione o link Encerrar na página contoso-custom-slurm-lab-cluster e, quando solicitado a confirmar, selecione OK.
Monitore o processo de rescisão.
Observação
O processo envolve o desprovisionamento da VM do Azure que serve a função do nó principal do cluster. Isto pode demorar cerca de cinco minutos.
Observação
Para excluir todos os outros recursos provisionados neste laboratório, exclua os grupos de recursos que hospedam os recursos do cluster.
No portal do Azure, navegue até ao painel do grupo de recursos que hospeda recursos de cluster, e selecione a entrada Eliminar grupo de recursos na barra de ferramentas. Na caixa de texto Digite o nome do grupo de recursos para confirmar a exclusão, digite o nome do grupo de recursos e selecione Excluir. Selecione Excluir novamente para confirmar a exclusão.
Observação
Pode haver grupos de recursos adicionais associados aos seus recursos do Slurm. Para evitar cobranças extras, certifique-se de excluir todos esses grupos de recursos relacionados ao Slurm e seus recursos.
Parabéns;! Concluiu com sucesso o terceiro e último exercício deste módulo. Neste exercício, você explorou o uso do cloud-init em clusters do Azure CycleCloud e o testou com um script Bash simples que modificou o conteúdo de um arquivo local em cada nó. Você validou o resultado conectando-se a nós de cluster e revisando o conteúdo dos arquivos modificados. Depois, você encerrou o cluster e excluiu todos os recursos de cluster usados neste módulo para evitar custos desnecessários.