{"id":8003,"date":"2020-08-07T12:02:57","date_gmt":"2020-08-07T12:02:57","guid":{"rendered":"https:\/\/cloudkul.com\/blog\/?p=8003"},"modified":"2021-01-14T12:30:08","modified_gmt":"2021-01-14T12:30:08","slug":"introduction-to-terraform","status":"publish","type":"post","link":"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/","title":{"rendered":"Introduction to Terraform"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">What is Terraform<\/h3>\n\n\n\n<p>Terraform is a tool use for building, changing, and versioning infrastructure safely and efficiently. It can manage existing and popular service provider along with in house solutions.<\/p>\n\n\n\n<p>It uses HashiCorp Configuration Language (HCL) to manage environments of Operators and Infrastructure teams.<br><\/p>\n\n\n\n<p>The configuration file, which is use to describe it to run a single file or entire data center. It is use to generate an execution plan which describes about the working of code up till it reach to the desired state. And then executes it to build the described infrastructure. <\/p>\n\n\n\n<p>As if any change is apply in configuration then it is able to determine the change and create incremental execution plans which can be applied.<br><\/p>\n\n\n\n<p>It is use to manage low level (Compute instance, storage, and networking) as well as high level (DNS entries, SaaS features, etc) components.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/www.terraform.io\/docs\/index.html\" target=\"_blank\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" width=\"455\" height=\"111\" src=\"https:\/\/cloudkul.com\/blog\/wp-content\/uploads\/2021\/01\/terraform.png\" alt=\"\" class=\"wp-image-9271\" \/><\/a><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Features of Terraform :-<\/h3>\n\n\n\n<ul><li><strong>Infrastructure as Code &#8211;<\/strong> It is described using high level configuration syntax. In this we can code and build the resource, provide necessary credentials for the given IaaS provider, and by the use of terraform we can build and manage the created resources.<\/li><li><strong>Execution Plans &#8211;<\/strong> This is the best thing of terraform, when we create any terraform configuration, before apply it will show us execution plan about what it is use to perform after call apply.<\/li><li><strong>Resource Graph &#8211;<\/strong> It is use to build graph of all your resources, and simultaneously the creation and modification of any non dependent rescues. By this the user get insight into dependencies in their infrastructure.<\/li><li><strong>Change Automation &#8211;<\/strong> By this we can apply any complex change sets to our infrastructure with minimal human interaction.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Advantages of Terraform<\/h3>\n\n\n\n<ul><li><strong>Platform Agnostic &#8211;<\/strong> Now a days in single datacenter we have several different clouds and platforms to support various applications. With the help of it we can manage heterogeneous environment in single workflow by creating a configuration file. To fit the needs of project or organization.<\/li><li><strong>State Management &#8211;<\/strong> Terraform is use to create a state file when project is first initialized. It uses this local state to create plans and make changes in the infrastructure. Before any operation it will update the state with real infrastructure. If any change is made or a resource is appended to a configuration. Terraform is use to compares those changes with state file to show what changes are to be done with the update in new resource or resource modification.<\/li><li><strong>Operator Confidence &#8211;<\/strong> Terraform will do the task according to the plan it will not going to interrupt the previous configuration of any operator.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workflow<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/cloudkul.com\/blog\/wp-content\/uploads\/2020\/08\/1-1.png\" alt=\"\" class=\"wp-image-8012\" width=\"586\" height=\"100\" \/><\/figure><\/div>\n\n\n\n<ul><li><strong>Scope &#8211;<\/strong> Confirm what resources need to be created for a given project.<\/li><li><strong>Author &#8211;<\/strong> Use to create a configuration file in HCL, according to the scoped parameters.<\/li><li><strong>Initialize &#8211;<\/strong> Use \u201cterraform init\u201d in the project directory with the configuration files. By this the correct provider plugins will be download for the project.<\/li><li><strong>Plan &amp; Apply &#8211;<\/strong> Use \u201cterraform plan\u201d for verifying the creation process and then use \u201cterraform apply\u201d to execute .tf file. Which is use to create real resources as well as state file to compares the future changes of configuration files.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Use Cases<\/h3>\n\n\n\n<ul><li><strong>Heroku App Setup &#8211;<\/strong> It is use to ensure that all the add-ons are available. And also do configuration of DNSimple to set a CNAME, or setting up cloudflare as a CDN for the app. This all task is performed by terraform in under 30 seconds without using web interaction.<\/li><li><strong>Multi-Tier Application &#8211;<\/strong> In this each tier can be described as a collection or resources, terraform is use to handle the resources as well as dependencies between the tiers automatically. Terraform use to ensure the database tier is available before server get start. By modifying single count configuration value then we can scale each tier easily.<\/li><li><strong>Self-Service Clusters &#8211;<\/strong> Terraform configuration can be share within an organization enabling customer teams to use the configuration as a black box. And it is use as a tool to manage their services.<\/li><li><strong>Software Demos &#8211;<\/strong> By the help of terraform which allows end users to easily demo the software on their own infrastructure. <\/li><li><strong>Disposable Environments &#8211;<\/strong> Terraform can help tame the difficulty of maintaining parallel environments, and makes it practical to elastically create and destroy them.<\/li><li><strong>Software Defined Networking &#8211;<\/strong> With the help of terraform the user can automatically setup as well as modify settings by interfacing with the control layer.<\/li><li><strong>Resource Schedulers &#8211;<\/strong> Terraform is not only limited to physical providers like AWS. This allows terraform to be use as layers. To setup the physical infrastructure running the schedulers as well as provisioning onto the scheduled grid.<\/li><li><strong>Multi-Cloud Deployment &#8211;<\/strong> In this terraform is use to manage multiple cloud providers, and to even handle cross-cloud dependencies. Is use to help operator to build large-scale multi-cloud infrastructures.<\/li><\/ul>\n\n\n\n<p><strong>In case of any help or query, please<\/strong>&nbsp;<a href=\"https:\/\/cloudkul.com\/contact\/\"><strong>contact<\/strong><\/a>&nbsp;<strong>us or raise a<\/strong>&nbsp;<strong><a href=\"https:\/\/webkul.uvdesk.com\/en\/customer\/create-ticket\/\">ticket<\/a>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is Terraform Terraform is a tool use for building, changing, and versioning infrastructure safely <a class=\"text-primary\" title=\"read more\" href=\"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":33,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2],"tags":[413,412,415,414],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cloudkul Introduction to Terraform - Cloudkul Introduction to Terraform<\/title>\n<meta name=\"description\" content=\"Terraform is a tool use for building, changing, and versioning infrastructure safely and efficiently. Terraform is use to manage low level as well as high..\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cloudkul Introduction to Terraform - Cloudkul Introduction to Terraform\" \/>\n<meta property=\"og:description\" content=\"Terraform is a tool use for building, changing, and versioning infrastructure safely and efficiently. Terraform is use to manage low level as well as high..\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/\" \/>\n<meta property=\"og:site_name\" content=\"Cloudkul\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-07T12:02:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-14T12:30:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cloudkul.com\/blog\/wp-content\/uploads\/2021\/01\/terraform.png\" \/>\n<meta name=\"author\" content=\"Siddharth Chouradiya\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/\",\"url\":\"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/\",\"name\":\"Cloudkul Introduction to Terraform - Cloudkul Introduction to Terraform\",\"isPartOf\":{\"@id\":\"https:\/\/cloudkul.com\/blog\/#website\"},\"datePublished\":\"2020-08-07T12:02:57+00:00\",\"dateModified\":\"2021-01-14T12:30:08+00:00\",\"author\":{\"@id\":\"https:\/\/cloudkul.com\/blog\/#\/schema\/person\/9303394e1ef74da24b7bb4ac81e88706\"},\"description\":\"Terraform is a tool use for building, changing, and versioning infrastructure safely and efficiently. Terraform is use to manage low level as well as high..\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction to Terraform\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudkul.com\/blog\/#website\",\"url\":\"https:\/\/cloudkul.com\/blog\/\",\"name\":\"Cloudkul\",\"description\":\"Host your eCommerce Store on AWS with Optimized Performance\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudkul.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/cloudkul.com\/blog\/#\/schema\/person\/9303394e1ef74da24b7bb4ac81e88706\",\"name\":\"Siddharth Chouradiya\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/73437ba66ba4fee2da26aebcba96530e?s=96&d=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6148c37469011bc2f8e491ca8f5de495%3Fs%3D80&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/73437ba66ba4fee2da26aebcba96530e?s=96&d=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6148c37469011bc2f8e491ca8f5de495%3Fs%3D80&r=g\",\"caption\":\"Siddharth Chouradiya\"},\"url\":\"https:\/\/cloudkul.com\/blog\/author\/siddharthchouradiya-cloud360\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cloudkul Introduction to Terraform - Cloudkul Introduction to Terraform","description":"Terraform is a tool use for building, changing, and versioning infrastructure safely and efficiently. Terraform is use to manage low level as well as high..","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:\/\/cloudkul.com\/blog\/introduction-to-terraform\/","og_locale":"en_US","og_type":"article","og_title":"Cloudkul Introduction to Terraform - Cloudkul Introduction to Terraform","og_description":"Terraform is a tool use for building, changing, and versioning infrastructure safely and efficiently. Terraform is use to manage low level as well as high..","og_url":"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/","og_site_name":"Cloudkul","article_published_time":"2020-08-07T12:02:57+00:00","article_modified_time":"2021-01-14T12:30:08+00:00","og_image":[{"url":"https:\/\/cloudkul.com\/blog\/wp-content\/uploads\/2021\/01\/terraform.png"}],"author":"Siddharth Chouradiya","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/","url":"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/","name":"Cloudkul Introduction to Terraform - Cloudkul Introduction to Terraform","isPartOf":{"@id":"https:\/\/cloudkul.com\/blog\/#website"},"datePublished":"2020-08-07T12:02:57+00:00","dateModified":"2021-01-14T12:30:08+00:00","author":{"@id":"https:\/\/cloudkul.com\/blog\/#\/schema\/person\/9303394e1ef74da24b7bb4ac81e88706"},"description":"Terraform is a tool use for building, changing, and versioning infrastructure safely and efficiently. Terraform is use to manage low level as well as high..","breadcrumb":{"@id":"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/cloudkul.com\/blog\/introduction-to-terraform\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Introduction to Terraform"}]},{"@type":"WebSite","@id":"https:\/\/cloudkul.com\/blog\/#website","url":"https:\/\/cloudkul.com\/blog\/","name":"Cloudkul","description":"Host your eCommerce Store on AWS with Optimized Performance","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudkul.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/cloudkul.com\/blog\/#\/schema\/person\/9303394e1ef74da24b7bb4ac81e88706","name":"Siddharth Chouradiya","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/73437ba66ba4fee2da26aebcba96530e?s=96&d=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6148c37469011bc2f8e491ca8f5de495%3Fs%3D80&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/73437ba66ba4fee2da26aebcba96530e?s=96&d=https%3A%2F%2Fs.gravatar.com%2Favatar%2F6148c37469011bc2f8e491ca8f5de495%3Fs%3D80&r=g","caption":"Siddharth Chouradiya"},"url":"https:\/\/cloudkul.com\/blog\/author\/siddharthchouradiya-cloud360\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/cloudkul.com\/blog\/wp-json\/wp\/v2\/posts\/8003"}],"collection":[{"href":"https:\/\/cloudkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudkul.com\/blog\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudkul.com\/blog\/wp-json\/wp\/v2\/comments?post=8003"}],"version-history":[{"count":31,"href":"https:\/\/cloudkul.com\/blog\/wp-json\/wp\/v2\/posts\/8003\/revisions"}],"predecessor-version":[{"id":9272,"href":"https:\/\/cloudkul.com\/blog\/wp-json\/wp\/v2\/posts\/8003\/revisions\/9272"}],"wp:attachment":[{"href":"https:\/\/cloudkul.com\/blog\/wp-json\/wp\/v2\/media?parent=8003"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudkul.com\/blog\/wp-json\/wp\/v2\/categories?post=8003"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudkul.com\/blog\/wp-json\/wp\/v2\/tags?post=8003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}