Todos los productos
Search
Centro de documentos

Elastic Compute Service:Terraform reference

Última actualización: Sep 02, 2026

Terraform es una herramienta de infraestructura como código (IaC) de código abierto que permite a los desarrolladores definir y gestionar configuraciones de infraestructura mediante un lenguaje declarativo. Terraform ofrece una forma sencilla de crear, modificar o eliminar recursos de Elastic Compute Service (ECS). Este enfoque reduce la complejidad y los errores de las operaciones manuales, además de mejorar la gestión y el mantenimiento de su infraestructura. Este tema describe cómo instalar y configurar Terraform, y cómo utilizarlo para crear una instancia ECS.

Funciones básicas de Terraform

Terraform es una herramienta de automatización y orquestación de infraestructura de TI que permite usar código para gestionar y mantener recursos de TI. Para obtener más información, consulte What is Terraform?.

  • La interfaz de línea de comandos (CLI) de Terraform proporciona una manera sencilla de desplegar archivos de configuración en Alibaba Cloud u otras nubes compatibles, así como de gestionar sus versiones. Puede definir su infraestructura, como máquinas virtuales, cuentas de almacenamiento e interfaces de red, en archivos de configuración que describen la topología de sus recursos en la nube.

  • Terraform admite nueva infraestructura a través de proveedores. Esto le permite definir, previsualizar y desplegar fácilmente infraestructura en la nube en Alibaba Cloud mediante un lenguaje de plantillas simple.

  • Puede utilizar Terraform para crear, modificar y eliminar recursos de varios servicios de Alibaba Cloud.

Para obtener más información sobre la integración de Alibaba Cloud y Terraform, consulte Alibaba Cloud Provider.

Instalación de Terraform

Cloud Shell

Alibaba Cloud Shell es un producto gratuito de operaciones y mantenimiento (O&M) que incluye Terraform preinstalado. Puede ejecutar comandos de Terraform directamente en Cloud Shell.

Primero, asegúrese de contar con una cuenta de Alibaba Cloud válida y con los permisos necesarios.

A continuación, abra su navegador y vaya a la URL de Cloud Shell: https://shell.alibabacloud.com.

Después de iniciar sesión, ejecute el siguiente comando.

terraform

La salida muestra que Terraform está integrado en Cloud Shell y listo para usarse.

image

Para obtener más información sobre cómo usar Cloud Shell, consulte Use Cloud Shell.

Instalación manual

Uso de un paquete precompilado

Vaya al sitio web oficial de Terraform. Busque y descargue el paquete ZIP correspondiente a su sistema operativo.

Una vez completada la descarga, descomprima el paquete en /usr/local/bin. Después de copiarlo, puede eliminar los demás archivos sin afectar la ejecución de Terraform.

Finalmente, asegúrese de que el directorio de Terraform se haya agregado a la variable de entorno PATH. Este proceso varía según su sistema operativo.

Windows

  1. Vaya a Panel de control > Sistema > Configuración avanzada del sistema > Variables de entorno.

  2. En Variables del sistema, desplácese hacia abajo hasta encontrar PATH.

  3. Haga clic en Editar y realice los cambios necesarios.

  4. Asegúrese de agregar un punto y coma para separar las entradas. Por ejemplo: c:\path;c:\path2

  5. Inicie una nueva consola para que los cambios surtan efecto.

Para obtener más información, consulte Definir una ruta global en Windows.

macOS o Linux

Imprima su configuración de PATH.

echo $PATH

Mueva el archivo binario de Terraform a una de las ubicaciones listadas. Este comando asume que el archivo binario se encuentra en su carpeta de Descargas y que su PATH incluye /usr/local/bin. Personalice los directorios en el comando si sus ubicaciones son diferentes.

mv ~/Downloads/terraform /usr/local/bin/

Para obtener más información, consulte:

Uso del código fuente

Si desea compilar el archivo binario desde el código fuente, clone el repositorio de HashiCorp Terraform.

git clone https://github.com/hashicorp/terraform.git

Verá información de progreso. Espere a que finalice el proceso.

image

Después de ejecutar el comando, se crea un nuevo directorio llamado terraform en su directorio actual. Use el comando cd para ingresar a este directorio.

cd terraform

Luego, ejecute el comando de instalación para compilar el directorio y mover el paquete compilado al directorio $GOPATH/bin/terraform.

go install

La siguiente información indica que la compilación está en curso. Espere a que termine el proceso antes de continuar.

