Características y extensiones de las máquinas virtuales para LinuxVirtual machine extensions and features for Linux

Las extensiones de máquina virtual de Azure son aplicaciones pequeñas que realizan tareas de automatización y configuración posterior a la implementación en máquinas virtuales de Azure.Azure virtual machine (VM) extensions are small applications that provide post-deployment configuration and automation tasks on Azure VMs. Por ejemplo, si una máquina virtual necesita que se instale software, protección antivirus o ejecutar un script en ella, se puede usar una extensión de máquina virtual.For example, if a virtual machine requires software installation, anti-virus protection, or to run a script inside of it, a VM extension can be used. Las extensiones de máquina virtual de Azure se pueden ejecutar con la CLI de Azure, PowerShell, plantillas de Azure Resource Manager y Azure Portal.Azure VM extensions can be run with the Azure CLI, PowerShell, Azure Resource Manager templates, and the Azure portal. Las extensiones se pueden empaquetar con la implementación de una máquina virtual nueva o se pueden ejecutar en cualquier sistema existente.Extensions can be bundled with a new VM deployment, or run against any existing system.

Este artículo proporciona información general sobre las extensiones de máquina virtual, requisitos previos para usar las extensiones de máquina virtual de Azure e instrucciones sobre cómo detectar, administrar y quitar extensiones de máquina virtual.This article provides an overview of VM extensions, prerequisites for using Azure VM extensions, and guidance on how to detect, manage, and remove VM extensions. Este artículo proporciona información generalizada porque muchas extensiones de máquina virtual están disponibles, cada una con una configuración potencialmente única.This article provides generalized information because many VM extensions are available, each with a potentially unique configuration. En cada documento específico de la extensión individual pueden encontrarse detalles específicos de extensión.Extension-specific details can be found in each document specific to the individual extension.

Casos de uso y ejemplosUse cases and samples

Varias extensiones de máquina virtual de Azure diferentes están disponibles, cada una con un caso de uso específico.Several different Azure VM extensions are available, each with a specific use case. Estos son algunos ejemplos:Some examples include:

Además de las extensiones específicas de proceso, una extensión de script personalizado está disponible tanto para máquinas virtuales Windows como para máquinas virtuales Linux.In addition to process-specific extensions, a Custom Script extension is available for both Windows and Linux virtual machines. La extensión de script personalizado para Linux permite que se ejecute cualquier script de Bash en una máquina virtual.The Custom Script extension for Linux allows any Bash script to be run on a VM. Los scripts personalizados resultan útiles para diseñar implementaciones de Azure que requieren una configuración más allá de lo que las herramientas de Azure nativas pueden proporcionar.Custom scripts are useful for designing Azure deployments that require configuration beyond what native Azure tooling can provide. Para obtener más información, consulte la sección sobre la extensión de script personalizado de máquina virtual Linux.For more information, see Linux VM Custom Script extension.

Requisitos previosPrerequisites

Para controlar la extensión en la máquina virtual, debe tener instalado el Agente Linux de Azure.To handle the extension on the VM, you need the Azure Linux Agent installed. Algunas extensiones individuales tienen requisitos previos, como el acceso a los recursos o las dependencias.Some individual extensions have prerequisites, such as access to resources or dependencies.

Agente de máquina virtual de AzureAzure VM agent

El agente de máquina virtual de Azure administra las interacciones entre una máquina virtual de Azure y el controlador de tejido de Azure.The Azure VM agent manages interactions between an Azure VM and the Azure fabric controller. El agente de máquina virtual es responsable de muchos aspectos funcionales de la implementación y administración de las máquinas virtuales de Azure, incluida la ejecución de extensiones de máquina virtual.The VM agent is responsible for many functional aspects of deploying and managing Azure VMs, including running VM extensions. El agente de máquina virtual de Azure está preinstalado en imágenes de Azure Marketplace y se puede instalar manualmente en sistemas operativos compatibles.The Azure VM agent is preinstalled on Azure Marketplace images, and can be installed manually on supported operating systems. El agente de máquina virtual de Azure para Linux se conoce como el agente Linux.The Azure VM Agent for Linux is known as the Linux agent.

