Condividi tramite


Disabilitare o rimuovere l'agente Linux dalle macchine virtuali e dalle immagini

Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili

Prima di rimuovere l'agente Linux, è necessario comprendere quale macchina virtuale non sarà in grado di eseguire dopo la rimozione dell'agente Linux.

Le estensioni della macchina virtuale di Azure sono piccole applicazioni che forniscono attività di automazione e configurazione post-distribuzione nelle macchine virtuali di Azure, le estensioni vengono installate e gestite dal piano di controllo di Azure. È il processo dell'agente Linux di Azure per elaborare i comandi dell'estensione della piattaforma e verificare lo stato corretto dell'estensione all'interno della macchina virtuale.

La piattaforma Azure ospita diverse estensioni, tra cui applicazioni di utilità, sicurezza, monitoraggio e configurazione delle VM. Esiste una vasta scelta di estensioni di prima e di terze parti, esempi di scenari chiave usati per le estensioni per:

  • Supporto di servizi di Azure di prima parte, ad esempio Backup di Azure, monitoraggio, crittografia dischi, sicurezza, replica del sito e altri.
  • Reimpostazioni ssh/password
  • Configurazione della macchina virtuale: esecuzione di script personalizzati, installazione di Chef, agenti Puppet e così via.
  • Prodotti di terze parti, ad esempio prodotti AV, strumenti di vulnerabilità delle macchine virtuali, strumenti di monitoraggio delle macchine virtuali e app.
  • Le estensioni possono essere aggregate con una nuova distribuzione di VM. Possono, ad esempio, fare parte di una distribuzione più ampia, in le applicazioni vengono configurate durante il provisioning della VM, o venire eseguite nei sistemi gestiti dalle estensioni supportate dopo la distribuzione.

Disabilitazione dell'elaborazione delle estensioni

Esistono diversi modi per disabilitare l'elaborazione delle estensioni, a seconda delle esigenze, ma prima di continuare, è necessario rimuovere tutte le estensioni distribuite nella macchina virtuale, ad esempio usando l'interfaccia della riga di comando di Azure, è possibile elencare ed eliminare:

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

Nota

Se non si esegue questa operazione, la piattaforma tenterà di inviare la configurazione dell'estensione e il timeout dopo 40 minuti.

Disabilitare nel piano di controllo

Se non si è certi se saranno necessarie estensioni in futuro, è possibile lasciare installato l'agente Linux nella macchina virtuale, quindi disabilitare la funzionalità di elaborazione delle estensioni dalla piattaforma. Questa opzione è disponibile in Microsoft.Compute versione 2018-06-01 API o successiva e non ha una dipendenza dalla versione dell'agente Linux installata.

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

È possibile riabilitare facilmente questa elaborazione dell'estensione dalla piattaforma, con il comando precedente, ma impostarla su "true".

Rimuovere l'agente Linux da una macchina virtuale in esecuzione

Assicurarsi di aver rimosso tutte le estensioni esistenti dalla macchina virtuale prima, come indicato in precedenza.

Passaggio 1: Rimuovere l'agente Linux di Azure

Se si rimuove solo l'agente Linux e non gli artefatti di configurazione associati, è possibile reinstallarlo in un secondo momento. Eseguire una delle operazioni seguenti, come radice, per rimuovere l'agente Linux di Azure:

Per Ubuntu 18.04+

sudo apt -y remove walinuxagent

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

sudo yum -y remove WALinuxAgent

Per SUSE 12.X, 15.X

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

Passaggio 2: (facoltativo) Rimuovere gli artefatti dell'agente Linux di Azure

Importante

È possibile rimuovere tutti gli artefatti associati dell'agente Linux, ma ciò significa che non è possibile reinstallarlo in un secondo momento. È quindi consigliabile disabilitare prima l'agente Linux, rimuovendo l'agente Linux solo usando l'unico.

Se si sa che non si reinstallerà di nuovo l'agente Linux, è possibile eseguire quanto segue:

Per 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

Per 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

Per 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

Preparazione di un'immagine senza l'agente Linux

Se si dispone di un'immagine che contiene già cloud-init e si vuole rimuovere l'agente Linux, ma si esegue comunque il provisioning usando cloud-init, eseguire i passaggi descritti nel passaggio 2 (e, facoltativamente, passaggio 3) come radice per rimuovere l'agente Linux di Azure e quindi il codice seguente rimuoverà la configurazione cloud-init e i dati memorizzati nella cache e preparerà la macchina virtuale per creare un'immagine personalizzata.

sudo cloud-init clean --logs --seed

Eseguire il deprovisioning e creare un'immagine

L'agente Linux ha la possibilità di pulire alcuni dei metadati dell'immagine esistenti, con il passaggio "waagent -deprovision+user", tuttavia, dopo che è stato rimosso, sarà necessario eseguire azioni come le seguenti e rimuovere eventuali altri dati sensibili da esso.

  • Rimuovere tutte le chiavi host SSH esistenti

    sudo rm /etc/ssh/ssh_host_*key*
    
  • Eliminare l'account amministratore

    sudo touch /var/run/utmp
    sudo userdel -f -r <admin_user_account>
    
  • Eliminare la password radice

    sudo passwd -d root
    

Dopo aver completato quanto sopra, è possibile creare l'immagine personalizzata usando l'interfaccia della riga di comando di Azure.

Creare un'immagine gestita regolare

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

Creazione di una macchina virtuale da un'immagine che non contiene un agente Linux

Quando si crea la macchina virtuale dall'immagine senza agente Linux, è necessario assicurarsi che la configurazione della distribuzione della macchina virtuale indichi che le estensioni non sono supportate in questa macchina virtuale.

Nota

Se non si esegue questa operazione, la piattaforma tenterà di inviare la configurazione dell'estensione e il timeout dopo 40 minuti.

Per distribuire la macchina virtuale con estensioni disabilitate, è possibile usare l'interfaccia della riga di comando di Azure con --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

In alternativa, è possibile eseguire questa operazione usando i modelli di Azure Resource Manager (ARM), impostando "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')]"

Passaggi successivi

Per altre informazioni, vedere Provisioning di Linux.