Exercício - Criar um script cloud-init para uso com o Azure CycleCloud

Concluído

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.

Nota

Ao criar scripts cloud-init, você pode usar qualquer método de script ou configuração que o sistema operacional em execução nos nós de destino possa reconhecer e processar, incluindo shell scripting tradicional, 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 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

Nota

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, você se conectará a nós de cluster com a CLI do Azure CycleCloud do 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.

  1. Navegue até o portal do Azure e, 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.

  2. No portal do Azure, abra o 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.

  3. No painel 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.

  4. Na caixa de diálogo Abrir, navegue até o local do arquivo .pem que contém a chave privada e selecione Abrir.

  5. Execute os seguintes comandos no Cloud Shell para mover o arquivo .pem 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):

    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 /etc/hosts .

  1. Se você ainda não estiver conectado ao aplicativo Web Azure CycleCloud, abra outra janela do navegador e navegue até a URL IP_address https://<>. Se lhe for pedido, confirme que pretende continuar.

  2. 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.

  3. 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.

  4. Na janela pop-up Edit contoso-custom-slurm-lab-cluster, selecione a entrada Cloud-init e, na guia scheduler na seção Cloud-init configuration, insira o seguinte script:

    #!/bin/bash
    echo "10.10.10.10 www.contoso.com" >> /etc/hosts
    

    Screenshot of the Cloud-init tab of the Edit contoso-custom-slurm-lab-cluster pop-up window in the Azure CycleCloud web application.

  5. Na mesma janela pop-up, com a entrada Cloud-init selecionada, selecione cada uma das guias restantes (incluindo cuda, hpc e htc) e insira o mesmo script. Selecione Guardar.

Tarefa 3: Verificar a funcionalidade cloud-init no nó do agendador

Para verificar a funcionalidade cloud-init no nó do agendador, você iniciará o cluster. Isso acionará 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.

  1. Na janela do navegador que exibe o aplicativo Web Azure CycleCloud, selecione o link Iniciar na página contoso-custom-slurm-lab-cluster . Quando solicitado a confirmar, selecione OK.

    Nota

    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.

  2. Na lista de nós, selecione a entrada Agendador e monitore seu status no painel Detalhes , aguardando até que ela mude de Adquirindo para Pronto.

    Nota

    Isto pode demorar cerca de três minutos.

  3. No painel Detalhes, selecione Conectar. Na janela pop-up Conectar ao nó: agendador, na seção Usando a CLI do CycleCloud, selecione a entrada que contém o comando que permite que você se conecte ao nó do agendador e selecione Fechar:

    Screenshot of the Connect to node: scheduler pop-up window in the Azure CycleCloud web application.

    Nota

    O comando deve ter o formato cyclecloud connect scheduler -c contoso-custom-slurm-lab-cluster

  4. Alterne para a janela do navegador da Web com o painel Cloud Shell e execute o comando copiado na etapa anterior.

    Nota

    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 ~]$
    
  5. 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/hosts
    

    Nota

    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, nesse caso, a integração de dimensionamento automático do agendador requer que o Azure CycleCloud preencha 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.

  1. 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
    exit
    

    Nota

    Você receberá as mensagens informando Tentando remover os nós a seguir , seguido pela conclusão do redimensionamento do cluster assim que esta etapa for concluída.

  2. No seu computador, alterne para a janela do navegador da Web exibindo a página contoso-custom-slurm-lab-cluster do aplicativo Web Azure CycleCloud. Na guia Nós , selecione a linha htc e, no painel Detalhes, selecione a entrada htc-1 e, em seguida, selecione o cabeçalho da guia Ações. No menu suspenso, selecione Iniciar e selecione OK quando solicitado a confirmar.

    Screenshot of the Actions menu on the contoso-custom-slurm-lab-cluster page in the Azure CycleCloud web application.

  3. No painel Detalhes, monitore o nó recém-iniciado e aguarde até que seu status mude de Adquirindo para Pronto.

    Nota

    Isto pode demorar cerca de três minutos.

  4. 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 contendo o comando que permite que você se conecte ao nó do agendador e selecione Fechar:

    Screenshot of the Connect to node: htc-1 pop-up window in the Azure CycleCloud web application.

    Nota

    O comando deve ter o formato cyclecloud connect htc-1 -c contoso-custom-slurm-lab-cluster.

  5. Alterne para o painel Cloud Shell e execute o comando copiado na etapa anterior.

    Nota

    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 ~]$
    
  6. 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"
    

    Nota

    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.

  1. No navegador da Web exibindo 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.

  2. Monitore o processo de rescisão.

    Nota

    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.

    Nota

    Para excluir todos os outros recursos provisionados neste laboratório, exclua os grupos de recursos que hospedam os recursos do cluster.

  3. No portal do Azure, navegue até a folha do grupo de recursos que hospeda recursos de cluster, selecione a entrada Excluir 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.

    Nota

    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.