Compartilhar via


Problemas ao usar extensões de VM em sistemas de Máquinas Virtuais do Azure habilitados para Python 3

Observação

A Microsoft incentiva os usuários a adotar o Python 3.x em seus sistemas, a menos que sua carga de trabalho exija suporte ao Python 2.x . Exemplos desse requisito podem incluir scripts de administração herdados ou extensões como o Azure Disk Encryption e o Azure Monitor.

Antes de instalar o Python 2.x em produção, considere a questão do suporte a longo prazo do Python 2.x, especialmente sua capacidade de receber atualizações de segurança. À medida que os produtos, incluindo algumas das extensões mencionadas, forem atualizados com suporte ao Python 3.8, você deve interromper o uso do Python 2.x.

Algumas distribuições do Linux fizeram a transição para o Python 3.8 e removeram completamente o ponto de entrada herdado /usr/bin/python do Python. Essa transição afeta a implantação automatizada e pronta para uso de determinadas extensões de VM (máquina virtual) com estas duas condições:

  • Extensões que ainda estão em transição para o suporte do Python 3.x
  • Extensões que usam o ponto de entrada herdado /usr/bin/python

Os usuários de distribuição do Linux que fizeram a transição para o Python 3.x devem garantir que o ponto de entrada herdado /usr/bin/python exista antes de tentar implantar essas extensões em suas VMs. Caso contrário, a implantação da extensão poderá falhar.

  • As distribuições endossadas do Linux afetadas incluem o Ubuntu Server 20.04 LTS e o Ubuntu Pro 20.04 LTS.

  • As extensões de VM afetadas incluem a Criptografia de Disco do Azure, o Log Analytics, o Acesso à VM (usado para redefinição de senha) e o Diagnóstico de Convidado (usado para contadores de desempenho adicionais).

As atualizações no local, como a atualização do Ubuntu 18.04 LTS para o Ubuntu 20.04 LTS, devem manter o /usr/bin/python symlink e permanecer inalteradas.

Observação

Experimente a assistência de VM para diagnósticos mais rápidos. Recomendamos que você execute VM assist for Windows ou VM assist for Linux. Essas ferramentas de diagnóstico baseadas em script ajudam você a identificar problemas comuns que afetam o Agente Convidado da VM do Azure e a integridade geral da VM.

Se você estiver enfrentando problemas de desempenho com máquinas virtuais, antes de entrar em contato com o suporte, execute essas ferramentas.

Resolução

Considere essas recomendações gerais antes de implantar extensões nos cenários conhecidos afetados descritos anteriormente no Resumo:

  1. Antes de implantar a extensão, restabeleça o /usr/bin/python symlink usando o método fornecido pelo fornecedor de distribuição do Linux.

    • Por exemplo, para Python 2.7, use: sudo apt update && sudo apt install python-is-python2
  2. Essa recomendação é para clientes do Azure e não tem suporte no Azure Stack:

    • Se você já implantou uma instância que exibe esse problema, use a funcionalidade Executar comando na folha da VM para executar os comandos mencionados acima. A extensão de comando Executar em si não é afetada pela transição para o Python 3.8.
  3. Se você estiver implantando uma nova instância e precisar definir uma extensão no tempo de provisionamento, use dados de usuário de cloud-init para instalar os pacotes mencionados acima.

    Por exemplo, para Python 2.7:

    # create cloud-init config
    cat > cloudinitConfig.json <<EOF
    #cloud-config
    package_update: true
    
    runcmd:
    - sudo apt update
    - sudo apt install python-is-python2 
    EOF
    
    # create VM
    az vm create \
        --resource-group <resourceGroupName> \
        --name <vmName> \
        --image <Ubuntu 20.04 Image URN> \
        --admin-username azadmin \
        --ssh-key-value "<sshPubKey>" \
        --custom-data ./cloudinitConfig.json
    
  4. Se os administradores de políticas da sua organização determinarem que as extensões não devem ser implantadas em VMs, você poderá desabilitar o suporte à extensão no momento do provisionamento:

    • API REST

      Para desabilitar e habilitar extensões quando você pode implantar uma VM com esta propriedade:

        "osProfile": {
          "allowExtensionOperations": false
        },
      

Próximas etapas

Consulte outras alterações do sistema base desde 18.04 LTS – Python 3 por padrão para obter informações adicionais.