es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar la variable TF_VAR_PITR en Terraform al hacer referencia a ella en el argumento restore_point_in_time del recurso azurerm_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, como azurerm_resource_group o azurerm_storage_account.

Comments are closed.