image

Nota: Si aparece el mensaje "zsh: command not found: go", debe instalar el entorno Go.

Finalmente, asegúrese de que el directorio de Terraform esté en el PATH de su sistema. El método para establecer el PATH depende de su sistema operativo.

macOS o Linux

Imprima la configuración de PATH

echo $PATH

Mueva el archivo binario de Terraform a un directorio dentro de su PATH. El siguiente comando asume que el archivo binario está en su carpeta de Descargas y que su PATH incluye /usr/local/bin. Si su configuración es diferente, personalice los directorios en el comando.

mv ~/Downloads/terraform /usr/local/bin/

Para obtener más información, consulte:

Windows

  1. Vaya a Panel de control > Sistema > Configuración del sistema > Variables de entorno.

  2. En la sección Variables del sistema, desplácese hacia abajo para encontrar la variable PATH.

  3. Haga clic en Editar y realice los cambios necesarios.

  4. Use un punto y coma para separar las entradas, por ejemplo: c:\path;c:\path2

  5. Abra una nueva consola para que los cambios surtan efecto.

Para obtener más información, consulte Definir una ruta global en Windows.

macOS Homebrew

Homebrew es una herramienta popular de instalación de paquetes para macOS. Puede usar Homebrew para instalar Terraform con comandos simples.

Paso 1. Instale el tap de HashiCorp, que es un repositorio para todos los paquetes de HashiCorp en Homebrew.

brew tap hashicorp/tap

Paso 2. Ejecute el comando install para instalar Terraform.

brew install hashicorp/tap/terraform
Importante

El comando install indexa e instala la versión más reciente. Si desea actualizar a la última versión posteriormente, puede ejecutar el comando upgrade.

Para actualizar a la versión más reciente de Terraform, primero debe actualizar Homebrew.

brew update

Luego, ejecute el comando upgrade para actualizar a la versión más reciente.

brew upgrade hashicorp/tap/terraform

Linux

Alibaba Cloud Linux

yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform

image

image

Windows Chocolatey

Chocolatey es un administrador de paquetes popular para Windows. Puede usar Chocolatey para instalar Terraform ejecutando comandos simples.

choco install terraform

Autenticación de Terraform

Puede autenticar Terraform almacenando credenciales de acceso en variables de entorno. Cuando ejecuta un comando de Terraform, este intenta recuperar las credenciales de dichas variables si no se declaran explícitamente en la plantilla de configuración. Las siguientes secciones describen cómo establecer variables de entorno.

Windows

  1. En el escritorio, haga clic derecho en Este equipo y seleccione Type > Advanced system settings > Environment Variables > System variables/User variables.

  2. En la sección System variables o User variables, haga clic en Create para crear las siguientes variables de entorno.

    Nombre de la variable

    Descripción de la variable

    Valor

    ALICLOUD_ACCESS_KEY

    ID de AccessKey

    yourAccessKeyID

    ALICLOUD_SECRET_KEY

    Secreto de AccessKey

    yourAccessKeySecret

    ALICLOUD_SECURITY_TOKEN (opcional)

    Si utiliza credenciales de Security Token Service (STS), debe configurar esta variable.

    yourSTSToken

Linux

Importante

Una variable de entorno temporal configurada con el comando export solo es válida para la sesión actual. Al salir de la sesión, la variable de entorno deja de ser válida. Para hacer permanente la variable de entorno, agregue el comando export al archivo de configuración de inicio de su sistema operativo.

# AccessKey ID
$ export ALICLOUD_ACCESS_KEY="<your AccessKey ID>"
# AccessKey secret
$ export ALICLOUD_SECRET_KEY="<your AccessKey secret>"
# If you use STS credentials, you must configure security_token.
$ export ALICLOUD_SECURITY_TOKEN="<your access token>"

Después de establecer las variables de entorno, no necesita declarar credenciales en el bloque del proveedor. Solo puede declarar la región.

provider "alicloud" {
  region = "cn-hangzhou"
}

También puede configurar la región mediante la variable de entorno ALICLOUD_REGION. Si la región no se declara explícitamente y esta variable de entorno no está establecida, el valor predeterminado es cn-beijing.

Recursos compatibles

Nota

Un recurso es un objeto nuevo, como una instancia ECS, una máquina virtual (VM) o un security group, que se utiliza para definir un componente de infraestructura.

Resource

