*El autor seleccionó la Free and Open Source Fund para recibir una donación como parte del programa Write for DOnations.*

Introducción

Terraform es una herramienta de infraestructura como código creada por HashiCorp que permite a los desarrolladores a implementar, actualizar y eliminar diferentes recursos de su infraestructura de manera eficiente y más escalable.

Los desarrolladores pueden usar Terraform para organizar diferentes entornos, realizar un seguimiento de los cambios a través del control de versiones y automatizar el trabajo repetitivo para reducir los errores humanos. La herramienta ofrece una alternativa para que los equipos colaboren en la mejora de su infraestructura a través de configuraciones compartidas.

A través de este turorial, importará infraestructura existente de the cloud provider a Terraform. Al finalizar, podrá utilizar Terraform para toda su infraestructura existente además de crear nuevos recursos.

Requisitos previos

cloud provider illustration for: Requisitos previos
  • Un firewall en la nube de the cloud provider aplicado a su Droplet. Puede usar la guía Cómo crear firewalls.

Paso 1: Instalar Terraform de forma local

En este primer paso, instalará Terraform en su máquina local. En este paso, se detalla la instalación del binario de Linux. Si utiliza Windows o Mac, puede revisar la página de Descarga de Terraform en el sitio web de Terraform.

Diríjase a la carpeta en la que desee descargar Terraform en su máquina local y luego utilice la herramienta wget para descargar el binario <^>0.12.12<^> de Terraform:

				
					
cd &lt;^&gt;/tmp&lt;^&gt;

wget https://releases.hashicorp.com/terraform/&lt;^&gt;0.12.12&lt;^&gt;/terraform_&lt;^&gt;0.12.12&lt;^&gt;_linux_amd64.zip

				
			

Para verificar si la suma de comprobación sha256 es el mismo valor que se proporciona en el sitio web de Terraform, descargará el archivo de suma de comprobación con el siguiente comando:

				
					
wget -q https://releases.hashicorp.com/terraform/&lt;^&gt;0.12.12&lt;^&gt;/terraform_&lt;^&gt;0.12.12&lt;^&gt;_SHA256SUMS

				
			

Luego ejecute el siguiente comando para verificar las sumas de comprobación:

				
					
sha256sum -c --ignore-missing terraform_&lt;^&gt;0.12.12&lt;^&gt;_SHA256SUMS

				
			

En el archivo SHA256SUMS que descargó se enumeran los nombres de archivos y sus hash. Con este comando se buscará el mismo archivo terraform_<^>0.12.12<^>_SHA256SUMS de forma local y luego se verificará que los hash coincidan usando el indicador -c. Debido a que en este archivo se incluye más de un nombre de archivo y su plataforma indicada, utilice el indicador --ignore-missing para evitar errores en el resultado, ya que no tiene copias de los demás archivos.

Verá un resultado como el siguiente:

				
					
[secondary_label Output]

terraform_0.12.12_linux_amd64.zip: OK

				
			

Utilice unzip para extraer el binario:

				
					
sudo unzip terraform_&lt;^&gt;0.12.12&lt;^&gt;_linux_amd64.zip -d /usr/local/bin/

				
			

Ahora verifique si Terraform está correctamente instalado revisando la versión:

				
					
terraform version

				
			

Visualizará un resultado similar al siguiente:

				
					
[secondary_label Output]

Terraform v&lt;^&gt;0.12.12&lt;^&gt;

				
			

Instaló Terraform en su máquina local. Ahora, preparará los archivos de configuración.

Paso 2: Preparar los archivos de configuración de Terraform

En este paso, importará sus activos existentes a Terraform creando un directorio de proyecto y escribiendo archivos de configuración. Debido a que Terraform por el momento no admite la generación de configuraciones a partir del comando import, debe crearlas de forma manual.

Ejecute el siguiente comando para crear el directorio de su proyecto:

				
					
mkdir -p &lt;^&gt;do_terraform_import&lt;^&gt;

				
			

Posiciónese en ese directorio con lo siguiente:

				
					
cd &lt;^&gt;do_terraform_import&lt;^&gt;

				
			

