Course outlines for learning terraform.
The order of objects (resource
, data
, variable
, output
, locals
or any other object) is technically not relevant. You can put any object in any .tf
file.
There is an order that is nice for humans. Making a decision help to make a repository more maintainable.
In this order, you describe the object that’s reused later, first:
resource "x" "foo" {
name = "bar"
}
resource y "bar" {
name = "foo"
relation = x.foo.id
}
This means that the top of the file contains resources without a relation, where the bottom likely has resources that depend on above resources.
In this order, you keep in mind how the architecture is used. For example:
resource "dns_record" "default" {
name = "www"
value = loadbalancer.default.ip
}
resource "loadbalancer" "default" {
name = "bar"
}
In this order, you describe the resource that provides a service first, and introduce depending resources later. The Terraform documentation for GCP uses this ordering frequently.
resource "instance" "default" {
name = "x"
network = network.default.id
volume = volume.default.id
}
resource "network" "default" {
name = "y"
}
resource "volume" "default" {
name = "z"
size = "23G"
}