Desativar ou remover o Agente Linux de VMs e imagens

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível

Antes de remover o Agente Linux, você deve entender o que a VM não poderá fazer depois que o Agente Linux for removido.

As extensões de máquina virtual (VM) do Azure são pequenos aplicativos que fornecem tarefas de configuração e automação pós-implantação em VMs do Azure, as extensões são instaladas e gerenciadas pelo plano de controle do Azure. É tarefa do Agente Linux do Azure processar os comandos de extensão de plataforma e garantir o estado correto da extensão dentro da VM.

A plataforma Azure hospeda muitas extensões que vão desde configuração de VM, monitoramento, segurança e aplicativos utilitários. Há uma grande variedade de extensões próprias e de terceiros, exemplos de cenários-chave para os quais as extensões são usadas:

  • Suporte a serviços primários do Azure, como Backup do Azure, Monitoramento, Criptografia de Disco, Segurança, Replicação de Site e outros.
  • SSH / Redefinições de senha
  • Configuração de VM - Executando scripts personalizados, instalando Chef, agentes Puppet etc.
  • Produtos de terceiros, como produtos AV, ferramentas de vulnerabilidade de VM, ferramentas de monitoramento de VM e aplicativos.
  • As extensões podem ser agrupadas com uma nova implantação de VM. Por exemplo, eles podem fazer parte de uma implantação maior, configurar aplicativos no provisionamento de VM ou ser executados em qualquer sistema operado por extensão suportado após a implantação.

Desativando o processamento de extensão

Há várias maneiras de desabilitar o processamento de extensão, dependendo de suas necessidades, mas antes de continuar, você DEVE remover todas as extensões implantadas na VM, por exemplo, usando a CLI do Azure, você pode listar e excluir:

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

Nota

Se você não fizer o acima, a plataforma tentará enviar a configuração da extensão e o tempo limite após 40min.

Desativar no plano de controle

Se você não tiver certeza se precisará de extensões no futuro, você pode deixar o Agente Linux instalado na VM e, em seguida, desativar a capacidade de processamento de extensões da plataforma. Esta opção está disponível na Microsoft.Compute versão 2018-06-01 api ou superior, e não tem uma dependência da versão do Linux Agent instalada.

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

Você pode facilmente reativar esse processamento de extensão da plataforma, com o comando acima, mas defini-lo como 'true'.

Remover o Agente Linux de uma VM em execução

Certifique-se de ter removido todas as extensões existentes da VM antes, conforme descrito acima.

Etapa 1: Remover o Agente Linux do Azure

Se você apenas remover o Agente Linux, e não os artefatos de configuração associados, poderá reinstalar em uma data posterior. Execute um dos seguintes, como root, para remover o Agente Linux do Azure:

Para Ubuntu 18.04+

sudo apt -y remove walinuxagent

Para Redhat 7.X, 8.X e 9.X

sudo yum -y remove WALinuxAgent

Para SUSE 12.X, 15.X

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

Etapa 2: (Opcional) Remover os artefatos do Agente Linux do Azure

Importante

Você pode remover todos os artefatos associados do Agente Linux, mas isso significa que você não pode reinstalá-lo em uma data posterior. Portanto, é altamente recomendável que você considere desativar o Agente Linux primeiro, removendo o Agente Linux usando apenas o acima.

Se você sabe que nunca mais reinstalará o Agente Linux, então você pode executar o seguinte:

Para 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

Para 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

Para 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

Preparando uma imagem sem o Agente Linux

Se você tiver uma imagem que já contém cloud-init e quiser remover o agente Linux, mas ainda provisionar usando cloud-init, execute as etapas na Etapa 2 (e, opcionalmente, na Etapa 3) como root para remover o Agente Linux do Azure e, em seguida, o seguinte removerá a configuração cloud-init e os dados armazenados em cache e preparará a VM para criar uma imagem personalizada.

sudo cloud-init clean --logs --seed

Desprovisionar e criar uma imagem

O Agente Linux tem a capacidade de limpar alguns dos metadados de imagem existentes, com a etapa "waagent -deprovision+user", no entanto, depois de ter sido removido, você precisará executar ações como as abaixo, e remover quaisquer outros dados confidenciais dele.

  • Remova todas as chaves de host ssh existentes

    sudo rm /etc/ssh/ssh_host_*key*
    
  • Excluir a conta de administrador

    sudo touch /var/run/utmp
    sudo userdel -f -r <admin_user_account>
    
  • Exclua a senha de root

    sudo passwd -d root
    

Depois de concluir o procedimento acima, você pode criar a imagem personalizada usando a CLI do Azure.

Criar uma imagem gerenciada regular

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

Criando uma VM a partir de uma imagem que não contém um agente Linux

Ao criar a VM a partir da imagem sem agente Linux, você precisa garantir que a configuração de implantação da VM indique que as extensões não são suportadas nessa VM.

Nota

Se você não fizer o acima, a plataforma tentará enviar a configuração da extensão e o tempo limite após 40min.

Para implantar a VM com extensões desabilitadas, você pode usar a CLI do Azure com --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

Como alternativa, você pode fazer isso usando modelos do Azure Resource Manager (ARM), definindo "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')]"

Próximos passos

Para obter mais informações, consulte Provisionamento do Linux.