Durante este paso, creará tres archivos adicionales que contendrán las configuraciones necesarias. Su estructura de directorios para este proyecto tendrá el siguiente aspecto:

				
					
├── the cloud provider_droplet.tf

├── the cloud provider_firewall.tf

└── provider.tf

				
			

Para comenzar, creará el archivo provider.tf a fin de definir su Token de acceso de the cloud provider como una variable de entorno en lugar de codificarlo de forma rígida en su configuración.

[warning]

Advertencia: Con su token de acceso se le proporciona acceso a toda su infraestructura sin restricciones; considérelo como tal. Asegúrese de ser la única persona que tenga acceso a la máquina en la que se almacene ese token.

Además de su token de acceso, también especificará el proveedor que desee usar. En este tutorial, es the cloud provider. Si desea acceder a una lista completa de las fuentes y los recursos de datos disponibles para the cloud provider con Terraform, consulte la página de proveedores en el sitio web.

Cree y edite provider.tf con el siguiente comando:

				
					
nano provider.tf

				
			

Añada el siguiente contenido al archivo provider.tf:

				
					
[label provider.tf]

variable "do_token" {}



provider "the cloud provider" {

	token = "${var.do_token}"

	version = "1.9.1"

	}

				
			

En este archivo, se agrega el Token de acceso de the cloud provider como una variable que Terraform usará como identificación para la API de the cloud provider. También se especifica la versión del complemento del proveedor de the cloud provider. Desde Terraform, se recomienda especificar la versión del proveedor que usará para que las actualizaciones futuras no puedan dañar su configuración actual.

Ahora creará el archivo the cloud provider_droplet.tf. Aquí, especificará el recurso que usará; en este caso, droplet.

Cree el archivo con el siguiente comando:

				
					
nano the cloud provider_droplet.tf

				
			

Añada la siguiente configuración:

				
					
[label the cloud provider_droplet.tf]

resource "the cloud provider_droplet" "do_droplet" {

 name = &lt;^&gt;"testing-terraform"&lt;^&gt;

 region = &lt;^&gt;"fra1"&lt;^&gt;

 tags = &lt;^&gt;["terraform-testing"]&lt;^&gt;

 count = "1"

}

				
			

Aquí, especifique cuatro parámetros:

  • name: nombre del Droplet.
  • region: región en la que se ubica el Droplet.
  • tags: lista de las etiquetas que se aplican a este Droplet.
  • count: número de recursos necesarios para esta configuración.

A continuación, creará un archivo de configuración para su firewall. Cree el archivo the cloud provider_firewall.tf con el siguiente comando:

				
					
nano the cloud provider_firewall.tf

				
			

Añada el siguiente contenido al archivo:

				
					
[label the cloud provider_firewall.tf]

resource "the cloud provider_firewall" "do_firewall" {

 name = &lt;^&gt;"testing-terraform-firewall"&lt;^&gt;

 tags = &lt;^&gt;["terraform-testing"]&lt;^&gt;

 count = "1"

}

				
			

Aquí especifica el nombre del firewall que desea importar y las etiquetas de los Droplets a las que se aplican las reglas del firewall. Por último, en el valor count de 1 se define el número requerido del recurso específico.

Nota: También puede incluir recursos del firewall en el archivo the cloud provider_droplet.tf. Sin embargo, si dispone de varios entornos en los cuales varios Droplets comparten el mismo firewall, se recomienda separarlo en caso de querer eliminar un solo Droplet. Esto dejará el firewall intacto.

Ahora, es momento de inicializar esos cambios para que en Terraform se puedan descargar las dependencias necesarias. Para esto utilizará el comando terraform init, el cual le permitirá inicializar un directorio de trabajo que contenga archivos de configuración de Terraform.

Ejecute el siguiente comando desde el directorio de su proyecto:

				
					
terraform init

				
			

Verá el siguiente resultado:

				
					
[secondary_label Output]

Terraform has been successfully initialized!

				
			

Terraform preparó de forma correcta el directorio de trabajo descargando complementos y buscando módulos, entre otras acciones. A continuación, comenzará a importar sus recursos a Terraform.

