Проблемы с использованием расширений виртуальных машин в системах виртуальных машин Linux Azure с поддержкой Python 3
Примечание.
Корпорация Майкрософт рекомендует пользователям применять Python 3.x в своих системах, если только их рабочим нагрузкам не требуется поддержка Python 2.x. К примерам таких требований относятся устаревшие сценарии администрирования и такие расширения, как Шифрование дисков Azure и Azure Monitor.
Перед установкой Python 2.x в рабочей среде рассмотрите вопрос долгосрочной поддержки Python 2.x, в частности возможности получения обновлений для системы безопасности. По мере того как в продукты (в том числе некоторые из вышеупомянутых расширений) добавляется поддержка Python 3.8, следует прекращать использование Python 2.x.
Некоторые дистрибутивы Linux перешли на Python 3.8, и из них была полностью удалена устаревшая точка входа /usr/bin/python
для Python. Этот переход влияет на готовое автоматизированное развертывание некоторых расширений для виртуальных машин, отвечающих двум условиям:
- расширения, переход которых на поддержку Python 3.x еще не завершен;
- расширения, использующие устаревшую точку входа
/usr/bin/python
.
Пользователи дистрибутивов Linux, которые перешли на Python 3.x, должны гарантировать наличие устаревшей точки доступа /usr/bin/python
, прежде чем пытаться развернуть эти расширения на своих виртуальных машинах. В противном случае развертывание расширения может завершиться ошибкой.
Это касается таких поддерживаемых дистрибутивов Linux, как Ubuntu Server 20.04 LTS и Ubuntu Pro 20.04 LTS.
К затрагиваемым расширениям виртуальных машин относятся Шифрование дисков Azure, Анализ журналов, Доступ к виртуальным машинам (используется для сброса паролей) и Диагностика гостей (используется для дополнительных счетчиков производительности).
При обновлении на месте, например с Ubuntu 18.04 LTS до Ubuntu 20.04 LTS, следует сохранить символьную ссылку /usr/bin/python
, чтобы избежать этой проблемы.
Разрешение
Перед развертыванием расширений в известных сценариях, описанных ранее в сводке, следует изучить изложенные ниже общие рекомендации.
Перед развертыванием расширения восстановите символьную ссылку
/usr/bin/python
с помощью метода, предоставленного поставщиком дистрибутива Linux.- Например, для Python 2.7 используйте следующую команду:
sudo apt update && sudo apt install python-is-python2
- Например, для Python 2.7 используйте следующую команду:
Эта рекомендация для клиентов Azure и не поддерживается в Azure Stack:
- Если вы уже развернули экземпляр, в котором проявляется эта проблема, используйте команду “Запустить” в колонке виртуальной машины для выполнения вышеупомянутых команд. Расширение команды Run не влияет на переход на 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
Если администраторы политик в организации придут к выводу, что расширения не следует развертывать на виртуальных машинах, вы можете отключить поддержку расширений во время подготовки:
REST API
Чтобы отключать и включать расширения, вы можете развернуть виртуальную машину с этим свойством:
"osProfile": { "allowExtensionOperations": false },
Следующие шаги
Дополнительные сведения см. в статье Другие изменения базовой системы с версии 18.04 LTS — Python 3 по умолчанию.