Terraform - 101

Para la administración de recursos en la nube, solemos iniciar con arquitecturas pequeñas e ir agregando u ordenandonos en el camino. Mientras mas grande se vuelva la arquitectura, mas recursos debemos manejar y en algunos casos tendrmeos que soportar mas provvedores de nube.
Para facilitar el manejo de infraestructura y obtener un mejor control de los estados e incluso incorporar procesos que permitan el manejo de infraestructura o de determinados reecursos se puede utilizar Terraform.
Terraform nos ayudará con el manejo de nuestra infraestructura en la nube, como si de un proyecto de software se tratrará, escribiendo código y manifiestos.
Abordaremos la creación de un proveedor y la realización de acciones de importación de infraestructura ya existente en el proveedor objetivo.
Instalando terraform cli
Puedes seguir el proceso de isntalación de Terraform CLI en la documentación oficial
Creando el proveedor
Crearemos la carpeta del proyecto "iac"
$ mdkir iac
$ cd iac
Creamos y escribimos el siguiente bloque de código en el archivo provider.tf
provider.tf
provider "huaweicloud" {
region = "la-south-2"
access_key = "XXXX"
secret_key = "XXXXX"
}
En este caso el proveedor de nube pública es Huawei Cloud por lo tanto en nuestra definición especificaremos como provider "huaweicloud" tal y como está descrito en la documentación oficial de Terraform.
Iniciando terraform
Para que terrafrom descargue el proveedor especificado en provider.tf debemos inicializarlo con el siguiente comando.
$ cd iac
$ terraform init
Initializing the backend...
Initializing provider plugins...
- Finding latest version of huaweicloud/huaweicloud
- Installing huaweicloud/huaweicloud v1.20.0...
...
Terraform has been successfully initialized!
Una vez terminado el proceso, podremos empezar a escribir cpodigo para ser aplicado en nuestra infraestructura
Si ya contamos con recursos creados en nuestra cuenta cloud, terraform no podrá gestionar estos recursos. Para poder controlar recursos ya existentes, debemos importarlos con
terrafrom import
o crearlos conterraform apply
. Si realizamos la creación de recursos conterrafrom apply
y existen recursos ya creados en nuestra cuenta cloud que no son manejados por terraform, no se realizará acción alguna con esos recursos, no se modificarán ni eliminarán.
Terraform plan
Es recomemdable siempre ejecutar terrafrom plan
antes de aplicar los cambios hacia nuestra infraestructura con terrafrom apply
terraform plan
nos mostrará a detalle los cambios que se harán en nuestra infraestructura sin aplñicar los cambios.
Terraform apply
Una vez conozcamos los efectos de aplicar nuestra definicón de infraestructura utilizando terrafrom plan
podemos realizar los cambios con terrafrom apply
aú nasí se nos pedíra una confirmación para aceptar los cambios antes de ser aplicados.
Terraform import
Como ya se ha mencionado, existen recursos que probablemente ya existan o hallamos creados en uestra infraestructura y que deseamos agregar al control de terraform, para ello nos guiaremos de la documentación oficial para conocer los tipos de recursos de nuestro proveedor.
Para importar un recurso existente podemos utilizar terraform import
. El nombre o ID del recursos lo podemos encontrar en la consola de administración denuestro proveedor de nube. En la mayoría de los casos se utiliza el ID del recurso, existen casos especificados en la documenatacoon que indican se especifique el nombre del recurso.
terraform import tipo_recurso.nombre_recurso [ID_DE_RECURSO/NOMBRE_RECURSO]
Si queremos que terrafrom deje de tener el control de un recurso sin eliminarlo, podemos quitarlo con el siguiente comando.
terraform state rm tipo_recurso.nombre_recurso
Para importar infraestructura existente también tenemos la opción de utilizar el proyectoTerraformer el cual sería práctico en caso se desee importar gran cantidad de recursos.