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.

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.

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

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

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

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

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

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

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

    Captura de ecrã do separador Cloud-init da janela pop-up de edição do cluster 'contoso-custom-slurm-lab-cluster' na aplicação web Azure CycleCloud.

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

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

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

  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 contendo o comando que permite conectar-se ao nó do agendador e selecione Fechar:

    Captura de ecrã da janela pop-up Ligar ao nó: agendador na aplicação Web Azure CycleCloud.

    Observação

    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.

    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 ~]$
    
  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
    

    Observaçã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.

  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
    

    Observaçã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.

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

    Captura de tela do menu Ações na página contoso-custom-slurm-lab-cluster no aplicativo Web Azure CycleCloud.

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

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

    Captura de ecrã da janela pop-up Ligar ao nó de rede: htc-1 na aplicação Web Azure CycleCloud.

    Observação

    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.

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

    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.

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

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

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