Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure tiene dos proveedores oficiales de Terraform: AzureRM y AzAPI. Ambos proveedores administran Azure recursos a través de Terraform, pero usan enfoques diferentes. Comprender estas diferencias le ayuda a elegir el proveedor adecuado (o combinación de proveedores) para el proyecto.
Información general de cada proveedor
AzureRM es el proveedor estándar para administrar recursos de Azure con Terraform. Proporciona bloques de recursos seleccionados y tipados con validación integrada, comportamiento coherente y documentación amplia de la comunidad. Sin embargo, AzureRM solo admite un subconjunto de tipos de recursos de Azure y versiones de API, y las nuevas características a menudo van con retraso respecto a las versiones de Azure.
AzAPI es una capa delgada sobre las API REST de Azure Resource Manager (ARM). Admite cualquier tipo de recurso de Azure en cualquier versión de API, incluidas las características y servicios en versión preliminar que aún no se admiten en AzureRM. AzAPI proporciona acceso directo a la API de ARM sin esperar a actualizaciones del proveedor.
Cuándo usar AzureRM
Use AzureRM como proveedor principal cuando:
- Los recursos que administra son totalmente compatibles con AzureRM con versiones de API estables.
- Quiere esquemas de recursos mantenidos con validación integrada y una buena compatibilidad con IDE.
- El equipo valora la amplia disponibilidad de los recursos de la comunidad, ejemplos y módulos.
- Está administrando servicios de Azure bien establecidos que no requieren acceso a características en versión preliminar.
AzureRM es el valor predeterminado adecuado para la mayoría de los equipos que se basan en Azure. Comience con AzureRM y complemente con AzAPI solo cuando sea necesario.
Cuándo usar AzAPI
Use AzAPI como proveedor principal (o para complementar AzureRM) cuando:
- Necesita administrar los recursos de Azure que aún no se admiten en AzureRM.
- Debe usar una versión de API específica, incluidas las versiones preliminares, que AzureRM no expone.
- Necesita acceso a las propiedades de recursos que AzureRM no expone.
- Quiere tener control total sobre la versión de la API por motivos de cumplimiento o reproducibilidad.
- Está administrando los recursos inmediatamente después del lanzamiento de Azure, antes de que AzureRM agregue soporte.
Cuándo usar ambos proveedores juntos
AzureRM y AzAPI están diseñados para trabajar en paralelo. Un patrón común es usar AzureRM para la mayoría de la infraestructura mientras usa AzAPI para el acceso directo a la API de ARM cuando sea necesario:
- Use
azapi_update_resourcepara establecer propiedades en recursos administrados por AzureRM que AzureRM no expone. - Use
azapi_resourcepara administrar un nuevo servicio o una característica en vista previa (GB) mientras que el resto de la pila usa AzureRM. - Use
azapi_resource_actionpara realizar operaciones en recursos administrados por AzureRM que no se ajusten a un ciclo de vida estándar de creación, lectura, actualización y eliminación.
# Manage the primary resource with AzureRM
resource "azurerm_kubernetes_cluster" "example" {
name = "my-aks"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
dns_prefix = "myaks"
default_node_pool {
name = "default"
node_count = 1
vm_size = "Standard_DS2_v2"
}
identity {
type = "SystemAssigned"
}
}
# Use AzAPI to set a property not exposed by AzureRM
resource "azapi_update_resource" "aks_preview_feature" {
type = "Microsoft.ContainerService/managedClusters@2024-02-01"
resource_id = azurerm_kubernetes_cluster.example.id
body = {
properties = {
networkProfile = {
networkDataplane = "cilium"
}
}
}
}
Elección de una estrategia a largo plazo
AzureRM-primary: administre todos los recursos de AzureRM y use AzAPI solo como puente temporal para las características que aún no se admiten. Migre los recursos de AzAPI a AzureRM a medida que la compatibilidad esté disponible mediante la aztfmigrate herramienta .
AzAPI-primary: administre todos los recursos a través de AzAPI para el control de versiones de API coherente y el acceso anticipado a las nuevas características. Este enfoque requiere más configuración, pero proporciona control total sobre la versión de API de cada recurso.
La mayoría de los equipos deben empezar con una estrategia principal de AzureRM y adoptar AzAPI según sea necesario.
Comparación de características
| Característica | AzureRM | AzAPI |
|---|---|---|
| Admite todos los tipos de recursos Azure | No: subconjunto curado | Sí |
| Admite versiones preliminares de la API | No | Sí |
| Esquemas de recursos curados | Sí | No |
| Validación de propiedades integrada | Sí | Parcial (a través de preflight) |
| Autocompletado del IDE para propiedades | Sí | Sí (con la extensión de VS Code) |
| Exportación de respuesta/filtrado de JMESPath | No | Sí |
| Administración de recursos del plano de datos | Sí | Sí (tipos de recursos seleccionados) |
| Funciones de proveedor para la construcción de identificadores | No | Sí (v2.0 y versiones posteriores) |
| Validación previa en el momento del plan | Sí (tipos de recursos seleccionados) | Sí—Habilitar la validación previa |