Para obtener información sobre las instrucciones de instalación y los sistemas operativos compatibles, consulte Agente de máquina virtual de Azure.For information on supported operating systems and installation instructions, see Azure virtual machine agent.

Versiones de agente compatiblesSupported agent versions

Para brindar la mejor experiencia posible, se requieren versiones mínimas del agente.In order to provide the best possible experience, there are minimum versions of the agent. Para obtener más información, consulte este artículo.For more information, see this article.

Sistemas operativos compatiblesSupported OSes

El agente Linux se ejecuta en varios sistemas operativos, pero el marco de las extensiones tiene un límite para los sistemas operativos de esas extensiones.The Linux agent runs on multiple OSes, however the extensions framework has a limit for the OSes that extensions. Para obtener más información, consulte este artículo.For more information, see this article.

Algunas extensiones no son compatibles con todos los sistemas operativos y puede aparecer el código de error 51, "Sistema operativo no compatible" .Some extensions are not supported across all OSes and may emit Error Code 51, 'Unsupported OS'. Revise la documentación de cada una de las extensiones para información sobre la compatibilidad.Check the individual extension documentation for supportability.

Acceso de redNetwork access

Los paquetes de extensiones se descargan del repositorio de extensiones de Azure Storage y las cargas de estado de las extensiones se publican en Azure Storage.Extension packages are downloaded from the Azure Storage extension repository, and extension status uploads are posted to Azure Storage. Si usa una versión compatible de los agentes, no necesita autorizar el acceso a Azure Storage en la región de la máquina virtual, porque puede usar el agente para redirigir la comunicación al controlador de tejido de Azure para las comunicaciones de los agentes.If you use supported version of the agents, you do not need to allow access to Azure Storage in the VM region, as can use the agent to redirect the communication to the Azure fabric controller for agent communications. Si usa una versión no compatible del agente, deberá autorizar el acceso de salida a Azure Storage en esa región desde la máquina virtual.If you are on a non-supported version of the agent, you need to allow outbound access to Azure storage in that region from the VM.

Importante

Si bloqueó el acceso a 168.63.129.16 con el firewall invitado, las extensiones generarán un error con independencia de lo mencionado anteriormente.If you have blocked access to 168.63.129.16 using the guest firewall, then extensions fail irrespective of the above.

Los agentes solo se pueden usar para descargar los paquetes de extensiones e informar el estado.Agents can only be used to download extension packages and reporting status. Por ejemplo, si la instalación de una extensión requiere descargar un script de GitHub (script personalizado) o necesita acceso a Azure Storage (Azure Backup), se deben abrir puertos adicionales del firewall o del grupo de seguridad de red.For example, if an extension install needs to download a script from GitHub (Custom Script) or needs access to Azure Storage (Azure Backup), then additional firewall/Network Security Group ports need to be opened. Distintas extensiones tienen distintos requisitos, porque son aplicaciones por sí mismas.Different extensions have different requirements, since they are applications in their own right. En el caso de las extensiones que requieren acceso a Azure Storage, puede permitir el acceso mediante las etiquetas del servicio NSG de Azure para Storage.For extensions that require access to Azure Storage, you can allow access using Azure NSG Service Tags for Storage.

Para redirigir las solicitudes de tráfico del agente, el agente Linux es compatible con el servidor proxy.To redirect agent traffic requests, the Linux Agent has proxy server support. Sin embargo, esta compatibilidad con el servidor proxy no se aplica a las extensiones.However, this proxy server support does not apply extensions. Debe configurar cada extensión individual para que funcione con un servidor proxy.You must configure each individual extension to work with a proxy.

Detección de extensiones de máquina virtualDiscover VM extensions

Hay muchas extensiones de máquina virtual diferentes disponibles para su uso con máquinas virtuales de Azure.Many different VM extensions are available for use with Azure VMs. Para ver una lista completa, use az vm extension image list.To see a complete list, use az vm extension image list. En el ejemplo siguiente se muestran todas las extensiones disponibles en la ubicación westus:The following example lists all available extensions in the westus location:

az vm extension image list --location westus --output table

Ejecución de extensiones de máquina virtualRun VM extensions