Paso 3: Importar sus activos a Terraform

Durante este paso, importará sus activos de the cloud provider a Terraform. Usará doctl para encontrar los números de ID de sus Droplets antes de importar sus recursos. Luego, verificará la configuración de importación con los comandos terraform show y terraform plan.

Para comenzar, exportará su Token de acceso de the cloud provider como una variable de entorno que luego insertará en Terraform durante el tiempo de ejecución.

Expórtelo como una variable de entorno a su sesión de shell actual con el siguiente comando:

				
					
export DO_TOKEN="&lt;^&gt;YOUR_TOKEN&lt;^&gt;"

				
			

Para poder importar su Droplet y firewall existentes, necesitará los números de ID de estos. Puede usar doctl, la interfaz de línea de comandos de la API de the cloud provider. Ejecute el siguiente comando para listar sus Droplets y acceder a sus IDs:

				
					
doctl compute droplet list

				
			

Visualizará un resultado similar al siguiente:

				
					
[secondary_label Output]

ID Name Public IPv4 Private IPv4 Public IPv6 Memory VCPUs Disk Region Image Status Tags Features Volumes

&lt;^&gt;DROPLET-ID&lt;^&gt; &lt;^&gt;DROPLET-NAME&lt;^&gt; 				&lt;^&gt;DROPLET-IPv4&lt;^&gt; 1024 1 25 fra1 Ubuntu 18.04.3 (LTS) x64 active

&lt;^&gt;DROPLET-ID&lt;^&gt; &lt;^&gt;DROPLET-NAME&lt;^&gt; 					&lt;^&gt;DROPLET-IPv4&lt;^&gt; 2048 1 50 fra1 Ubuntu 18.04.3 (LTS) x64 active

&lt;^&gt;DROPLET-ID&lt;^&gt; &lt;^&gt;DROPLET-NAME&lt;^&gt; 				&lt;^&gt;DROPLET-IPv4&lt;^&gt; 1024 1 25 fra1 Ubuntu 18.04.3 (LTS) x64



				
			

Ahora, importará su Droplet y firewall existentes a Terraform:

				
					
terraform import -var "do_token=${DO_TOKEN}" the cloud provider_droplet.do_droplet &lt;^&gt;DROPLET_ID&lt;^&gt;

				
			

Se utiliza el indicador -var para especificar el valor de su Token de acceso de the cloud provider, previamente exportado a su sesión de shell. Esto es necesario para que en la API de the cloud provider se verifique su identidad y se apliquen cambios en su infraestructura.

Ahora, ejecute el mismo comando para su firewall:

				
					
terraform import -var "do_token=${DO_TOKEN}" the cloud provider_firewall.do_firewall &lt;^&gt;FIREWALL_ID&lt;^&gt;

				
			

Compruebe que la importación se haya realizado correctamente usando el comando terraform show. Este comando proporciona un resultado legible para humanos del estado de su infraestructura. Puede utilizarse para inspeccionar un plan a fin de garantizar que los cambios requeridos se ejecuten o inspeccionar el estado actual tal como se ve en Terraform.

En este contexto, el _estado_ hace referencia a la asignación de sus recursos de the cloud provider en la configuración de Terraform que escribió y al seguimiento de los metadatos. Esto le permite confirmar que no existe diferencia entre los recursos existentes de the cloud provider que desea importar y los recursos que Terraform somete a seguimiento:

				
					
terraform show

				
			

Verá un resultado similar a este:

				
					
[secondary_label Output]

. . .

# the cloud provider_droplet.do_droplet:

resource "the cloud provider_droplet" "do_droplet" {

 backups = false

 created_at = "2020-02-03T16:12:02Z"

 disk = 25

 id = "&lt;^&gt;DROPLET-ID&lt;^&gt;"

 image = "&lt;^&gt;DROPLET-IMAGE&lt;^&gt;"

 ipv4_address = "&lt;^&gt;DROPLET-IP&lt;^&gt;"

 ipv6 = false

 locked = false

 memory = 1024

 monitoring = false

 name = "testing-terraform-0"

 price_hourly = 0.00744

 price_monthly = 5

 private_networking = false

 region = "fra1"

 resize_disk = true

 size = "s-1vcpu-1gb"

 status = "active"

 tags = [

 "terraform-testing",

 ]

 urn = "&lt;^&gt;DROPLET-URN&lt;^&gt;"

 vcpus = 1

 volume_ids = []

. . .

}

				
			

