Type constraints - Object
We will learn how to use Object type constraints in your Terraform project.
We'll cover the following
Object#
An object is a structure that you can define from the other types listed above. They allow you to define quite complex objects and constrain them to types. The easiest way to explain this is to dive straight into an example.
Project example#
Consider the following project example:
In the project above, we first define a variable called person. This variable has two fields:
-
a
namewhich is of typestringand -
an
agewhich is of typenumber.
Object definition#
To define the object, we specify
each field inside {} brackets. Each field has the form fieldname = type. Here, we are giving a person some default values. If you run this project, you will see that the person output
will contain the values we gave it; Bob, 10.
These values are limited to the types we define, so if you tried to assign a string to the age field, you would get a type constraint error. One interesting thing
to point out is that you can have different items with the same name in Terraform.
In this project, we have a variable with the identifier “person”, and we have an output with the same
identifier. This is allowed because one is a variable and the other is output. You are not allowed
to have two variables with the same identifier or two outputs.
Building complex structures#
Next, we are defining a variable called person_with_address to show how you can nest objects
to build up even more complex structures. The person structure is the same as before, except we
have added the field address. The field address is in itself an object which contains four strings.
line1line2countypostcode
You can see when we initialise the variable. We set the address
by wrapping the values in a set of {} brackets. When you run the project, you will see the person_with_address structure printed out.
By using the same technique as above, you can build up complex structures.
Running the project#
Clicking the terminal will run terraform init and terraform apply commands. When prompted, type yes and press enter.
📝Note: Once you are done with the project, do not forget to run
terraform destroyand then confirm with yes to delete all of the resources in this project.