Las extensiones de máquinas virtuales de Azure se ejecutan en máquinas virtuales existentes, lo que resulta útil si es preciso realizar cambios de configuración o recuperar la conectividad en una máquina virtual ya implementada.Azure VM extensions run on existing VMs, which is useful when you need to make configuration changes or recover connectivity on an already deployed VM. Las extensiones de máquina virtual también pueden agruparse con las implementaciones de plantilla de Azure Resource Manager.VM extensions can also be bundled with Azure Resource Manager template deployments. Al usar las extensiones con plantillas de Resource Manager, las máquinas virtuales de Azure se pueden implementar y configurar sin intervención alguna después de la implementación.By using extensions with Resource Manager templates, Azure VMs can be deployed and configured without post-deployment intervention.

Los métodos siguientes pueden usarse para ejecutar una extensión en una máquina virtual existente.The following methods can be used to run an extension against an existing VM.

Azure CLIAzure CLI

Las extensiones de máquina virtual de Azure se pueden ejecutar en una máquina virtual existente con el comando az vm extension set.Azure VM extensions can be run against an existing VM with the az vm extension set command. En el ejemplo siguiente se ejecuta la extensión de script personalizado en una máquina virtual denominada myVM en un grupo de recursos con el nombre myResourceGroup.The following example runs the Custom Script extension against a VM named myVM in a resource group named myResourceGroup. Reemplace los nombres de ejemplo del grupo de recursos, la máquina virtual y el script que se va a ejecutar (https://raw.githubusercontent.com/me/project/hello.sh) por su propia información.Replace the example resource group name, VM name and script to run (https://raw.githubusercontent.com/me/project/hello.sh) with your own information.

az vm extension set `
  --resource-group myResourceGroup `
  --vm-name myVM `
  --name customScript `
  --publisher Microsoft.Azure.Extensions `
  --settings '{"fileUris": ["https://raw.githubusercontent.com/me/project/hello.sh"],"commandToExecute": "./hello.sh"}'

Cuando la extensión se ejecuta correctamente, la salida es similar al ejemplo siguiente:When the extension runs correctly, the output is similar to the following example:

info:    Executing command vm extension set
+ Looking up the VM "myVM"
+ Installing extension "CustomScript", VM: "mvVM"
info:    vm extension set command OK

Azure portalAzure portal

Las extensiones de máquina virtual se pueden aplicar a una máquina virtual existente a través de Azure Portal.VM extensions can be applied to an existing VM through the Azure portal. Seleccione la máquina virtual en el portal, elija Extensiones y, luego, Agregar.Select the VM in the portal, choose Extensions, then select Add. Elija la extensión que quiera en la lista de extensiones disponibles y siga las instrucciones del asistente.Choose the extension you want from the list of available extensions and follow the instructions in the wizard.

En la siguiente imagen se muestra la instalación de la extensión de script personalizado de Linux desde Azure Portal:The following image shows the installation of the Linux Custom Script extension from the Azure portal:

Instalar la extensión de script personalizado

Plantillas del Administrador de recursos de AzureAzure Resource Manager templates

Las extensiones de máquina virtual se pueden agregar a una plantilla de Azure Resource Manager y ejecutar con la implementación de la plantilla.VM extensions can be added to an Azure Resource Manager template and executed with the deployment of the template. Al implementar una extensión con una plantilla, puede crear implementaciones de Azure completamente configuradas.When you deploy an extension with a template, you can create fully configured Azure deployments. Por ejemplo, el siguiente JSON procede de una plantilla de Resource Manager que implementa un conjunto de máquinas virtuales de carga equilibrada y Azure SQL Database y, a continuación, instala una aplicación .NET Core en cada VM.For example, the following JSON is taken from a Resource Manager template that deploys a set of load-balanced VMs and Azure SQL Database, then installs a .NET Core application on each VM. La extensión de máquina virtual se encarga de la instalación de software.The VM extension takes care of the software installation.

Para obtener más información, consulte la plantilla de Resource Manager completa.For more information, see the full Resource Manager template.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.0",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
    }
}

Para más información sobre como crear plantillas de Resource Manager, consulte el artículo sobre la creación de plantillas de Azure Resource Manager.For more information on creating Resource Manager templates, see Authoring Azure Resource Manager templates.

Protección de datos de extensión de máquina virtualSecure VM extension data

Cuando ejecuta una extensión de máquina virtual, puede que sea necesario incluir información confidencial como credenciales, nombres de cuenta de almacenamiento y claves de acceso de cuenta de almacenamiento.When you run a VM extension, it may be necessary to include sensitive information such as credentials, storage account names, and storage account access keys. Muchas extensiones de máquina virtual incluyen una configuración protegida que cifra datos y los descifra solo dentro de la máquina virtual de destino.Many VM extensions include a protected configuration that encrypts data and only decrypts it inside the target VM. Cada extensión tiene un esquema específico de configuración protegida que se detalla de forma individual en la documentación específica de extensión.Each extension has a specific protected configuration schema, and each is detailed in extension-specific documentation.

En el ejemplo siguiente se muestra una instancia de la extensión de script personalizado para Linux.The following example shows an instance of the Custom Script extension for Linux. El comando que se ejecutará incluye un conjunto de credenciales.The command to execute includes a set of credentials. En este ejemplo, el comando que se ejecutará no está cifrado:In this example, the command to execute is not encrypted:

{
  "apiVersion": "2015-06-15",
  "type": "extensions",
  "name": "config-app",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.0",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ],
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

Al moverse la propiedad command to execute a la configuración protegida, se protege la cadena de ejecución tal como se muestra en el ejemplo siguiente:Moving the command to execute property to the protected configuration secures the execution string, as shown in the following example:

{
  "apiVersion": "2015-06-15",
  "type": "extensions",
  "name": "config-app",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.0",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ]
    },
    "protectedSettings": {
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

¿Cómo se actualizan los agentes y las extensiones?How do agents and extensions get updated?

Los agentes y las extensiones comparten el mismo mecanismo de actualización.The Agents and Extensions share the same update mechanism. Algunas actualizaciones no necesitan reglas adicionales de firewall.Some updates do not require additional firewall rules.

Cuando hay disponible una actualización, solo se instala en la máquina virtual cuando se produce un cambio en las extensiones y otros cambios del modelo de máquina virtual, como:When an update is available, it is only installed on the VM when there is a change to extensions, and other VM Model changes such as:

  • Discos de datos.Data disks
  • ExtensionesExtensions
  • Contenedor de diagnósticos de arranqueBoot diagnostics container
  • Secretos del sistema operativo invitadoGuest OS secrets
  • Tamaño de VMVM size
  • Perfil de redNetwork profile

Los publicadores hacen que las actualizaciones estén disponibles en distintos momentos en las diferentes regiones, por lo que es posible que tenga máquinas virtuales en distintas regiones con versiones diferentes.Publishers make updates available to regions at different times, so it is possible you can have VMs in different regions on different versions.

Actualizaciones del agenteAgent updates

El agente de máquina virtual Linux contiene código de aprovisionamiento del agente y código de administración de extensiones en un solo paquete que no se puede separar.The Linux VM Agent contains Provisioning Agent Code and Extension Handling code in one package, which cannot be separated. Puede deshabilitar el agente de aprovisionamiento cuando quiera aprovisionar en Azure con cloud-init.You can disable the Provisioning Agent when you want to provision on Azure using cloud-init. Para hacerlo, consulte cómo usar cloud-init.To do this, see using cloud-init.

Las versiones compatibles de los agentes pueden usar actualizaciones automáticas.Supported versions of the Agents can use automatic updates. El único código que se puede actualizar es el código de administración de extensiones y no el código de aprovisionamiento.The only code that can be updated is the Extension Handling code, not the provisioning code. El código de aprovisionamiento del agente solo se ejecuta una vez.The Provisioning Agent code is run-once code.

El código de administración de extensiones es responsable de comunicarse con el tejido de Azure y administrar las operaciones de extensiones de máquinas virtuales como las instalaciones, informar el estado, actualizar las extensiones individuales y quitarlas.The Extension Handling code is responsible for communicating with the Azure fabric, and handling the VM extensions operations such as installs, reporting status, updating the individual extensions, and removing them. Las actualizaciones contienen revisiones de seguridad, correcciones de errores y mejoras en el código de administración de extensiones.Updates contain security fixes, bug fixes, and enhancements to the Extension Handling code.

Cuando se instala el agente, se crea un demonio primario.When the agent is installed, a parent daemon is created. Este proceso primario luego genera un proceso secundario que se usa para administrar las extensiones.This parent then spawns a child process that is used to handle extensions. Si hay disponible una actualización para el agente, se descarga, el proceso primario detiene el secundario, lo actualiza y lo reinicia.If an update is available for the agent, it is downloaded, the parent stops the child process, upgrades it, then restarts it. Si se produce un problema con la actualización, el proceso primario revierte el proceso secundario a su versión anterior.Should there be a problem with the update, the parent process rolls back to the previous child version.

El proceso primario no se puede actualizar automáticamente.The parent process cannot be auto updated. El proceso primario solo se puede actualizar mediante la actualización de un paquete de distribución.The parent can only be updated by a distro package update.

Para comprobar qué versión ejecuta, compruebe waagent de la siguiente manera:To check what version you are running, check the waagent as follows:

waagent --version

La salida es similar a la del ejemplo siguiente:The output is similar to the following example:

WALinuxAgent-2.2.17 running on ubuntu 16.04
Python: 3.5.2
Goal state agent: 2.2.18

En la salida del ejemplo anterior, el proceso primario o la "versión implementada del paquete" es WALinuxAgent-2.2.17.In the preceding example output, the parent or 'package deployed version' is WALinuxAgent-2.2.17

"Goal state agent" es la versión de actualización automática.The 'Goal state agent' is the auto update version.

Se recomienda que siempre tenga activada la actualización automática del agente, AutoUpdate.Enabled=y.It is highly recommended that you always have auto update for the agent, AutoUpdate.Enabled=y. Si no tiene habilitada esta opción, debe seguir actualizando de manera manual el agente y así no recibirá las correcciones de errores y de seguridad.Not having this enabled means you need to keep manually updating the agent, and not get bug and security fixes.

Actualizaciones de extensionesExtension updates

Cuando hay disponible una actualización de extensión, el agente Linux la descarga y actualiza.When an extension update is available, the Linux Agent downloads and upgrades the extension. Las actualizaciones de extensiones automáticas son secundarias o revisiones.Automatic extension updates are either Minor or Hotfix. Puede decidir si desea recibir o no las actualizaciones secundarias de las extensiones cuando aprovisiona la extensión.You can opt in or opt out of extensions Minor updates when you provision the extension. En el ejemplo siguiente se muestra cómo actualizar automáticamente las versiones secundarias en una plantilla de Resource Manager con autoUpgradeMinorVersion": true,' :The following example shows how to automatically upgrade minor versions in a Resource Manager template with autoUpgradeMinorVersion": true,':

    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.0",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },

Para obtener las correcciones de errores secundarias más recientes, se recomienda encarecidamente que siempre seleccione la actualización automática en las implementaciones de sus extensiones.To get the latest minor release bug fixes, it is highly recommended that you always select auto update in your extension deployments. No es posible optar por no recibir actualizaciones de revisiones que incluyen correcciones de errores clave o revisiones de seguridad.Hotfix updates that carry security or key bug fixes cannot be opted out.

Identificación de las actualizaciones de extensionesHow to identify extension updates

Identificación de si la extensión tiene establecida la opción autoUpgradeMinorVersion en una máquina virtualIdentifying if the extension is set with autoUpgradeMinorVersion on a VM

En el modelo de la máquina virtual puede ver si la extensión se aprovisionó con "autoUpgradeMinorVersion".You can see from the VM model if the extension was provisioned with 'autoUpgradeMinorVersion'. Para comprobarlo, use az vm show y proporcione el nombre de la máquina virtual y el grupo de recursos como se indica a continuación:To check, use az vm show and provide the resource group and VM name as follows:

az vm show --resource-group myResourceGroup --name myVM

La salida del ejemplo siguiente muestra que la opción autoUpgradeMinorVersion está establecida en true:The following example output shows that autoUpgradeMinorVersion is set to true:

  "resources": [
    {
      "autoUpgradeMinorVersion": true,
      "forceUpdateTag": null,
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/extensions/CustomScriptExtension",

Identificación de cuando se produce un evento de autoUpgradeMinorVersionIdentifying when an autoUpgradeMinorVersion occurred

Para ver cuando se produce una actualización de la extensión, revise los registros del agente de la máquina virtual en /var/log/waagent.log.To see when an update to the extension occurred, review the agent logs on the VM at /var/log/waagent.log.

En el ejemplo anterior, la máquina virtual tenía instalada Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025.In the example below, the VM had Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025 installed. Hubo disponible una revisión para Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027:A hotfix was available to Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027:

INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Expected handler state: enabled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Decide which version to use
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Use version: 2.3.9027
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Current handler state is: NotInstalled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Download extension package
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Unpack extension package
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Download, message=Download succeeded
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Initialize extension directory
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update settings file: 0.settings
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Disable extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Launch command:diagnostic.py -disable
...
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Disable, message=Launch command succeeded: diagnostic.py -disable
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Launch command:diagnostic.py -update
2017/08/14 20:21:57 LinuxAzureDiagnostic started to handle.

Permisos del agenteAgent permissions

Para realizar sus tareas, el agente se debe ejecutar como raíz.To perform its tasks, the agent needs to run as root.

Solución de problemas de extensiones de máquina virtualTroubleshoot VM extensions

Cada extensión de máquina virtual puede tener unos pasos de solución de problemas específicos de la extensión.Each VM extension may have troubleshooting steps specific to the extension. Por ejemplo, cuando usa la extensión de script personalizado, se pueden encontrar detalles de ejecución de script localmente en la máquina virtual donde se ejecutó la extensión.For example, when you use the Custom Script extension, script execution details can be found locally on the VM where the extension was run. Todos los pasos de solución de problemas específicos de extensión aparecen detallados en la documentación específica de extensión.Any extension-specific troubleshooting steps are detailed in extension-specific documentation.

Los pasos de solución de problemas siguientes se aplican a todas las extensiones de máquina virtual.The following troubleshooting steps apply to all VM extensions.

  1. Para comprobar el registro del agente Linux, examine la actividad cuando la extensión se aprovisionó en /var/log/waagent.log.To check the Linux Agent Log, look at the activity when your extension was being provisioned in /var/log/waagent.log

  2. Revise los registros reales de la extensión para ver más detalles en /var/log/azure/<extensionName> .Check the actual extension logs for more details in /var/log/azure/<extensionName>

  3. Revise las secciones de solución de problemas de la documentación específica de la extensión para ver los códigos de errores, los problemas conocidos, etc.Check extension-specific documentation troubleshooting sections for error codes, known issues etc.

  4. Examine los registros del sistema.Look at the system logs. Compruebe si hay otras operaciones que puedan haber interferido con la extensión, como una instalación de ejecución prolongada de otra aplicación que requería acceso exclusivo al administrador de paquetes.Check for other operations that may have interfered with the extension, such as a long running installation of another application that required exclusive package manager access.

Motivos comunes para los errores de extensionesCommon reasons for extension failures

  1. Las extensiones tienen 20 minutos para ejecutarse (las excepciones son las extensiones CustomScript, Chef y DSC que tienen 90 minutos).Extensions have 20 mins to run (exceptions are the CustomScript extensions, Chef, and DSC that have 90 mins). Si la implementación supera este tiempo, se marca como tiempo de expiración.If your deployment exceeds this time, it is marked as a timeout. La causa de esto puede deberse a máquinas virtuales de bajos recursos, otras tareas de inicio y configuraciones de máquinas virtuales que consumen grandes cantidades de recursos mientras la extensión intenta realizar el aprovisionamiento.The cause of this can be due to low resource VMs, other VM configurations/start up tasks consuming high amounts of resource whilst the extension is trying to provision.

  2. No se cumplen los requisitos previos mínimos.Minimum prerequisites not met. Algunas extensiones tienen dependencias de las SKU de la máquina virtual, como las imágenes de HPC.Some extensions have dependencies on VM SKUs, such as HPC images. Las extensiones pueden requerir ciertos requisitos de acceso de red, como comunicaciones con Azure Storage o servicios públicos.Extensions may require certain networking access requirements, such as communicating to Azure Storage or public services. Otros ejemplos podrían ser el acceso a repositorios de paquetes, quedarse sin espacio en disco o restricciones de seguridad.Other examples could be access to package repositories, running out of disk space, or security restrictions.

  3. Acceso exclusivo al administrador de paquetes.Exclusive package manager access. En algunos casos, podría encontrar un conflicto entre la configuración de máquina virtual de ejecución prolongada y la instalación de la extensión, donde ambas necesitan acceso exclusivo al administrador de paquetes.In some cases, you may encounter a long running VM configuration and extension installation conflicting, where they both need exclusive access to the package manager.

Consulta del estado de la extensiónView extension status

Después de que una extensión de máquina virtual se ejecuta en una máquina virtual, use az vm get-instance-view para devolver el estado de la extensión como se indica a continuación:After a VM extension has been run against a VM, use az vm get-instance-view to return extension status as follows:

az vm get-instance-view \
    --resource-group rgName \
    --name myVM \
    --query "instanceView.extensions"

La salida es similar a la salida del ejemplo siguiente:The output is similar to the following example output:

  {
    "name": "customScript",
    "statuses": [
      {
        "code": "ProvisioningState/failed/0",
        "displayStatus": "Provisioning failed",
        "level": "Error",
        "message": "Enable failed: failed to execute command: command terminated with exit status=127\n[stdout]\n\n[stderr]\n/bin/sh: 1: ech: not found\n",
        "time": null
      }
    ],
    "substatuses": null,
    "type": "Microsoft.Azure.Extensions.customScript",
    "typeHandlerVersion": "2.0.6"
  }

El estado de ejecución de extensión también puede encontrarse en Azure Portal.Extension execution status can also be found in the Azure portal. Para ver el estado de una extensión, seleccione la máquina virtual, elija Extensiones y seleccione la extensión deseada.To view the status of an extension, select the VM, choose Extensions, then select the desired extension.

Repetición de ejecución de una extensión de máquina virtualRerun a VM extension

Puede haber casos en los que sea necesario volver a ejecutar una extensión de máquina virtual.There may be cases in which a VM extension needs to be rerun. Puede volver ejecutar la extensión si la quita y la vuelve a ejecutar con un método de ejecución de su elección.You can rerun an extension by removing it, and then rerunning the extension with an execution method of your choice. Para quitar una extensión, use az vm extension delete como se indica a continuación:To remove an extension, use az vm extension delete as follows:

az vm extension delete \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name customScript

También puede quitar una extensión en Azure Portal como se indica a continuación:You can also remove an extension in the Azure portal as follows:

  1. Seleccione una máquina virtual.Select a VM.
  2. Elija Extensiones.Choose Extensions.
  3. Seleccione la extensión deseada.Select the desired extension.
  4. Elija Desinstalar.Choose Uninstall.

Referencia de extensión de máquina virtual comúnCommon VM extension reference

Nombre de la extensiónExtension name DescripciónDescription Más informaciónMore information
Extensión de script personalizado para LinuxCustom Script extension for Linux Ejecución de scripts en una máquina virtual de AzureRun scripts against an Azure virtual machine Extensión de script personalizado para LinuxCustom Script extension for Linux
Extensión de acceso a máquina virtualVM Access extension Repetición de obtención de acceso a una máquina virtual de AzureRegain access to an Azure virtual machine Extensión de acceso a máquina virtualVM Access extension
Extensión de Diagnósticos de AzureAzure Diagnostics extension Administración de Diagnósticos de AzureManage Azure Diagnostics Extensión de Diagnósticos de AzureAzure Diagnostics extension
Extensión de acceso a máquina virtual de AzureAzure VM Access extension Administración de usuarios y credencialesManage users and credentials Extensión de acceso a máquina virtual para LinuxVM Access extension for Linux

Pasos siguientesNext steps

Para más información sobre las extensiones de máquina virtual, consulte Características y extensiones de las máquinas virtuales de Azure.For more information about VM extensions, see Azure virtual machine extensions and features overview.