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

Use um script de configuração para uma maneira 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 em seu espaço de trabalho.

Como administrador, pode escrever um script de personalização para ser utilizado para aprovisionar todas as instâncias de computação na área de trabalho de acordo com os seus requisitos. Você pode configurar seu 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 a criação inicial).

Alguns exemplos do que pode fazer num script de configuração:

  • Instalar pacotes, ferramentas e software
  • Montar dados
  • Criar um ambiente conda personalizado e kernels do Jupyter
  • Clonar repositórios Git e definir a configuração do Git
  • Definir proxies de rede
  • Definir variáveis de ambiente
  • Instalar extensões do JupyterLab

Criar o script de configuração

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

  1. Entre no estúdio e selecione seu espaço de trabalho.
  2. À esquerda, selecione Blocos de Notas.
  3. Use a ferramenta Adicionar arquivos para criar ou carregar seu shell script de instalação. Verifique se o nome do arquivo do script termina em ".sh". Ao criar um novo 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 onde ele foi carregado. Por exemplo, se você carregar o script para Users>admin, o local 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. Esse local permite que você use caminhos relativos no script.

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

Se o seu script estava fazendo algo específico para azureuser, como instalar o ambiente conda ou o kernel Jupyter, coloque-o dentro sudo -u azureuser do bloco assim:

#!/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. Também não é possível acessar os argumentos de script neste bloco.

Para outros scripts de exemplo, consulte azureml-examples.

Você também pode usar as seguintes variáveis de ambiente em 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 Política do Azure para impor ou padronizar um script de instalação para cada criação de instância de computação. O valor padrão para um tempo limite de script de instalação é 15 minutos. O tempo pode ser alterado em estúdio, ou através de modelos ARM usando o DURATION parâmetro. DURATION é um número de ponto flutuante com um sufixo opcional: 's' por segundos (o padrão), 'm' por minutos, 'h' por horas ou 'd' por dias.

Use o script em estúdio

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

  1. Entre no estúdio e selecione seu espaço de trabalho.
  2. À esquerda, selecione Computar.
  3. Selecione +Novo para criar uma nova 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, script de criação (executado uma vez ao criar a instância de computação) ou script de inicialização (executado sempre que a instância de computação for iniciada).
  6. Navegue até o shell script 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.

Gorjeta

Se o armazenamento do espaço de trabalho estiver conectado a uma rede virtual, talvez não seja possível acessar o arquivo de script de instalação, a menos que esteja acessando o estúdio de dentro da rede virtual.

Usar o script em um modelo do Gerenciador de Recursos

Em um modelo do Gerenciador de Recursos, 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 o local do script de criação no compartilhamento de arquivos de blocos de anotações, 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 Gerenciador de Recursos. O comando shell pode referir-se a quaisquer dependências carregadas no compartilhamento de arquivos de blocos de anotações. 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 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

Registos da execução do script de configuração que aparecem na pasta de registos na página de detalhes da instância de computação. Os registos são novamente armazenados na partilha de ficheiros dos blocos de notas, na pasta Logs\<compute instance name>. Os argumentos de arquivo de script e comando para uma instância de computação específica são mostrados na página de detalhes.