alicloud_auto_provisioning_group: Gestiona un grupo de aprovisionamiento automático de ECS, el cual utiliza instancias spot e instancias pay-as-you-go para desplegar rápidamente un clúster.

alicloud_ecs_disk_attachment: Gestiona la vinculación de un disco de datos o disco del sistema a una instancia ECS.

alicloud_ecs_activation: Gestiona un código de activación de ECS. Permite configurar parámetros como la descripción, el número máximo de instancias registrables, el prefijo predeterminado del nombre de instancia, el rango de direcciones IP de los hosts que pueden usar el código y el periodo de validez del código para registrar instancias administradas en lotes.

alicloud_ecs_auto_snapshot_policy: Gestiona una directiva de instantáneas automáticas de ECS. Permite configurar parámetros como los días de la semana y las horas para crear instantáneas automáticas, así como el periodo de retención de las instantáneas. Este recurso también admite cross-region replication y cifrado para las instantáneas.

alicloud_ecs_auto_snapshot_policy_attachment: Vincula una directiva de instantáneas automáticas a un disco especificado. Puede indicar el ID de la directiva de instantáneas automáticas y el ID del disco para aplicar la directiva predefinida al disco.

alicloud_ecs_capacity_reservation: Gestiona una reserva de capacidad en Alibaba Cloud. Permite reservar recursos para un tipo de instancia específico con el fin de garantizar que pueda iniciar un número determinado de instancias cuando sea necesario.

alicloud_ecs_command: Gestiona un comando en una instancia ECS de Alibaba Cloud. Permite especificar parámetros como el contenido del comando codificado en Base64, la descripción, la habilitación de parámetros personalizados, el nombre del comando, el tiempo de espera y el tipo de comando para ejecutar comandos de script predefinidos.

alicloud_ecs_dedicated_host: Gestiona un host dedicado en Alibaba Cloud. Permite configurar parámetros como el tipo de host, el método de facturación, el ciclo de renovación automática, el nombre de host y la descripción.

alicloud_ecs_dedicated_host_cluster: Gestiona un clúster de hosts dedicados en Alibaba Cloud. Permite configurar parámetros como el nombre del clúster, la descripción, la zona y las etiquetas para gestionar y organizar centralizadamente los recursos de hosts dedicados.

alicloud_ecs_deployment_set: Gestiona un conjunto de despliegue en Alibaba Cloud. Permite especificar parámetros como la estrategia de despliegue, el nombre del conjunto de despliegue y la descripción para administrar la distribución de instancias ECS con objetivos específicos, como alta disponibilidad o baja latencia.

alicloud_ecs_disk: Gestiona un disco (disco de datos) en Alibaba Cloud. Permite configurar parámetros como el tipo de disco, el tamaño, el estado de cifrado, el ID de la instantánea, el nivel de rendimiento y las etiquetas para cumplir con los requisitos de almacenamiento de diferentes escenarios.

alicloud_ecs_disk_attachment: Gestiona la vinculación y desvinculación de un disco en una instancia ECS de Alibaba Cloud. Puede especificar el ID de la instancia y el ID del disco para asociarlos. Existen opciones para liberar el disco junto con la instancia y para vincular el disco como disco del sistema.

alicloud_ecs_elasticity_assurance: Gestiona una garantía de elasticidad en Alibaba Cloud. Esto asegura que se reserve una cantidad determinada de capacidad de recursos de cómputo para un tipo de instancia específico en una región concreta.

alicloud_ecs_hpc_cluster: Gestiona un clúster de computación de alto rendimiento (HPC) en Alibaba Cloud. Puede especificar el nombre y la descripción para configurar la información básica del clúster HPC.

alicloud_ecs_image_component: Gestiona un componente de imagen en Alibaba Cloud. Permite definir el contenido, el tipo, los sistemas operativos aplicables y otros metadatos para componentes de compilación o prueba. Estos componentes pueden reutilizarse al crear imágenes personalizadas.

alicloud_ecs_image_pipeline: Gestiona un pipeline de imágenes en Alibaba Cloud. Permite especificar la imagen base, el contenido de compilación, el tipo de instancia y otras configuraciones para automatizar la creación y gestión de imágenes personalizadas.

alicloud_ecs_image_pipeline_execution: Ejecuta una tarea de pipeline de imágenes en Alibaba Cloud para crear una imagen personalizada a partir de un pipeline de imágenes definido. Puede especificar un ID de pipeline de imágenes para activar la tarea de compilación de la imagen y supervisar el estado y los resultados de la tarea.

