Personalizar a instância de computação com um script

Use um script de instalação para obter uma forma automatizada de personalizar e configurar uma instância de computação no momento do provisionamento.

Use uma instância de computação como seu ambiente de desenvolvimento totalmente configurado e gerenciado na nuvem. Para desenvolvimento e teste, você também pode usar a instância como um destino de computação de treinamento ou para um destino de inferência. Uma instância de computação pode executar vários trabalhos em paralelo e tem uma fila de trabalhos. Como um ambiente de desenvolvimento, uma instância de computação não pode ser compartilhada com outros usuários no seu espaço de trabalho.

Como administrador, você pode escrever um script de personalização a ser usado para provisionar todas as instâncias de computação no workspace de acordo com os seus requisitos. Você pode configurar o script de instalação como um script de Criação, que será executado uma vez quando a instância de computação for criada. Ou você pode configurá-lo como um script de inicialização, que será executado sempre que a instância de computação for iniciada (incluindo na criação).

Alguns exemplos do que você pode fazer em um script de instalação:

  • Instalar pacotes, ferramentas e software
  • Montar dados
  • Criar um ambiente do Conda personalizado e kernels do Jupyter
  • Clonar repositórios git e definir o git config
  • Definir proxies de rede
  • Definir variáveis de ambiente
  • Instalar extensões do JupyterLab

Criar o script de instalação

O script de instalação é um script de shell, que é executado como rootuser. Crie ou carregue o script nos seus arquivos de Notebooks:

  1. Entre no estúdio e selecione o seu workspace.
  2. À esquerda, selecione Notebooks.
  3. Use a ferramenta Adicionar arquivos para criar ou carregar o script do shell de instalação. Verifique se o nome de arquivo do script termina em ".sh". Ao criar um arquivo, altere também o Tipo de arquivo para bash(.sh) .

Create or upload your setup script to Notebooks file in studio

Quando o script é executado, o diretório de trabalho atual do script é o diretório em que ele foi carregado. Por exemplo, se você carregar o script em Usuários > administrador, a localização do script na instância de computação e no diretório de trabalho atual quando o script for executado será /home/azureuser/cloudfiles/code/Users/admin. Essa localização permite que você use caminhos relativos no script.

Os argumentos de script podem ser referenciados no script como $1, $2 etc.

Se o script executava algo específico para o azureuser, como instalar o ambiente do Conda ou o kernel do Jupyter, coloque-o em bloco sudo -u azureuser como a seguir:

#!/bin/bash

set -e

# This script installs a pip package in compute instance azureml_py38 environment.

sudo -u azureuser -i <<'EOF'

PACKAGE=numpy
ENVIRONMENT=azureml_py38 
conda activate "$ENVIRONMENT"
pip install "$PACKAGE"
conda deactivate
EOF

O comando sudo -u azureuser altera o diretório de trabalho atual para /home/azureuser. Além disso, você não pode acessar os argumentos de script nesse bloco.

Para outros scripts de exemplo, confira azureml-examples.

Você também pode usar as seguintes variáveis de ambiente no seu script:

  • CI_RESOURCE_GROUP
  • CI_WORKSPACE
  • CI_NAME
  • CI_LOCAL_UBUNTU_USER - aponta para azureuser

Use um script de instalação em conjunto com a Azure Policy para aplicar ou definir como padrão um script de instalação para cada criação de instância de computação. O valor padrão para um tempo limite do script de instalação é de 15 minutos. O tempo pode ser alterado no estúdio ou por meio de modelos do ARM usando o parâmetro DURATION. DURATION é um número de ponto flutuante com um sufixo opcional: 's' para segundos (o padrão), 'm' para minutos, 'h' para horas ou 'd' para dias.

Usar o script no estúdio

Depois de armazenar o script, especifique-o durante a criação da sua instância de computação:

  1. Entre no estúdio e selecione o seu workspace.
  2. Selecione Computação à esquerda.
  3. Selecione +Novo para criar uma instância de computação.
  4. Preencha o formulário.
  5. Na página Aplicativos do formulário, alterne o tipo de script que você deseja usar, o script de criação (executado uma vez ao criar a instância de computação) ou o script de inicialização (executado sempre que a instância de computação é iniciada).
  6. Navegue até o script de shell que você salvou. Ou carregue um script do seu computador.
  7. Adicione argumentos de comando conforme necessário.

Screenshot of provision a compute instance with a setup script in the studio.

Dica

Se o armazenamento do workspace estiver anexado a uma rede virtual, talvez você não consiga acessar o arquivo de script de instalação, a menos que você esteja acessando o estúdio de dentro da rede virtual.

Use o script no modelo do Resource Manager

Em um modelo do Resource Manager, adicione setupScripts para invocar o script de instalação quando a instância de computação for provisionada. Por exemplo:

"setupScripts":{
    "scripts":{
        "creationScript":{
        "scriptSource":"workspaceStorage",
        "scriptData":"[parameters('creationScript.location')]",
        "scriptArguments":"[parameters('creationScript.cmdArguments')]"
        }
    }
}

scriptData acima especifica a localização do script de criação no compartilhamento de arquivo dos notebooks, como Users/admin/testscript.sh. scriptArguments é opcional acima e especifica os argumentos para o script de criação.

Em vez disso, você pode fornecer o script embutido para um modelo do Resource Manager. O comando do shell pode se referir a todas as dependências carregadas no compartilhamento de arquivo dos notebooks. Quando você usa uma cadeia de caracteres embutida, o diretório de trabalho para o script é /mnt/batch/tasks/shared/LS_root/mounts/clusters/**\<ciname\>**/code/Users.

Por exemplo, especifique uma cadeia de caracteres de comando codificada em base64 para scriptData:

"setupScripts":{
    "scripts":{
        "creationScript":{
        "scriptSource":"inline",
        "scriptData":"[base64(parameters('inlineCommand'))]",
        "scriptArguments":"[parameters('creationScript.cmdArguments')]"
        }
    }
}

Logs de script de instalação

Os logs da execução do script de instalação aparecem na pasta de logs na página de detalhes da instância de computação. Os logs são armazenados novamente no compartilhamento de arquivo dos notebooks na pasta Logs\<compute instance name>. Os argumentos de comando e o arquivo de script de uma instância de computação específica são mostrados na página de detalhes.