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.

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
Vaya a Panel de control > Sistema > Configuración avanzada del sistema > Variables de entorno.
En Variables del sistema, desplácese hacia abajo hasta encontrar PATH.
Haga clic en Editar y realice los cambios necesarios.
Asegúrese de agregar un punto y coma para separar las entradas. Por ejemplo:
c:\path;c:\path2Inicie 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.

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.

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
Vaya a Panel de control > Sistema > Configuración del sistema > Variables de entorno.
En la sección Variables del sistema, desplácese hacia abajo para encontrar la variable PATH.
Haga clic en Editar y realice los cambios necesarios.
Use un punto y coma para separar las entradas, por ejemplo: c:\path;c:\path2
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
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


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
En el escritorio, haga clic derecho en Este equipo y seleccione .
-
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
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
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.
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.
-
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. } -
Ejecute el siguiente comando para inicializar el entorno de ejecución de Terraform.
terraform initLa 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. -
Ejecute el siguiente comando para ejecutar el código.
terraform applyDurante la ejecución, introduzca
yescuando 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. 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

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 . En la esquina superior izquierda, seleccione una región. En este ejemplo, seleccione China (Beijing) para ver la instancia ECS creada.

Referencias
Para consultar más tutoriales, consulte Terraform Tutorials.
Para obtener más información sobre los comandos comunes de Terraform, consulte Common Commands.
Terraform está disponible como servicio administrado en ROS. Puede desplegar plantillas de Terraform desde la consola de ROS. Para obtener más información, consulte Create a Terraform stack.