{"id":33189,"date":"2023-04-03T07:20:57","date_gmt":"2023-04-03T07:20:57","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=33189"},"modified":"2023-04-03T07:22:12","modified_gmt":"2023-04-03T07:22:12","slug":"terraform-tutorials-list-of-terraform-blocks-with-explanation","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/terraform-tutorials-list-of-terraform-blocks-with-explanation\/","title":{"rendered":"Terraform Tutorials: List of Terraform Blocks with Explanation"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/terraform-blocks.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"573\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/terraform-blocks-1024x573.png\" alt=\"\" class=\"wp-image-33192\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/terraform-blocks-1024x573.png 1024w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/terraform-blocks-300x168.png 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/terraform-blocks-768x430.png 768w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/terraform-blocks-740x414.png 740w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/terraform-blocks-355x199.png 355w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/04\/terraform-blocks.png 1051w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Terraform Block:<\/strong> The &#8220;terraform&#8221; block is used to specify settings for the Terraform execution environment, such as the required Terraform version and any backend configuration settings.<\/li>\n<\/ol>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>terraform {\n  required_version = \">= 0.14\"\n  backend \"s3\" {\n    bucket = \"my-terraform-state\"\n    key    = \"terraform.tfstate\"\n    region = \"us-west-2\"\n  }\n}\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li><strong>Provider Block: <\/strong>A provider block specifies the details of the provider being used. The provider is responsible for creating and managing resources in a specific infrastructure. The provider block is required for every Terraform configuration file.<\/li>\n<\/ol>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>provider \"aws\" {\n  region = \"us-west-2\"\n}\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><strong>Resource Block:<\/strong> A resource block specifies a single resource to be managed by Terraform. It includes the resource type, name, and its configuration options.<\/li>\n<\/ol>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>resource \"aws_instance\" \"example\" {\n  ami           = \"ami-0c55b159cbfafe1f0\"\n  instance_type = \"t2.micro\"\n}\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li><strong>Data Block:<\/strong> A data block defines data sources that can be queried from an external system, such as a cloud provider or a database.<\/li>\n<\/ol>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>data \"aws_ami\" \"ubuntu\" {\n  most_recent = true\n  filter {\n    name = \"name\"\n    values = [\"ubuntu\/images\/*ubuntu-xenial-16.04-amd64-server-*\"]\n  }\n}\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li><strong>Module Block: <\/strong>A module block specifies a reusable set of resources and configurations. Modules can be used to organize and reuse code across multiple Terraform configurations.<\/li>\n<\/ol>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>module \"vpc\" {\n  source = \"terraform-aws-modules\/vpc\/aws\"\n  version = \"3.0.0\"\n  name = \"my-vpc\"\n  cidr = \"10.0.0.0\/16\"\n  azs = [\"us-west-2a\", \"us-west-2b\", \"us-west-2c\"]\n}\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li><strong>Output Block: <\/strong>An output block defines the values that Terraform should output after applying a configuration. Outputs are useful for retrieving information from Terraform to use in other parts of your infrastructure.<\/li>\n<\/ol>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>output \"public_ip\" {\n  value = aws_instance.example.public_ip\n}\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li><strong>Variable Block:<\/strong> A variable block defines variables that can be used in a Terraform configuration. Variables are used to provide values that may change depending on the environment.<\/li>\n<\/ol>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>variable \"aws_region\" {\n  type = string\n  default = \"us-west-2\"\n}\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li><strong>Locals Block: <\/strong>The locals block defines local values that can be used within a Terraform module or configuration file. These values are computed once during Terraform execution and can be used to simplify complex expressions or provide more descriptive names for values.<\/li>\n<\/ol>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>locals {\n  instance_count = length(var.instance_types)\n  instance_names = [ \"web-${count.index}\" for count.index in range(local.instance_count) ]\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Example: terraform { required_version = &#8220;>= 0.14&#8221; backend &#8220;s3&#8221; { bucket = &#8220;my-terraform-state&#8221; key = &#8220;terraform.tfstate&#8221; region = &#8220;us-west-2&#8221; } } Example: provider &#8220;aws&#8221; { region = &#8220;us-west-2&#8221; } Example:&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-33189","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/33189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=33189"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/33189\/revisions"}],"predecessor-version":[{"id":33193,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/33189\/revisions\/33193"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=33189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=33189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=33189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}