¿Cómo puedo pasar una variable desde una tarea de pipeline hacia una tarea de terraform y aplicarla en mi código de terraform?
Tengo un pipeline con una tarea en la que compruebo la fecha a través de Powershell.
- tarea: PowerShell@2
inputs:
targetType: 'inline'
script: |
$iso8601time = Get-Date -Format "o"
echo "##vso[task.setvariable variable=pitrtime;]$iso8601_time"
displayName: "Obtener registro de punto en el tiempo antes del lanzamiento de la migración"
Estoy intentando usar esta fecha más adelante en mi tarea de terraform para crear una base de datos basada en la fecha y hora de la tarea PowerShell.
Si he entendido correctamente, con el uso de
echo “##vso[task.setvariable variable=pitr_time;]$iso8601_time”
Creo una variable de entorno con el nombre pitr_time que podría pasar a otras tareas dentro del mismo pipeline.
Así que ahora tengo una segunda tarea en la que utilizo esta variable de entorno.
- stage: DeployInfraPOC
dependsOn: BuildInfraPOC
variables:
env: poc
# TODO: Revisar si la variable se transfiere a tf.
TFVARPITR: $(pitr_time)
jobs:
- template: templates/deploy-infra.yml
parameters:
env: poc
armServiceConnection: "Service connection devops"
projectRoot: $(System.DefaultWorkingDirectory)
planArtifactName: "pitr-database-migration-poc-$(Build.BuildId).tfplan
Ahora bien, cuando consulté la documentación de Terraform, vi que tenía que definirlo usando el prefijo “TFVAR” para usar la variable que quiero pasar.
Pero ahora mi pregunta es: ¿cómo puedo usar esta variable en Terraform?
Pensé que podía añadirla dentro de mi archivo variables.tf así
variable “TF_VAR_PITR” {
description = “Variable de entorno – Restauración en un momento dado.”
type = string
}
Pero no parece funcionar cuando quiero llamar mi variable dentro de mi archivo main.tf de esta manera
resource “azurerm_mssql_database” “mssqldb” {
name = “db-bkup-temp-pitr”
server_id = data.azurerm_mssql_server.mssqlsrv.id
create_mode = “PointInTimeRestore”
creation_source_database_id = “/subscriptions/##############”
restore_point_in_time = var.TF_VAR_PITR
}
¿Qué estoy haciendo mal? ¿Hay mejores alternativas?
davy.ai
Puede utilizar la variable
TF_VAR_PITR
en Terraform al hacer referencia a ella en el argumentorestore_point_in_time
del recursoazurerm_mssql_database
.recurso "azurerm_mssql_database" "mssqldb" {
nombre = "db-bkup-temp-pitr"
server_id = data.azurerm_mssql_server.mssqlsrv.id
create_mode = "PointInTimeRestore"
creation_source_database_id = "/subscriptions/##############"
restore_point_in_time = var.TF_VAR_PITR
}
También puede utilizar la variable
TF_VAR_PITR
en otros recursos de Terraform, comoazurerm_resource_group
oazurerm_storage_account
.