Verá dos recursos en el resultado junto con sus atributos.

Después de importar su Droplet y firewall al estado de Terraform, debe asegurarse que las configuraciones representen el estado actual de los recursos importados. Para hacer esto, especificará la image de su Droplet y su size. Puede encontrar estos dos valores en el resultado de terraform show relacionado con el recurso the cloud provider_droplet.do_droplet.

Abra el archivo the cloud provider_droplet.tf:

				
					
nano the cloud provider_droplet.tf

				
			

En este tutorial:

  • La imagen del sistema operativo empleada para nuestro Droplet existente es ubuntu-16-04-x64.
  • La región en la que se ubica su Droplet es fra1.
  • La etiqueta para su Droplet existente es terraform-testing.

El Droplet que importó usando la configuración en the cloud provider_droplet.tf tendrá el siguiente aspecto:

				
					
[label the cloud provider_droplet.tf]

resource "the cloud provider_droplet" "do_droplet" {

 image = &lt;^&gt;"ubuntu-16-04-x64"&lt;^&gt;

 name = &lt;^&gt;"testing-terraform"&lt;^&gt;

 region = &lt;^&gt;"fra1"&lt;^&gt;

 size = &lt;^&gt;"s-1vcpu-1gb"&lt;^&gt;

 tags = &lt;^&gt;["terraform-testing"]&lt;^&gt;

}

				
			

A continuación, añadirá las reglas del firewall. En nuestro ejemplo, los puertos abiertos para el tráfico entrante son 22, 80 y 443. Todos los puertos están abiertos para el tráfico saliente. Puede ajustar esta configuración de manera correspondiente para sus puertos abiertos.

Abra the cloud provider_firewall.tf:

				
					
nano the cloud provider_firewall.tf

				
			

Añada la siguiente configuración:

				
					
[label the cloud provider_firewall.tf]

resource "the cloud provider_firewall" "do_firewall" {

 name = &lt;^&gt;"testing-terraform-firewall"&lt;^&gt;

 tags = &lt;^&gt;["terraform-testing"]&lt;^&gt;

 count = "1"



 inbound_rule {

 protocol = &lt;^&gt;"tcp"&lt;^&gt;

 port_range = &lt;^&gt;"22"&lt;^&gt;

 source_addresses = &lt;^&gt;["0.0.0.0/0", "::/0"]&lt;^&gt;

 }

 inbound_rule {

 protocol = &lt;^&gt;"tcp"&lt;^&gt;

 port_range = &lt;^&gt;"80"&lt;^&gt;

 source_addresses = &lt;^&gt;["0.0.0.0/0", "::/0"]&lt;^&gt;

 }

 inbound_rule {

 protocol = &lt;^&gt;"tcp"&lt;^&gt;

 port_range = &lt;^&gt;"443"&lt;^&gt;

 source_addresses = &lt;^&gt;["0.0.0.0/0", "::/0"]&lt;^&gt;

 }



 outbound_rule {

 protocol = &lt;^&gt;"tcp"&lt;^&gt;

 port_range = &lt;^&gt;"all"&lt;^&gt;

 destination_addresses = &lt;^&gt;["0.0.0.0/0", "::/0"]&lt;^&gt;

 }

 outbound_rule {

 protocol = &lt;^&gt;"udp"&lt;^&gt;

 port_range = &lt;^&gt;"all"&lt;^&gt;

 destination_addresses = &lt;^&gt;["0.0.0.0/0", "::/0"]&lt;^&gt;

 }

 outbound_rule {

 protocol = "icmp"

 destination_addresses = ["0.0.0.0/0", "::/0"]

 }

}

				
			

