Terraform
Query data with output values
In the previous tutorial, you used input variables to parameterize your Terraform configuration. In this tutorial, you will use output values to organize data to be easily queried and displayed to the Terraform user.
When building complex infrastructure, Terraform stores hundreds or thousands of
attribute values for all your resources. As a user of Terraform, you may only
be interested in a few values of importance. Outputs designate which data to
display. This data is outputted when apply
is called, and can be queried
using the terraform output
command.
Note
This tutorial builds on configuration from an earlier tutorial. If you have not yet completed it, do so now.
Define an output
Create a file called outputs.tf
in your learn-terraform-azure
directory. Add the following output definition to outputs.tf
.
outputs.tf
output "resource_group_id" {
value = azurerm_resource_group.rg.id
}
This defines an output variable named resource_group_id
. The name of the variable must
conform to Terraform variable naming conventions if it is to be used as an
input to other modules. The value
field specifies the value, the id
attribute of your resource group.
You can define multiple output
blocks to specify multiple
output variables.
Observe your resource outputs
When you add an output to a previously applied configuration, you must re-run terraform apply
to observe the new output.
Apply your configuration. Remember to confirm the apply with a yes
.
$ terraform apply
## ...
Changes to Outputs:
+ resource_group_id = "/subscriptions/c9ed8610-47a3-4107-a2b2-a322114dfb29/resourceGroups/myTFResourceGroup"
You can apply this plan to save these new output values to the Terraform state, without changing any real infrastructure.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
resource_group_id = "/subscriptions/c9ed8610-47a3-4107-a2b2-a322114dfb29/resourceGroups/myTFResourceGroup"
Notice that the apply
run returns the outputs. Query the output using the output
command with the output ID.
$ terraform output resource_group_id
"/subscriptions/c9ed8610-47a3-4107-a2b2-a322114dfb29/resourceGroups/myTFResourceGroup"