Mi primeros pasos con Terraform
Buenas noches,
Estos últimos días empecé a probar Terraform, en particular para manejar servicios que tengo corriendo en Linode, que es un proveedor cloud bastante intersante en especial por su bajo costo y con muchísimos servicios ideales para desplegar infra escalable de manera bastante simple.
Al provider de Linode para Terraform lo pueden encontrar aquí.
Mi objetivo es crear una serie de buckets para backups, así que me puse en la tarea de escribir un módulo bastante sencillo (recomiendo leer la siguiente guía para arrancar).
En donde el main.tf luce de la siguiente manera:
variables.tf
terraform.tfvars
sensitive.tfvars
Finalmente, dentro del directorio buckets tengo lo siguiente:
main.tf
variables.tf
outputs.tf
Bastante sencillo, si. Antes de desplegar los cambios ejecutar:
para saber qué va a hacer Terraform (crear, modificar o borrar un recurso).
Para finalmente aplicarlos
Espero que haya sido de utilidad, estos son mis primeros pasos utilizando esta herramienta. Próximamente actualizaré mi repositorio incluyendo los templates para crear linodes.
Saludos.
Estos últimos días empecé a probar Terraform, en particular para manejar servicios que tengo corriendo en Linode, que es un proveedor cloud bastante intersante en especial por su bajo costo y con muchísimos servicios ideales para desplegar infra escalable de manera bastante simple.
Al provider de Linode para Terraform lo pueden encontrar aquí.
Mi objetivo es crear una serie de buckets para backups, así que me puse en la tarea de escribir un módulo bastante sencillo (recomiendo leer la siguiente guía para arrancar).
$ tree
.
├── main.tf
├── modules
│ ├── buckets
│ ├── main.tf
│ ├── outputs.tf
│ └── variables.tf
├── sensitive.tfvars
├── terraform.tfvars
└── variables.tf
En donde el main.tf luce de la siguiente manera:
provider "linode" { version = "~> 1.6" token = var.token } module "buckets" { source = "./modules/buckets" label = var.label region = var.region key_label = var.key_label }
variables.tf
variable "region" { type = string description = "Default region" default = "us-central" } variable "label" { type = string description = "The bucket label" default = "default_label" } variable "key_label" { type = string description = "Object storage access key" default = "access_key" } variable "token"{ }
terraform.tfvars
label = "backup" region = "us-east" key_label = "backups_key"
sensitive.tfvars
token = "abcdefghi="
Finalmente, dentro del directorio buckets tengo lo siguiente:
main.tf
data "linode_region" "region" { id = var.region } data "linode_object_storage_cluster" "primary" { id = "${data.linode_region.region.id}-1" } resource "linode_object_storage_key" "bucket_key" { label = var.key_label } resource "linode_object_storage_bucket" "bucket" { cluster = data.linode_object_storage_cluster.primary.id label = var.label }
variables.tf
variable "region" { type = string description = "Default region" default = "us-east" } variable "label" { type = string description = "The bucket label" default = "bucket_label" } variable "key_label" { type = string description = "Object storage access key" default = "bucket_key" }
outputs.tf
output "bucket_label" { value = linode_object_storage_bucket.bucket.label } output "bucket_key" { value = linode_object_storage_key.bucket_key.label }
Bastante sencillo, si. Antes de desplegar los cambios ejecutar:
$ terraform plan -var-file="sensitive.tfvars" -var-file="terraform.tfvars"
para saber qué va a hacer Terraform (crear, modificar o borrar un recurso).
Para finalmente aplicarlos
$ terraform apply -var-file="sensitive.tfvars" -var-file="terraform.tfvars"
Espero que haya sido de utilidad, estos son mis primeros pasos utilizando esta herramienta. Próximamente actualizaré mi repositorio incluyendo los templates para crear linodes.
Saludos.
Comentarios
Publicar un comentario