En estas reglas se replica el estado del firewall de ejemplo existente. Si desea limitar el tráfico a diferentes direcciones IP, puertos o protocolos, puede ajustar el archivo para replicar su firewall existente.

Una vez que haya actualizado sus archivos de Terraform, usará el comando plan para ver si en los cambios realizados se replica el estado de los activos existentes en the cloud provider.

El comando terraform plan se utiliza a modo de simulacro. Con este comando, puede verificar si los cambios que se realizarán en Terraform son los cambios que quiere hacer. Es recomendable ejecutar siempre este comando para confirmarlo antes de aplicar los cambios.

Ejecute terraform plan con lo siguiente:

				
					
terraform plan -var "do_token=$DO_TOKEN"

				
			

Verá un resultado similar al siguiente:

				
					
[secondary_label Output]

No changes. Infrastructure is up-to-date.

				
			

Importó de forma correcta los recursos de the cloud provider existentes a Terraform y ahora podrá realizar cambios en su infraestructura mediante Terraform sin el riesgo de eliminar o modificar los recursos existentes.

Paso 4: Crear nuevos recursos mediante Terraform

En este paso, agregará dos Droplets adicionales a su infraestructura existente. Añadir recursos de esta manera a su infraestructura existente puede ser útil, por ejemplo, si tiene un sitio web activo y no quiere realizar cambios que puedan ocasionar perjuicios en dicho sitio mientras realiza tareas en él. En su lugar, puede añadir un Droplet adicional para usarlo como entorno de desarrollo y trabajar en su proyecto en el mismo entorno que el Droplet de producción sin riesgos.

Ahora, abra the cloud provider_droplet.tf para añadir las reglas de sus nuevos Droplets:

				
					
nano the cloud provider_droplet.tf

				
			

Añada las siguientes líneas a su archivo:

				
					
[label the cloud provider_droplet.tf]

resource "the cloud provider_droplet" "do_droplet" {

 image = &lt;^&gt;"ubuntu-16-04-x64"&lt;^&gt;

 name = &lt;^&gt;"testing-terraform"&lt;^&gt;

 region = &lt;^&gt;"fra1"&lt;^&gt;

 size = &lt;^&gt;"s-1vcpu-1gb"&lt;^&gt;

 tags = &lt;^&gt;["terraform-testing"]&lt;^&gt;

 count = "1"

}



resource "the cloud provider_droplet" "do_droplet_new" {

 image = &lt;^&gt;"ubuntu-18-04-x64"&lt;^&gt;

 name = &lt;^&gt;"testing-terraform-${count.index}"&lt;^&gt;

 region = &lt;^&gt;"fra1"&lt;^&gt;

 size = &lt;^&gt;"s-1vcpu-1gb"&lt;^&gt;

 tags = &lt;^&gt;["terraform-testing"]&lt;^&gt;

 count = "2"

}

				
			

Utilizará el metargumento count para indicar a Terraform la cantidad de Droplets con las mismas especificaciones que desea. Estos nuevos Droplets también se agregarán a su firewall existente a medida que especifique la misma etiqueta que en su firewall.

Aplique estas reglas para verificar los cambios que especifique en the cloud provider_droplet.tf:

				
					
terraform plan -var "do_token=$DO_TOKEN"

				
			

Verifique que los cambios que desea realizar se repliquen en el resultado de este comando.

Visualizará un resultado similar al siguiente:

				
					
. . .

[secondary_label Output]

# the cloud provider_droplet.do_droplet_new[1] will be created

 + resource "the cloud provider_droplet" "do_droplet_new" {

 + backups = false

 + created_at = (known after apply)

 + disk = (known after apply)

 + id = (known after apply)

 + image = "&lt;^&gt;ubuntu-18-04-x64&lt;^&gt;"

 + ipv4_address = (known after apply)

 + ipv4_address_private = (known after apply)

 + ipv6 = false

 + ipv6_address = (known after apply)

 + ipv6_address_private = (known after apply)

 + locked = (known after apply)

 + memory = (known after apply)

 + monitoring = false

 + name = "&lt;^&gt;testing-terraform-1&lt;^&gt;"

 + price_hourly = (known after apply)

 + price_monthly = (known after apply)

 + private_networking = true

 + region = "&lt;^&gt;fra1&lt;^&gt;"

 + resize_disk = true

 + size = "&lt;^&gt;s-1vcpu-1gb&lt;^&gt;"

 + status = (known after apply)

 + tags = [

 + "&lt;^&gt;terraform-testing&lt;^&gt;",

 ]

 + urn = (known after apply)

 + vcpus = (known after apply)

 + volume_ids = (known after apply)

 }



