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 as alterações controladas pelo agendador entrem em vigor. Essas tarefas podem incluir, por exemplo, atualizar variáveis de ambiente de caminho, definir configurações de resolução de nomes do DNS (Sistema de Nomes de Domínio) ou associar nós a um domínio do Microsoft Entra Domain Services (AD DS).

Para implementar essa funcionalidade, você decide explorar o uso de cloud-init em clusters do Azure CycleCloud e testá-la 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 cloud-init, você pode usar qualquer script ou método de configuração que o sistema operacional em execução em nós de destino possa reconhecer e processar, incluindo scripts de shell tradicionais, Python e YAML.

Neste tutorial, você executará as seguintes tarefas:

  • Tarefa 1: configurar a autenticação via SSH para os nós do cluster do Azure CycleCloud
  • Tarefa 2: Adicionar um script de cloud-init aos nós de cluster
  • Tarefa 3: Verificar a funcionalidade de cloud-init no nó do agendador
  • Tarefa 4: verificar a funcionalidade cloud-init nos nós de computação
  • Tarefa 5: Limpar o ambiente do exercício

Observação

Certifique-se de que você concluiu com êxito o exercício anterior antes de iniciar este exercício.

Tarefa 1: configurar a autenticação via SSH para os nós do cluster do Azure CycleCloud

Para validar a execução dos scripts de cloud-init, você se conectará aos nós do cluster com a CLI do Azure CycleCloud a partir 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 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 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. Depois, 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 <private_key.pem> espaço reservado 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 de cloud-init aos nós de cluster

A opção de 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 do Azure CycleCloud, abra outra janela do navegador e navegue até a URL https://< IP_address> . Se solicitado, confirme que você deseja continuar.

  2. Se for solicitado que você se autentique, entre fornecendo credenciais de sua conta de usuário do aplicativo Azure CycleCloud com a função 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 Editar contoso-custom-slurm-lab-cluster, selecione a entrada Cloud-init e, na guia agendador da seção Configuração do Cloud-init, insira o seguinte script:

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

    Captura de tela da guia Cloud-init da janela pop-up Editar contoso-custom-slurm-lab-cluster no aplicativo Web do Azure CycleCloud.

  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. Clique em Salvar.

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

Para verificar a funcionalidade cloud-init no nó do agendador, você iniciará o cluster. Isso disparará o provisionamento do nó do agendador. Depois que o nó estiver em execução, você poderá se conectar a ele 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 do Azure CycleCloud, selecione o link Iniciar na página contoso-custom-slurm-lab-cluster. Quando sua confirmação for solicitada, 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 Agendador e monitore seu status no painel Detalhes, aguardando até que ele seja alterado de Adquirindo para Pronto.

    Observação

    Isso pode levar 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, permitindo que você se conecte ao nó do agendador e selecione Fechar:

    Captura de tela da janela pop-up Conectar ao nó: agendador no aplicativo Web do 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 do Cloud Shell e execute o comando que você copiou 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 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 cloud-init nos nós de computação.

Importante

Antes de aplicar o procedimento equivalente para verificar a funcionalidade do sistema cloud-init nos nós de processamento, você precisa remover e realocar o conjunto de dimensionamento de máquinas virtuais correspondente. Essa etapa é específica para os clusters baseados em Slurm porque, nesse caso, a integração do agendador para dimensionamento automático exige que o Azure CycleCloud pré-popule os nós de computação. Como resultado, a configuração cloud-init que você aplicou 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 no 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 Tentando remover os seguintes nós seguidas por redimensionamento do cluster concluído assim que essa etapa for concluída.

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

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

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

    Observação

    Isso pode levar cerca de três minutos.

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

    Captura de tela da janela pop-up Conectar ao nó: htc-1 no aplicativo Web do 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 do 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 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 quando chegar a esse ponto. Isso permite que você evite os encargos associados à manutenção desses recursos em relação à sua assinatura do Azure.

Tarefa 5: Limpar o ambiente de laboratório

O 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 durante os exercícios deste módulo.

  1. No navegador da Web que exibe a interface gráfica do aplicativo Web do 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 encerramento.

    Observação

    O processo envolve o desprovisionamento da VM do Azure que atende à função do nó de cabeçalho do cluster. Isso pode levar cerca de cinco minutos.

    Observação

    Para excluir todos os outros recursos provisionados neste laboratório, você excluirá 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 do cluster, selecione a entrada Excluir grupo de recursos na barra de ferramentas. Na caixa de texto Insira 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 recursos do Slurm. Para evitar encargos extras, exclua todos esses grupos de recursos relacionados ao Slurm e seus recursos.

Parabéns! Você concluiu com êxito o terceiro e último exercício deste módulo. Neste exercício, você explorou o uso de cloud-init em clusters do Azure CycleCloud e testou-o 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. Posteriormente, você encerrou o cluster e excluiu todos os recursos de cluster usados neste módulo para evitar custos desnecessários.