비고
Microsoft는 워크로드에 Python 2.x 지원이 필요하지 않은 한 사용자가 시스템에서 Python 3.x 를 채택하도록 권장합니다. 이 요구 사항의 예로는 레거시 관리 스크립트 또는 Azure Disk Encryption 및 Azure Monitor와 같은 확장이 포함될 수 있습니다.
프로덕션 환경에서 Python 2.x 를 설치하기 전에 Python 2.x의 장기 지원, 특히 보안 업데이트를 받을 수 있는 기능에 대한 질문을 고려하세요. 언급된 일부 확장을 포함한 제품이 Python 3.8 지원으로 업데이트되면 Python 2.x 사용을 중단해야 합니다.
일부 Linux 배포판은 Python 3.8로 전환되고 Python에 대한 레거시 /usr/bin/python 진입점을 모두 제거했습니다. 이 이동은 다음과 같은 두 가지 조건이 있는 특정 VM(가상 머신) 확장의 즉시 사용 가능한 자동 배포에 영향을 미칩니다.
- 여전히 Python 3.x 지원으로 전환 중인 확장
- 레거시
/usr/bin/python진입점을 사용하는 확장
Python 3.x로 전환한 Linux 배포 사용자는 해당 확장을 VM에 배포하기 전에 레거시 /usr/bin/python 진입점이 있는지 확인해야 합니다. 그렇지 않으면 확장 배포가 실패할 수 있습니다.
영향을 받는 보증 Linux 배포판에는 Ubuntu Server 20.04 LTS 및 Ubuntu Pro 20.04 LTS가 포함됩니다.
영향을 받는 VM 확장에는 Azure Disk Encryption, Log Analytics, VM 액세스 (암호 재설정에 사용됨) 및 게스트 진단 (추가 성능 카운터에 사용됨)이 포함됩니다.
Ubuntu 18.04 LTS에서 Ubuntu 20.04 LTS로 업그레이드하는 것과 같은 현재 위치 업그레이드는 symlink를 유지하고 /usr/bin/python 영향을 받지 않아야 합니다.
비고
더 빠른 진단을 위해 VM 지원을 사용해 보세요. Windows용 VM 지원 또는 Linux용 VM 지원을 실행하는 것이 좋습니다. 이러한 스크립트 기반 진단 도구는 Azure VM 게스트 에이전트 및 전체 VM 상태에 영향을 주는 일반적인 문제를 식별하는 데 도움이 됩니다.
가상 머신에 성능 문제가 발생하는 경우 지원에 문의하기 전에 다음 도구를 실행합니다.
해결 방법
요약에서 이전에 설명한 알려진 영향을 받는 시나리오에서 확장을 배포하기 전에 다음과 같은 일반적인 권장 사항을 고려합니다.
확장을 배포하기 전에 Linux 배포 공급업체에서 제공하는 방법을 사용하여 symlink를
/usr/bin/python복원합니다.- 예를 들어 Python 2.7의 경우 다음을 사용합니다.
sudo apt update && sudo apt install python-is-python2
- 예를 들어 Python 2.7의 경우 다음을 사용합니다.
이 권장 사항은 Azure 고객을 위한 것이며 Azure Stack에서 지원되지 않습니다.
- 이 문제를 나타내는 인스턴스를 이미 배포한 경우 VM 블레이드의 실행 명령 기능을 사용하여 위에서 언급한 명령을 실행합니다. 실행 명령 확장 자체는 Python 3.8로의 전환의 영향을 받지 않습니다.
새 인스턴스를 배포하고 프로비전 시 확장을 설정해야 하는 경우 cloud-init 사용자 데이터를 사용하여 위에서 언급한 패키지를 설치합니다.
예를 들어 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조직의 정책 관리자가 VM에 확장을 배포해서는 안 된다고 판단하는 경우 프로비저닝 시 확장 지원을 사용하지 않도록 설정할 수 있습니다.
REST API (REST 애플리케이션 프로그래밍 인터페이스)
이 속성을 사용하여 VM을 배포할 수 있는 경우 확장을 사용하지 않도록 설정하고 사용하도록 설정하려면 다음을 수행합니다.
"osProfile": { "allowExtensionOperations": false },
다음 단계
추가 정보는 기본적으로 18.04 LTS - Python 3 이후의 다른 기본 시스템 변경 내용을 참조하세요.