Plan: 2 to add, 1 to change, 0 to destroy.



				
			

Una vez que esté satisfecho con el resultado, utilice el comando terraform apply para aplicar los cambios que especificó al estado de la configuración:

				
					
terraform apply -var "do_token=$DO_TOKEN"

				
			

Confirme los cambios ingresando yes en la línea de comandos. Cuando la ejecución sea exitosa, verá un resultado similar al siguiente:

				
					
[secondary_label Output]

. . .

the cloud provider_droplet.do_droplet_new[1]: Creating...

the cloud provider_droplet.do_droplet_new[0]: Creating...

the cloud provider_firewall.do_firewall[0]: Modifying... [id=&lt;^&gt;FIREWALL-ID&lt;^&gt;]

the cloud provider_firewall.do_firewall[0]: Modifications complete after 1s [id=&lt;^&gt;FIREWALL-ID&lt;^&gt;]

the cloud provider_droplet.do_droplet_new[0]: Still creating... [10s elapsed]

the cloud provider_droplet.do_droplet_new[1]: Still creating... [10s elapsed]

the cloud provider_droplet.do_droplet_new[0]: Creation complete after 16s [id=&lt;^&gt;DROPLET-ID&lt;^&gt;]

the cloud provider_droplet.do_droplet_new[1]: Still creating... [20s elapsed]

the cloud provider_droplet.do_droplet_new[1]: Creation complete after 22s [id=&lt;^&gt;DROPLET-ID&lt;^&gt;]



Apply complete! Resources: 2 added, 1 changed, 0 destroyed.

				
			

Visualizará dos nuevos Droplets en su panel web de the cloud provider: !Nuevos Droplets

También los verá adjuntos a su firewall existente: !Firewall existente

Creó nuevos recursos con Terraform usando sus activos existentes. Para aprender a destruir estos recursos, opcionalmente puede completar el paso siguiente.

Paso 5: Destruir activos importados y creados (opcional)

En este paso, destruirá los activos que importó y creó ajustando la configuración.

Comience abriendo the cloud provider_droplet.tf:

				
					
nano the cloud provider_droplet.tf

				
			

En el archivo, fije count en 0 como se muestra a continuación:

				
					
[label the cloud provider_droplet.tf]

resource "the cloud provider_droplet" "do_droplet" {

 image = "ubuntu-16-04-x64"

 name = "testing-terraform"

 region = "fra1"

 size = "s-1vcpu-1gb"

 tags = ["terraform-testing"]

 &lt;^&gt;count = "0"&lt;^&gt;

}



resource "the cloud provider_droplet" "do_droplet_new" {

 image = "ubuntu-18-04-x64"

 name = "testing-terraform-${count.index}"

 region = "fra1"

 size = "s-1vcpu-1gb"

 tags = ["terraform-testing"]

 &lt;^&gt;count = "0"&lt;^&gt;

}

				
			

Guarde el archivo y ciérrelo.

Abra su archivo de configuración de firewall para modificar count también:

				
					
nano the cloud provider_firewall.tf

				
			

Fije count en 0 como en la siguiente línea resaltada:

				
					
[label the cloud provider_firewall.tf]

