{"id":107341,"date":"2022-02-16T11:00:00","date_gmt":"2022-02-16T09:00:00","guid":{"rendered":"https:\/\/examples.javacodegeeks.com\/?p=107341"},"modified":"2022-11-04T15:44:58","modified_gmt":"2022-11-04T13:44:58","slug":"terraform-tutorial-for-beginners","status":"publish","type":"post","link":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/","title":{"rendered":"Terraform Tutorial for Beginners"},"content":{"rendered":"<p>This is a Terraform tutorial for beginners.<\/p>\n<h2 class=\"wp-block-heading\" id=\"1-overview\">1. Overview<\/h2>\n<p>Terraform was created on May 21st, 2014 by Mitchell Hashimoto. Hashimoto was Hashicorp&#8217;s founder.  Terraform is used for building code and handling infrastructure security. Terraform is a popular DevOps tool in the software world.<\/p>\n<h2 class=\"wp-block-heading\" id=\"2-terraform-tutorial\">2. Terraform Tutorial<\/h2>\n<h3 class=\"wp-block-heading\" id=\"2-1-prerequisites\"><a><\/a>2.1 Prerequisites<\/h3>\n<p>Terraform is necessary on the operating system in which you want to execute the code.<\/p>\n<h3 class=\"wp-block-heading\" id=\"2-2-download\"><a><\/a>2.2 Download<\/h3>\n<p>You can download Terraform from this web<a href=\"https:\/\/www.terraform.io\/downloads\">site<\/a>. <\/p>\n<h3 class=\"wp-block-heading\" id=\"2-3-setup\"><a><\/a>2.3 Setup<\/h3>\n<h4 class=\"wp-block-heading\" id=\"2-3-1-terraform-setup\">2.3.1 Terraform Setup<\/h4>\n<p>You can set up the Terraform by using the command below on macOS:<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Setup<\/em><\/span><\/p>\n<pre class=\"brush:plain\">brew tap hashicorp\/tap\nbrew install hashicorp\/tap\/terraform\n<\/pre>\n<p>You can run this command to check if it is working:<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Execution<\/em><\/span><\/p>\n<pre class=\"brush:plain\"> terraform -v\n<\/pre>\n<p>The output of the above command executed is shown below:<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Execution Output<\/em><\/span><\/p>\n<pre class=\"brush:plain\">apples-MacBook-Air:~ bhagvan.kommadi$  terraform -v\nTerraform v1.1.5\non darwin_amd64\napples-MacBook-Air:~ bhagvan.kommadi$\n<\/pre>\n<p>The terraform execution command has other options which are shown below:<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Execution Options<\/em><\/span><\/p>\n<pre class=\"brush:plain\">$ terraform Usage: terraform [-version] [-help]  [args] ... help content omitted\n<\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-2-4-start-a-new-terraform-project\">2.4  Start a New Terraform Project<\/h3>\n<p>You can create a Terraform Project using resource definitions. Resource definitions are the files with the suffix .tf. You can use Terraform&#8217;s language for configuring the resources like EC2 instance, an Azure MariaDB, or a DNS entry. You can create a sample Terraform project with the commands shown below:<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Project Creation Commands<\/em><\/span><\/p>\n<pre class=\"brush:plain\">$ cd $HOME\n$ mkdir sample-terraform\n$ cd sample-terraform\n$ cat &gt; main.tf &lt;&lt;EOF\nprovider \"local\" {\n  version = \"~&gt; 1.4\"\n }\nresource \"local_file\" \"sample\" {\ncontent = \"sample, Terraform\"\nfilename = \"sample.txt\"\n}\nEOF\n<\/pre>\n<p>The above main.tf file has resource and provider definitions. Local provider version 1.4 or other compatible version is used. sample of type local_file has the resource definition. You can run the terraform project by using the command below:<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Project Execution<\/em><\/span><\/p>\n<pre class=\"brush:plain\">terraform init\n<\/pre>\n<p>The output of the above command when executed is shown below:<\/p>\n<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Project Execution Output<\/em><\/span><\/p>\n<pre class=\"brush:plain\">apples-MacBook-Air:sample-terraform bhagvan.kommadi$ terraform init\n\nInitializing the backend...\n\nInitializing provider plugins...\n- Finding hashicorp\/local versions matching \"~&gt; 1.4\"...\n- Installing hashicorp\/local v1.4.0...\n- Installed hashicorp\/local v1.4.0 (signed by HashiCorp)\n\nTerraform has created a lock file .terraform.lock.hcl to record the provider\nselections it made above. Include this file in your version control repository\nso that Terraform can guarantee to make the same selections by default when\nyou run \"terraform init\" in the future.\n\n\u2577\n\u2502 Warning: Version constraints inside provider configuration blocks are deprecated\n\u2502 \n\u2502   on main.tf line 2, in provider \"local\":\n\u2502    2:   version = \"~&gt; 1.4\"\n\u2502 \n\u2502 Terraform 0.13 and earlier allowed provider version constraints inside the\n\u2502 provider configuration block, but that is now deprecated and will be removed\n\u2502 in a future version of Terraform. To silence this warning, move the provider\n\u2502 version constraint into the required_providers block.\n\u2575\n\nTerraform has been successfully initialized!\n\nYou may now begin working with Terraform. Try running \"terraform plan\" to see\nany changes that are required for your infrastructure. All Terraform commands\nshould now work.\n\nIf you ever set or change modules or backend configuration for Terraform,\nrerun this command to reinitialize your working directory. If you forget, other\ncommands will detect it and remind you to do so if necessary.\n<\/pre>\n<p>Above, terraform reads the project files and downloads the required providers from public <a href=\"https:\/\/registry.terraform.io\/\">registries<\/a>. The next step is to execute the plan command as shown below:<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Project Execution  &#8211; Plan<\/em><\/span><\/p>\n<pre class=\"brush:plain\"> terraform plan\n<\/pre>\n<p>The output of the above command when executed is shown below:<\/p>\n<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Project Execution  &#8211; Plan Output<\/em><\/span><\/p>\n<pre class=\"brush:plain\">apples-MacBook-Air:sample-terraform bhagvan.kommadi$ terraform plan\n\nTerraform used the selected providers to generate the following execution plan.\nResource actions are indicated with the following symbols:\n  + create\n\nTerraform will perform the following actions:\n\n  # local_file.sample will be created\n  + resource \"local_file\" \"sample\" {\n      + content              = \"sample, Terraform\"\n      + directory_permission = \"0777\"\n      + file_permission      = \"0777\"\n      + filename             = \"sample.txt\"\n      + id                   = (known after apply)\n    }\n\nPlan: 1 to add, 0 to change, 0 to destroy.\n\u2577\n\u2502 Warning: Version constraints inside provider configuration blocks are deprecated\n\u2502 \n\u2502   on main.tf line 2, in provider \"local\":\n\u2502    2:   version = \"~&gt; 1.4\"\n\u2502 \n\u2502 Terraform 0.13 and earlier allowed provider version constraints inside the\n\u2502 provider configuration block, but that is now deprecated and will be removed\n\u2502 in a future version of Terraform. To silence this warning, move the provider\n\u2502 version constraint into the required_providers block.\n\u2575\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nNote: You didn't use the -out option to save this plan, so Terraform can't\nguarantee to take exactly these actions if you run \"terraform apply\" now.\napples-MacBook-Air:sample-terraform bhagvan.kommadi$\n<\/pre>\n<p>The above terraform plan command helps in verifying the actions for resource creation. Terraform assumes that default values will be used where ever you have not shared them in the resource definition. You can now execute the apply command for resource creation.<\/p>\n<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Project Execution  &#8211; Apply <\/em><\/span><\/p>\n<pre class=\"brush:plain\"> terraform apply\n<\/pre>\n<p>The output of the above command when executed is shown below:<\/p>\n<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Project Execution  &#8211; Apply Output <\/em><\/span><\/p>\n<pre class=\"brush:plain\">apples-MacBook-Air:sample-terraform bhagvan.kommadi$ terraform apply\n\nTerraform used the selected providers to generate the following execution plan.\nResource actions are indicated with the following symbols:\n  + create\n\nTerraform will perform the following actions:\n\n  # local_file.sample will be created\n  + resource \"local_file\" \"sample\" {\n      + content              = \"sample, Terraform\"\n      + directory_permission = \"0777\"\n      + file_permission      = \"0777\"\n      + filename             = \"sample.txt\"\n      + id                   = (known after apply)\n    }\n\nPlan: 1 to add, 0 to change, 0 to destroy.\n\u2577\n\u2502 Warning: Version constraints inside provider configuration blocks are deprecated\n\u2502 \n\u2502   on main.tf line 2, in provider \"local\":\n\u2502    2:   version = \"~&gt; 1.4\"\n\u2502 \n\u2502 Terraform 0.13 and earlier allowed provider version constraints inside the\n\u2502 provider configuration block, but that is now deprecated and will be removed\n\u2502 in a future version of Terraform. To silence this warning, move the provider\n\u2502 version constraint into the required_providers block.\n\u2575\n\nDo you want to perform these actions?\n  Terraform will perform the actions described above.\n  Only 'yes' will be accepted to approve.\n\n  Enter a value: yes\n\nlocal_file.sample: Creating...\nlocal_file.sample: Creation complete after 0s [id=37d2f5fd67a0734d5d8d1626a47ae46f5b4dee17]\n\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\napples-MacBook-Air:sample-terraform bhagvan.kommadi$\n<\/pre>\n<p>In the above command, the execution plan is generated.   You can see the sample.txt. It will have the expected content Sample, Terraform.<\/p>\n<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Project Execution &#8211; Sample.txt <\/em><\/span><\/p>\n<pre class=\"brush:plain\">sample, Terraform\n<\/pre>\n<p>You can run the apply-auto-approve command next.<\/p>\n<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Project Execution &#8211; Apply Auto Approve <\/em><\/span><\/p>\n<pre class=\"brush:plain\">terraform apply -auto-approve\n<\/pre>\n<p>The output of the above command when executed is shown below:<\/p>\n<\/p>\n<p><span style=\"text-decoration: underline\"><em>Terraform Project Execution &#8211; Apply Auto Approve Output<\/em><\/span><\/p>\n<pre class=\"brush:plain\">apples-MacBook-Air:sample-terraform bhagvan.kommadi$ terraform apply -auto-approve\nlocal_file.sample: Refreshing state... [id=37d2f5fd67a0734d5d8d1626a47ae46f5b4dee17]\n\nNo changes. Your infrastructure matches the configuration.\n\nTerraform has compared your real infrastructure against your configuration and\nfound no differences, so no changes are needed.\n\u2577\n\u2502 Warning: Version constraints inside provider configuration blocks are deprecated\n\u2502 \n\u2502   on main.tf line 2, in provider \"local\":\n\u2502    2:   version = \"~&gt; 1.4\"\n\u2502 \n\u2502 Terraform 0.13 and earlier allowed provider version constraints inside the\n\u2502 provider configuration block, but that is now deprecated and will be removed\n\u2502 in a future version of Terraform. To silence this warning, move the provider\n\u2502 version constraint into the required_providers block.\n\u2575\n\nApply complete! Resources: 0 added, 0 changed, 0 destroyed\n<\/pre>\n<p>You can have modules in Terraform which can have resources defined across different projects.<\/p>\n<h2 class=\"wp-block-heading\" id=\"3-download-the-source-code\">3. Download the Source Code<\/h2>\n<div class=\"download\"><strong>Download<\/strong><br \/>\nYou can download the full source code of this example here:<a href=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/02\/terraform.zip\"> <strong>Terraform Tutorial for Beginners<\/strong><\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>This is a Terraform tutorial for beginners. 1. Overview Terraform was created on May 21st, 2014 by Mitchell Hashimoto. Hashimoto was Hashicorp&#8217;s founder. Terraform is used for building code and handling infrastructure security. Terraform is a popular DevOps tool in the software world. 2. Terraform Tutorial 2.1 Prerequisites Terraform is necessary on the operating system &hellip;<\/p>\n","protected":false},"author":31,"featured_media":116312,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46825],"tags":[46750],"class_list":["post-107341","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-terraform","tag-terraform"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Terraform Tutorial for Beginners - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Terraform tutorial for beginners: a popular DevOps tool. It can be used for configuring EC2 instance, an Azure MariaDB, or a DNS entry.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Terraform Tutorial for Beginners - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Terraform tutorial for beginners: a popular DevOps tool. It can be used for configuring EC2 instance, an Azure MariaDB, or a DNS entry.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/\" \/>\n<meta property=\"og:site_name\" content=\"Examples Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/bhagvank\" \/>\n<meta property=\"article:published_time\" content=\"2022-02-16T09:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-04T13:44:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/11\/terraform-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Bhagvan Kommadi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bhaggu\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bhagvan Kommadi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/\"},\"author\":{\"name\":\"Bhagvan Kommadi\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/4575ae335b8ff016be62c3b927d5d5e6\"},\"headline\":\"Terraform Tutorial for Beginners\",\"datePublished\":\"2022-02-16T09:00:00+00:00\",\"dateModified\":\"2022-11-04T13:44:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/\"},\"wordCount\":454,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/11\/terraform-logo.jpg\",\"keywords\":[\"terraform\"],\"articleSection\":[\"Terraform\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/\",\"name\":\"Terraform Tutorial for Beginners - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/11\/terraform-logo.jpg\",\"datePublished\":\"2022-02-16T09:00:00+00:00\",\"dateModified\":\"2022-11-04T13:44:58+00:00\",\"description\":\"Terraform tutorial for beginners: a popular DevOps tool. It can be used for configuring EC2 instance, an Azure MariaDB, or a DNS entry.\",\"breadcrumb\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#primaryimage\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/11\/terraform-logo.jpg\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/11\/terraform-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/examples.javacodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/devops\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Terraform\",\"item\":\"https:\/\/examples.javacodegeeks.com\/category\/devops\/terraform\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Terraform Tutorial for Beginners\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#website\",\"url\":\"https:\/\/examples.javacodegeeks.com\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Examples and Code Snippets\",\"publisher\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/examples.javacodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/examples.javacodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/javacodegeeks\",\"https:\/\/x.com\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/4575ae335b8ff016be62c3b927d5d5e6\",\"name\":\"Bhagvan Kommadi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/bhagvan.-kommadi-96x96.jpg\",\"contentUrl\":\"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/bhagvan.-kommadi-96x96.jpg\",\"caption\":\"Bhagvan Kommadi\"},\"description\":\"Bhagvan Kommadi is the Founder of Architect Corner &amp; has around 20 years\u2019 experience in the industry, ranging from large scale enterprise development to helping incubate software product start-ups. He has done Masters in Industrial Systems Engineering at Georgia Institute of Technology (1997) and Bachelors in Aerospace Engineering from Indian Institute of Technology, Madras (1993). He is member of IFX forum,Oracle JCP and participant in Java Community Process. He founded Quantica Computacao, the first quantum computing startup in India. Markets and Markets have positioned Quantica Computacao in \u2018Emerging Companies\u2019 section of Quantum Computing quadrants. Bhagvan has engineered and developed simulators and tools in the area of quantum technology using IBM Q, Microsoft Q# and Google QScript. He has reviewed the Manning book titled : \\\"Machine Learning with TensorFlow\u201d. He is also the author of Packt Publishing book - \\\"Hands-On Data Structures and Algorithms with Go\\\".He is member of IFX forum,Oracle JCP and participant in Java Community Process. He is member of the MIT Technology Review Global Panel.\",\"sameAs\":[\"http:\/\/www.architectcorner.com\",\"https:\/\/www.facebook.com\/bhagvank\",\"https:\/\/in.linkedin.com\/pub\/bhagvan-kommadi\/0\/3a6\/b46\",\"https:\/\/x.com\/bhaggu\"],\"url\":\"https:\/\/examples.javacodegeeks.com\/author\/bhagvan-kommadi\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Terraform Tutorial for Beginners - Java Code Geeks","description":"Terraform tutorial for beginners: a popular DevOps tool. It can be used for configuring EC2 instance, an Azure MariaDB, or a DNS entry.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/","og_locale":"en_US","og_type":"article","og_title":"Terraform Tutorial for Beginners - Java Code Geeks","og_description":"Terraform tutorial for beginners: a popular DevOps tool. It can be used for configuring EC2 instance, an Azure MariaDB, or a DNS entry.","og_url":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/","og_site_name":"Examples Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_author":"https:\/\/www.facebook.com\/bhagvank","article_published_time":"2022-02-16T09:00:00+00:00","article_modified_time":"2022-11-04T13:44:58+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/11\/terraform-logo.jpg","type":"image\/jpeg"}],"author":"Bhagvan Kommadi","twitter_card":"summary_large_image","twitter_creator":"@bhaggu","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Bhagvan Kommadi","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#article","isPartOf":{"@id":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/"},"author":{"name":"Bhagvan Kommadi","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/4575ae335b8ff016be62c3b927d5d5e6"},"headline":"Terraform Tutorial for Beginners","datePublished":"2022-02-16T09:00:00+00:00","dateModified":"2022-11-04T13:44:58+00:00","mainEntityOfPage":{"@id":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/"},"wordCount":454,"commentCount":0,"publisher":{"@id":"https:\/\/examples.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#primaryimage"},"thumbnailUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/11\/terraform-logo.jpg","keywords":["terraform"],"articleSection":["Terraform"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/","url":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/","name":"Terraform Tutorial for Beginners - Java Code Geeks","isPartOf":{"@id":"https:\/\/examples.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#primaryimage"},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#primaryimage"},"thumbnailUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/11\/terraform-logo.jpg","datePublished":"2022-02-16T09:00:00+00:00","dateModified":"2022-11-04T13:44:58+00:00","description":"Terraform tutorial for beginners: a popular DevOps tool. It can be used for configuring EC2 instance, an Azure MariaDB, or a DNS entry.","breadcrumb":{"@id":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#primaryimage","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/11\/terraform-logo.jpg","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/11\/terraform-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/examples.javacodegeeks.com\/terraform-tutorial-for-beginners\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/examples.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"DevOps","item":"https:\/\/examples.javacodegeeks.com\/category\/devops\/"},{"@type":"ListItem","position":3,"name":"Terraform","item":"https:\/\/examples.javacodegeeks.com\/category\/devops\/terraform\/"},{"@type":"ListItem","position":4,"name":"Terraform Tutorial for Beginners"}]},{"@type":"WebSite","@id":"https:\/\/examples.javacodegeeks.com\/#website","url":"https:\/\/examples.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Examples and Code Snippets","publisher":{"@id":"https:\/\/examples.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/examples.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/examples.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/examples.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/4575ae335b8ff016be62c3b927d5d5e6","name":"Bhagvan Kommadi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/examples.javacodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/bhagvan.-kommadi-96x96.jpg","contentUrl":"https:\/\/examples.javacodegeeks.com\/wp-content\/uploads\/2019\/02\/bhagvan.-kommadi-96x96.jpg","caption":"Bhagvan Kommadi"},"description":"Bhagvan Kommadi is the Founder of Architect Corner &amp; has around 20 years\u2019 experience in the industry, ranging from large scale enterprise development to helping incubate software product start-ups. He has done Masters in Industrial Systems Engineering at Georgia Institute of Technology (1997) and Bachelors in Aerospace Engineering from Indian Institute of Technology, Madras (1993). He is member of IFX forum,Oracle JCP and participant in Java Community Process. He founded Quantica Computacao, the first quantum computing startup in India. Markets and Markets have positioned Quantica Computacao in \u2018Emerging Companies\u2019 section of Quantum Computing quadrants. Bhagvan has engineered and developed simulators and tools in the area of quantum technology using IBM Q, Microsoft Q# and Google QScript. He has reviewed the Manning book titled : \"Machine Learning with TensorFlow\u201d. He is also the author of Packt Publishing book - \"Hands-On Data Structures and Algorithms with Go\".He is member of IFX forum,Oracle JCP and participant in Java Community Process. He is member of the MIT Technology Review Global Panel.","sameAs":["http:\/\/www.architectcorner.com","https:\/\/www.facebook.com\/bhagvank","https:\/\/in.linkedin.com\/pub\/bhagvan-kommadi\/0\/3a6\/b46","https:\/\/x.com\/bhaggu"],"url":"https:\/\/examples.javacodegeeks.com\/author\/bhagvan-kommadi\/"}]}},"_links":{"self":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/107341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/users\/31"}],"replies":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=107341"}],"version-history":[{"count":0,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/107341\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/media\/116312"}],"wp:attachment":[{"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=107341"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=107341"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/examples.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=107341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}