Поделиться через


Отключение или удаление агента Linux в виртуальных машинах и образах

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

Перед удалением агента Linux необходимо ознакомиться с тем, какие виртуальные машины не удастся запустить без агента Linux.

Расширения виртуальных машин Azure — это небольшие приложения, которые выполняют задачи настройки и автоматизации после развертывания виртуальных машин Azure. Расширения устанавливаются и управляются на уровне управления Azure. Агент Linux для Azure обрабатывает команды расширения платформы и обеспечивает правильное состояние расширения в системе виртуальной машины.

На платформе Azure доступно множество расширений, в число которых входят приложения для конфигурации, мониторинга, безопасности виртуальных машин, а также служебные приложения. Существует большой выбор собственных и сторонних расширений, примеры ключевых сценариев, для которых используются расширения:

  • Поддержка собственных служб Azure, таких как Azure Backup, мониторинг, шифрование диска, безопасность, репликация сайта и другие.
  • Сброс SSH или пароля.
  • Конфигурация виртуальной машины — выполнение пользовательских скриптов, установка Chef, агентов Puppet и т. д.
  • Сторонние продукты, такие как антивирусные продукты, средства проверки уязвимостей виртуальных машин, средства мониторинга для виртуальных машин и приложений.
  • Расширения могут идти в комплекте с новым развертыванием виртуальной машины. Например, они могут входить в состав более крупного развертывания и использоваться для настройки приложений при подготовке виртуальной машины или выполняться в поддерживаемых операционных системах после развертывания.

Отключение обработки расширений

Существует несколько способов отключить обработку расширений в зависимости от потребностей, но, прежде чем продолжить, НЕОБХОДИМО удалить все расширения, развернутые на виртуальной машине, например с помощью Azure CLI можно вывести список расширений и удалить их:

az vm extension delete -g MyResourceGroup --vm-name MyVm -n extension_name

Примечание.

Если этого не сделать, платформа попытается отправить конфигурацию расширения и время ожидания истечет через 40 минут.

Отключение на уровне управления

Если вы не уверены, понадобятся ли вам расширения в будущем, можно оставить агент Linux на виртуальной машине, а затем отключить возможность обработки расширений на платформе. Этот параметр доступен в API Microsoft.Compute версии 2018-06-01 или более поздней версии и не зависит от установленной версии агента Linux.

az vm update -g <resourceGroup> -n <vmName> --set osProfile.allowExtensionOperations=false

Эту возможность можно легко включить на платформе, выполнив указанную выше команду и присвоив для нее значение true.

Удаление агента Linux в работающей виртуальной машине

Убедитесь, что вы удалили все существующие расширения из виртуальной машины, как описано выше.

Шаг 1. Удаление агента Linux для Azure

Если удалить только агент Linux, а не связанные с ним артефакты конфигурации, вы сможете переустановить агент позже. Чтобы удалить агент Linux для Azure, выполните одно из следующих действий с правами привилегированного пользователя:

Для Ubuntu 18.04+

sudo apt -y remove walinuxagent

Для Redhat 7.X, 8.X и 9.X

sudo yum -y remove WALinuxAgent

Для SUSE 12.X, 15.X

sudo zypper --non-interactive remove python-azure-agent

Шаг 2. Удаление артефактов агента Linux для Azure (необязательно)

Внимание

Вы можете удалить все связанные артефакты агента Linux, однако это лишит вас возможности переустановить его позже. Поэтому настоятельно рекомендуется сначала рассмотреть возможность отключения агента Linux, удалив его только указанным выше способом.

Если вы уверены, что не будете переустанавливать агент Linux, можно выполнить следующие действия:

Для Ubuntu 18.04+

sudo pt -y purge walinuxagent
sudo cp -rp /var/lib/waagent /var/lib/waagent.bkp
sudo rm -rf /var/lib/waagent
sudo rm -f /var/log/waagent.log

Для Redhat 7.X, 8.X, 9.X

sudo yum -y remove WALinuxAgent
sudo rm -f /etc/waagent.conf.rpmsave
sudo rm -rf /var/lib/waagent
sudo rm -f /var/log/waagent.log

Для SUSE 12.X, 15.X

sudo zypper --non-interactive remove python-azure-agent
sudo rm -f /etc/waagent.conf.rpmsave
sudo rm -rf /var/lib/waagent
sudo rm -f /var/log/waagent.log

Подготовка образа без агента Linux

Если у вас есть образ, который уже содержит cloud-init, и вы хотите удалить агент Linux, но по-прежнему подготавливаете его к работе с помощью cloud-init, выполните действия, описанные на шаге 2 (и при необходимости на шаге 3) с правами привилегированного пользователя, чтобы удалить агент Linux для Azure, вследствие чего будут удалены конфигурация cloud-init и кэшированные данные, а также подготовлена виртуальная машина для создания пользовательского образа.

sudo cloud-init clean --logs --seed

Отзыв и создание образа

Агент Linux может очистить некоторые из существующих метаданных образа с помощью шага "waagent -deprovision+user", однако после удаления вам также понадобится выполнить действия (как приведено ниже), чтобы удалить из агента любые другие конфиденциальные данные.

  • Удалите все существующие ключи узла ssh

    sudo rm /etc/ssh/ssh_host_*key*
    
  • Удалите учетную запись администратора

    sudo touch /var/run/utmp
    sudo userdel -f -r <admin_user_account>
    
  • Удалите пароль привилегированного пользователя

    sudo passwd -d root
    

Выполнив вышеуказанные действия, вы сможете создать пользовательский образ с помощью Azure CLI.

Создание обычного управляемого образа

az vm deallocate -g <resource_group> -n <vm_name>
az vm generalize -g <resource_group> -n <vm_name>
az image create -g <resource_group> -n <image_name> --source <vm_name>
az sig image-version create \
    -g $sigResourceGroup
    --gallery-name $sigName
    --gallery-image-definition $imageDefName
    --gallery-image-version 1.0.0
    --managed-image /subscriptions/00000000-0000-0000-0000-00000000xxxx/resourceGroups/imageGroups/providers/images/MyManagedImage

Создание виртуальной машины из образа, который не содержит агент Linux

При создании виртуальной машины из образа без агента Linux необходимо убедиться, что конфигурация развертывания виртуальной машины указывает на то, что на этой виртуальной машине не поддерживаются расширения.

Примечание.

Если этого не сделать, платформа попытается отправить конфигурацию расширения и время ожидания истечет через 40 минут.

Чтобы развернуть виртуальную машину с отключенными расширениями, можно использовать Azure CLI с параметром --enable-agent.

az vm create \
    --resource-group $resourceGroup \
    --name $prodVmName \
    --image RedHat:RHEL:8.1-ci:latest \
    --admin-username azadmin \
    --ssh-key-value "$sshPubkeyPath" \
    --enable-agent false

Или шаблоны Azure Resource Manager (ARM), задав значение "provisionVMAgent": false,.

"osProfile": {
    "computerName": "[parameters('virtualMachineName')]",
    "adminUsername": "[parameters('adminUsername')]",
    "linuxConfiguration": {
        "disablePasswordAuthentication": "true",
        "provisionVMAgent": false,
        "ssh": {
            "publicKeys": [
                {
                    "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]",
                    "keyData": "[parameters('adminPublicKey')]"

Следующие шаги

Подробнее см. в статье о подготовке Linux.