alicloud_ecs_invocation: Gestiona y ejecuta una invocación de comandos en instancias ECS. Permite ejecutar un comando especificado en una o más instancias ECS y recuperar los resultados de la ejecución.

alicloud_ecs_key_pair: Gestiona y crea un key pair para instancias ECS.

alicloud_ecs_key_pair_attachment: Vincula un key pair de ECS a una instancia ECS especificada.

alicloud_ecs_launch_template: Gestiona una plantilla de lanzamiento de ECS. Permite usar configuraciones predefinidas para crear y desplegar rápidamente instancias ECS, lo que mejora la eficiencia y garantiza la consistencia.

alicloud_ecs_network_interface: Gestiona una interfaz de red ECS. Permite configurar y administrar la conectividad de red de las instancias. Admite directivas flexibles de asignación de IP privada y es adecuada para entornos de red complejos y diseños de alta disponibilidad.

alicloud_ecs_network_interface_attachment: Vincula una Elastic Network Interface (ENI) a una instancia ECS de Alibaba Cloud. Esto amplía las capacidades de red de la instancia, lo que permite agregar múltiples direcciones IP o implementar configuraciones de red más complejas.

alicloud_ecs_network_interface_permission: Gestiona los permisos de una interfaz de red ECS.

alicloud_ecs_prefix_list: Gestiona una lista de prefijos en el servicio ECS de Alibaba Cloud.

alicloud_ecs_session_manager_status: Gestiona el estado de Session Manager en el servicio ECS de Alibaba Cloud. Permite habilitar o deshabilitar la función de gestión de sesiones para controlar el acceso y la administración de las instancias ECS.

alicloud_ecs_snapshot: Gestiona una instantánea de disco en Alibaba Cloud. Permite realizar copias de seguridad de los datos de un disco especificado para su futura recuperación o archivado.

alicloud_ecs_snapshot_group: Gestiona una instantánea para un grupo de discos en Alibaba Cloud.

alicloud_ecs_storage_capacity_unit: Gestiona una unidad de capacidad de almacenamiento en el servicio ECS de Alibaba Cloud.

alicloud_image: Gestiona una imagen personalizada en Alibaba Cloud creada a partir de una instancia ECS existente.

alicloud_image_copy: Copia una imagen personalizada de una región a otra.

alicloud_image_export: Exporta una imagen personalizada a un bucket de Object Storage Service (OSS) en la misma región que la imagen personalizada.

alicloud_image_import: Gestiona la importación de una imagen a ECS.

alicloud_image_share_permission: Gestiona los permisos para compartir una imagen.

alicloud_instance: Gestiona un recurso de instancia ECS.

alicloud_ecs_key_pair: Gestiona un recurso de key pair de ECS.

alicloud_ecs_key_pair_attachment: Vincula un key pair a múltiples instancias ECS.

alicloud_ecs_launch_template: Gestiona un recurso de plantilla de lanzamiento de ECS.

alicloud_ecs_network_interface: Gestiona un recurso de interfaz de red ECS.

alicloud_ecs_network_interface_attachment: Gestiona un recurso de vinculación de interfaz de red ECS.

alicloud_ram_role_attachment: Vincula un rol de Resource Access Management (RAM) de instancia a múltiples instancias ECS.

alicloud_reserved_instance: Gestiona un recurso de reserved instance.

alicloud_security_group: Gestiona un recurso de security group de ECS.

alicloud_security_group_rule: Gestiona un recurso de regla de security group.

alicloud_ecs_snapshot: Gestiona un recurso de instantánea de ECS.

alicloud_ecs_auto_snapshot_policy: Gestiona un recurso de directiva de instantáneas automáticas de ECS.

Uso de Terraform para crear y gestionar recursos de ECS