resource "the cloud provider_firewall" "do_firewall" {

 name = "testing-terraform-firewall"

 tags = ["terraform-testing"]

 &lt;^&gt;count = "0"&lt;^&gt;



 inbound_rule {

 protocol = "tcp"

 port_range = "22"

 source_addresses = ["0.0.0.0/0", "::/0"]

 }

 inbound_rule {

 protocol = "tcp"

 port_range = "80"

 source_addresses = ["0.0.0.0/0", "::/0"]

 }

 inbound_rule {

 protocol = "tcp"

 port_range = "443"

 source_addresses = ["0.0.0.0/0", "::/0"]

 }



 outbound_rule {

 protocol = "tcp"

 port_range = "all"

 destination_addresses = ["0.0.0.0/0", "::/0"]

 }

 outbound_rule {

 protocol = "udp"

 port_range = "all"

 destination_addresses = ["0.0.0.0/0", "::/0"]

 }

 outbound_rule {

 protocol = "icmp"

 destination_addresses = ["0.0.0.0/0", "::/0"]

 }

}

				
			

Guarde el archivo y ciérrelo.

Ahora, aplique esos cambios con el siguiente comando:

				
					
terraform apply -var "do_token=${DO_TOKEN}"

				
			

Terraform le solicitará confirmar si desea destruir los Droplets y el firewall. Con esto se eliminarán todos los activos que importó y creó mediante Terraform. Por lo tanto, asegúrese de verificar que desee proceder antes de escribir yes.

Verá un resultado similar a lo siguiente:

				
					
[secondary_label Output]

. . .

the cloud provider_droplet.do_droplet[0]: Destroying... [id=&lt;^&gt;YOUR-DROPLET-ID&lt;^&gt;]]

the cloud provider_droplet.do_droplet_new[0]: Destroying... [id=&lt;^&gt;YOUR-DROPLET-ID&lt;^&gt;]

the cloud provider_droplet.do_droplet_new[1]: Destroying... [id=&lt;^&gt;YOUR-DROPLET-ID&lt;^&gt;]

the cloud provider_firewall.do_firewall[0]: Destroying... [id=&lt;^&gt;YOUR-FIREWALL-ID&lt;^&gt;]

the cloud provider_firewall.do_firewall[0]: Destruction complete after 1s

the cloud provider_droplet.do_droplet_new[1]: Still destroying... [id=&lt;^&gt;YOUR-DROPLET-ID&lt;^&gt;, 10s elapsed]

the cloud provider_droplet.do_droplet[0]: Still destroying... [id=&lt;^&gt;YOUR-DROPLET-ID&lt;^&gt;, 10s elapsed]

the cloud provider_droplet.do_droplet_new[0]: Still destroying... [id=&lt;^&gt;YOUR-DROPLET-ID&lt;^&gt;, 10s elapsed]

the cloud provider_droplet.do_droplet_new[1]: Still destroying... [id=&lt;^&gt;YOUR-DROPLET-ID&lt;^&gt;, 20s elapsed]

the cloud provider_droplet.do_droplet_new[0]: Still destroying... [id=&lt;^&gt;YOUR-DROPLET-ID&lt;^&gt;, 20s elapsed]

the cloud provider_droplet.do_droplet[0]: Still destroying... [id=&lt;^&gt;YOUR-DROPLET-ID&lt;^&gt;, 20s elapsed]

the cloud provider_droplet.do_droplet_new[1]: Destruction complete after 22s

the cloud provider_droplet.do_droplet[0]: Destruction complete after 22s

the cloud provider_droplet.do_droplet_new[0]: Destruction complete after 22s



Apply complete! Resources: 0 added, 0 changed, 4 destroyed.

				
			

Eliminó todos los activos administrados por Terraform. Este es un flujo de trabajo útil si ya no necesita un recurso o realiza una reducción.

Conclusión

A lo largo de este tutorial, instaló Terraform, importó los recursos existentes, creó recursos nuevos y, opcionalmente, los destruyó. Puede escalar este flujo de trabajo para un proyecto más grande, como la implementación de un clúster de Kubernetes listo para la producción. A través de Terraform, puede administrar los nodos, las entradas de DNS, los firewalls, el almacenamiento y otros recurss, además de usar el control de versiones para supervisar cambios y colaborar con un equipo.

Para explorar más características de Terraform, lea la documentación pertinente. También puede leer contenido de Terraform de the cloud provider para acceder a más tutoriales y preguntas y respuestas.