Introduction to Terraform Outputs
Tags: terraform
Published: 2024-05-14 07:01:00


 ![Introduction to Terraform Outputs](https://www.techielass.com/content/images/2024/04/Copy-of-deploying-windows-update-with-sccm.png)

In this post, we'll delve into the world of Terraform outputs, exploring what they are, how to create them, apply them, and harness their power in your infrastructure deployments, with Azure as our example platform.

## What are Terraform Outputs?

Terraform outputs serve as a conduit for extracting essential information from your infrastructure once it's been provisioned. Whether it's an IP address, a URL, or a resource ID, outputs enable you to access key details about your resources.

For example, consider provisioning an Azure Storage Account with Terraform. Once created, you might want to retrieve its name for further use. With Terraform outputs, you can easily access this information.

![Introduction to Terraform Outputs](https://lh7-us.googleusercontent.com/85mykByyRkOCILEY4aGKMqRYI9LszO8Ge8gHw4j2ahhrj9lXIp5VJtbFRkYJmgFwSkies9aPJeBl8Mmii1M4Z1JyWA96NXmwW167dQUvYgvKb8dAcZ33CsJjyLVlB-_K9WMFT0ttgBU09l18CXYcLTE)
_Terraform output example_

## How to Create Outputs

Creating outputs in Terraform is straightforward. You define them within your configuration file using the '_output'_ block. You can display one output or multiple.  For example, if we want to deploy an Azure storage account we can define two outputs, the storage account name and the storage account URL. 

```
##
# Terraform Configuration
##

terraform {
  required_providers {
    azurerm = {
      source = "hashicorp/azurerm"
      version = "~> 3.100.0"
    }
  }
}

provider "azurerm" {
  features {}
}

##
# Deploy resource
##

resource "azurerm_storage_account" "example" {
  name = "techielasstfoutputs"
  resource_group_name = "demo-rg"
  location = "westus3"
  account_tier = "Standard"
  account_replication_type = "LRS"
  access_tier = "Hot"
}

##
# Output
##

output "storage_account_name" {
  value = azurerm_storage_account.example.name
}

output "storage_account_url" {
  value = azurerm_storage_account.example.primary_blob_endpoint
}

```

## How to Apply Outputs

Once you've defined your outputs, you apply your Terraform configuration just as usual. Terraform will execute the configuration, provision the resources, and display the outputs once it's done.

Below is an example of the outputs being displayed after the resource has been deployed.

![Introduction to Terraform Outputs](https://lh7-us.googleusercontent.com/9FbJcP_y7geuL1Y4OQjH1oZDWHNArSpiZcaRD-3W1BjgNtEScO9FpYwLhv9EafTr2PziTqY2RiDJAimK0g-RumDamBUEDTlm9z_yjKJTHU2jKVqn3tRS4gqbgdRb_V9O5cZqKTsyF41VFIROWeJHfOM)
_Terraform output example_

## Using the Outputs

With outputs in hand, you can leverage them in other parts of your Terraform configuration. Suppose you want to reference the storage account name in another resource. 

By defining an output for the storage account name, you can easily retrieve this information and utilize it in subsequent deployments. In your CI/CD pipeline, you can set up Terraform to automatically execute these deployments one after another, ensuring a smooth and efficient workflow. 

As each deployment completes, the outputs generated can be captured and passed along to the next stage, enabling a cohesive and automated infrastructure provisioning process without manual intervention. 

This streamlined approach empowers beginners to leverage Terraform's capabilities effectively within their development lifecycle, facilitating the creation and management of cloud resources with ease.

## State Files and Outputs

It's crucial to understand that outputs are stored in Terraform state files, which contain information about your infrastructure. Running `terraform show` displays the current state of your infrastructure, including the outputs you defined.

## Conclusion

Terraform outputs are a powerful tool for extracting valuable information from your infrastructure deployments. By mastering outputs, you can enhance automation, streamline integration, and gain deeper insights into your environment.