Esta sección proporciona un ejemplo de cómo crear y gestionar recursos de ECS con Terraform.

  1. Cree un directorio de trabajo. En el directorio, cree un archivo de configuración llamado main.tf. El siguiente código crea una instancia ECS y sus recursos necesarios de VPC, security group y vSwitch. Copie el código en el archivo main.tf.

    # Define a variable "region" with the default value "cn-beijing" to specify the Alibaba Cloud region.
    variable "region"{
      default = "cn-beijing"
    }
    
    # Configure the Alibaba Cloud provider to use the region defined in the "region" variable.
    provider "alicloud"{
      region = var.region
    }
    
    # Define a string variable "instance_type" with the default value "ecs.e-c1m1.large" to specify the ECS instance type.
    variable "instance_type" {
      type    = string
      default = "ecs.e-c1m1.large"
    }
    
    # Use a data source to query zone information. Filter the results by the specified instance type, resource creation type (such as VSwitch), and disk category.
    data "alicloud_zones" "default" {
      available_instance_type     = var.instance_type
      available_resource_creation = "VSwitch"
      available_disk_category     = "cloud_essd"
    }
    
    # Define a variable "vpc_cidr_block" with the default value "172.16.0.0/16" to specify the CIDR block for the VPC.
    variable "vpc_cidr_block" {
      default = "172.16.0.0/16"
    }
    
    # Define a variable "vsw_cidr_block" with the default value "172.16.0.0/24" to specify the CIDR block for the vSwitch.
    variable "vsw_cidr_block" {
      default = "172.16.0.0/24"
    }
    
    # Generate a random integer between 10000 and 99999 to ensure the uniqueness of some resource names.
    resource "random_integer" "default" {
      min = 10000
      max = 99999
    }
    
    # Create a VPC named "vpc-test" and use the random integer to ensure the name is unique.
    resource "alicloud_vpc" "vpc" {
      vpc_name   = "vpc-test_${random_integer.default.result}"
      cidr_block = var.vpc_cidr_block
    }
    
    # Create a security group, include the random integer in the name to ensure uniqueness, and associate it with the VPC created above.
    resource "alicloud_security_group" "group" {
      security_group_name = "test_${random_integer.default.result}"  # The field name here was replaced.
      vpc_id              = alicloud_vpc.vpc.id
    }
    
    # Create a security group rule to allow all inbound TCP traffic and associate it with the previously created security group.
    resource "alicloud_security_group_rule" "allow_all_tcp" {
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"  # Modified here, nic_type is changed to 'intranet'.
      policy            = "accept"
      port_range        = "1/65535"
      priority          = 1
      security_group_id = alicloud_security_group.group.id
      cidr_ip           = "0.0.0.0/0"
    }
    
    # Create a vSwitch, include the random integer in the name to ensure uniqueness, and associate it with the VPC and zone.
    resource "alicloud_vswitch" "vswitch" {
      vpc_id       = alicloud_vpc.vpc.id
      cidr_block   = var.vsw_cidr_block
      zone_id      = data.alicloud_zones.default.zones[0].id
      vswitch_name = "vswitch-test-${random_integer.default.result}"
    }
    
    # Create an ECS instance. Set multiple parameters such as the zone, security group, and instance type. Use the random integer to ensure the instance name is unique.
    resource "alicloud_instance" "instance" {
      availability_zone          = data.alicloud_zones.default.zones[0].id
      security_groups            = [alicloud_security_group.group.id]
      instance_type              = var.instance_type
      system_disk_category       = "cloud_essd"
      system_disk_name           = "test_foo_system_disk_${random_integer.default.result}"
      system_disk_description    = "test_foo_system_disk_description"
      image_id                   = "aliyun_2_1903_x64_20G_alibase_20240628.vhd"
      instance_name              = "test_ecs_${random_integer.default.result}"
      vswitch_id                 = alicloud_vswitch.vswitch.id
      internet_max_bandwidth_out = 10
      password                   = "Terraform@Example" # Modify the password based on your requirements.
    }
  2. Ejecute el siguiente comando para inicializar el entorno de ejecución de Terraform.

    terraform init

    La siguiente salida indica que Terraform se ha inicializado correctamente.

    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.
  3. Ejecute el siguiente comando para ejecutar el código.

    terraform apply

    Durante la ejecución, introduzca yes cuando se le solicite y presione Enter. Espere a que finalice el comando. Si aparece la siguiente salida, el código se ejecutó correctamente.

    You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value: yes
    
    Apply complete! Resources: 6 added, 0 changed, 0 destroyed.

  4. Compruebe los resultados

Ejecución del comando terraform show

En el directorio de trabajo, ejecute el siguiente comando para consultar los detalles de los recursos creados por Terraform:

terraform show

image

Inicio de sesión en la consola para ver los recursos

Inicie sesión en la consola de ECS. En el panel de navegación izquierdo, elija Instances & Images > Instance. En la esquina superior izquierda, seleccione una región. En este ejemplo, seleccione China (Beijing) para ver la instancia ECS creada.

image

Referencias