Hands-on: Try the Terraform: Get Started collection on HashiCorp Learn.
Resources are the most important element in the Terraform language. Each resource block describes one or more infrastructure objects, such as virtual networks, compute instances, or higher-level components such as DNS records.
Resource Blocks documents the syntax for declaring resources.
Resource Behavior explains in more detail how Terraform handles resource declarations when applying a configuration.
Provisioners documents configuring post-creation actions for a resource using the
connectionblocks. Since provisioners are non-declarative and potentially unpredictable, we strongly recommend that you treat them as a last resort.