Usando Terraform con Azure

El presente post tiene un objetivo muy sencillo, el cual es describir como enlazar terraform con Azure, y posteriormente haremos la creacion de una web app.

1.- Descargar e instalar Terraform

En mi caso instalare la versión para Windows

https://www.terraform.io/downloads.html

Una vez lo hayamos descargado y los descomprimimos en el folder que querramos, ya que es un simple exe; posteriormente lo agregamos al PATH de nuestro sistema

Para agregar la variable lo podríamos hacer de forma clásica, pero hagamoslo por medio de un comando (esto lo coloca de forma temporal al PATH)

$env:Path += ";MI_RUTA_DE_TERRAFORM"

2.- Conectar con Azure

Para realizar este paso, necesitamos tener una consola con una cuenta conectada activa de azure, para hacerlo de forma sencilla utilizaremos la shell del portal de azure.

Damos click donde señala la fecha del numero 1

Seleccionamos Bash(la verdad es indistinto, posteriormente podemos cambiarlo)

Creamos/seleccionamos una cuenta de almacenamiento(en caso que no haberlo hecho antes).

Ahora necesitamos obtener nuestra id de cuenta:

az account list

Tomamos el valor del id, y ejecutamos el siguiente comando

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/my_id_account"

Una vez generado, los valores que nos necesitamos son  "appId", "password" y "tenant"

3.- Usando terraform sobre Azure

Para este ejemplo crearemos un web-app usando un modulo de terraform, es un nuevo archivo de texto con extension .tf, tipear lo siguiente:


provider "azurerm" {
  subscription_id = "tu suscripcion: az account list"
  client_id = "generado paso en paso anterior" 
  client_secret = "generado paso en paso anterior"
  tenant_id = "generado paso en paso anterior" 
}

module "linuxwebapp" {
    source              = "rahulkhengare/webapp/azurerm"
    name                = "testmelinuxwebapp"
    resource_group_name = "testwebappRG"
    plan_settings       = {
                             kind     = "Linux"
                             size     = "S2"
                             capacity = 1
                             tier     = "Standard"
                          }
}
terraform init
terraform plan

NOTA. Algo a tener en cuenta es que este modulo de tercero necesita tener azure-cli instalado, lo puedes bajar desde aquí, después necesitas logearte con "az login"

terraform apply

(Te pedirá confirmar la operación) Ya podríamos revisar en el portal de azure

Por ultimo elimina el grupo de recursos, lo puedes hacer desde la consola de azure con "az group delete -n testwebappRG"

Referencias:

https://github.com/mauve/vscode-terraform.git

https://registry.terraform.io/modules/rahulkhengare/webapp/azurerm/0.1.0?tab=resources

https://www.terraform.io/docs/modules/index.html