{"id":48731,"date":"2025-03-12T02:39:54","date_gmt":"2025-03-12T02:39:54","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=48731"},"modified":"2026-02-21T07:26:50","modified_gmt":"2026-02-21T07:26:50","slug":"terraform-cloud-hcp-terraform-tutorials-workspace-workflow-types","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/terraform-cloud-hcp-terraform-tutorials-workspace-workflow-types\/","title":{"rendered":"Terraform Cloud (HCP Terraform) Tutorials: Workspace Workflow types"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2025\/03\/Screenshot-2025-03-12-at-11.39.24%E2%80%AFAM-1024x365.png\" alt=\"\" class=\"wp-image-48733\"><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<p>Terraform Cloud (HCP Terraform) provides different <strong>workspace workflow types<\/strong>, allowing teams to manage infrastructure efficiently based on their preferred automation and collaboration methods. Below are the primary workspace workflow types available in HCP Terraform.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. UI\/VCS-Driven Workflow<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Description:<\/strong><br>This is the most commonly used workflow in HCP Terraform. A workspace is linked to a <strong>Version Control System (VCS) repository<\/strong> (such as GitHub, GitLab, Bitbucket, or Azure DevOps), and Terraform automatically triggers a plan when new changes are committed. If a <strong>pull request (PR)<\/strong> is created, Terraform executes a speculative plan, helping teams review the impact of changes before merging.<\/li>\n\n\n\n<li><strong>Use Case:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Best for <strong>GitOps workflows<\/strong>, where infrastructure changes are managed through <strong>pull requests and code reviews<\/strong>.<\/li>\n\n\n\n<li>Ideal for <strong>teams collaborating<\/strong> on infrastructure-as-code (IaC) using version control.<\/li>\n\n\n\n<li>Useful for <strong>automation<\/strong>, as runs are automatically queued when code changes.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. API-Driven Workflow<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Description:<\/strong><br>This workflow does <strong>not require a direct connection to a VCS<\/strong>. Instead, Terraform configurations are uploaded <strong>via API<\/strong> from an external system such as a <strong>CI\/CD pipeline<\/strong>, automation scripts, or custom integrations. Runs are triggered programmatically by pushing configuration files to Terraform Cloud.<\/li>\n\n\n\n<li><strong>Use Case:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Suitable for organizations using <strong>custom automation tools<\/strong> that need Terraform to be part of a larger workflow.<\/li>\n\n\n\n<li>Ideal when working with <strong>unsupported VCS providers<\/strong> or dynamically generated Terraform configurations.<\/li>\n\n\n\n<li>Useful for <strong>event-driven automation<\/strong>, where infrastructure changes are triggered by external workflows.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. CLI-Driven Workflow<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Description:<\/strong><br>The <strong>CLI-driven workflow<\/strong> allows users to run Terraform directly from the <strong>Terraform CLI<\/strong> while still taking advantage of Terraform Cloud\u2019s features like remote execution, state management, policy enforcement, and private module registries. Instead of running Terraform locally, commands like <code>terraform plan<\/code> and <code>terraform apply<\/code> execute on Terraform Cloud, ensuring consistency and governance.<\/li>\n\n\n\n<li><strong>Use Case:<\/strong>\n<ul class=\"wp-block-list\">\n<li>Best for <strong>teams already using Terraform CLI<\/strong> but want the benefits of centralized collaboration.<\/li>\n\n\n\n<li>Useful for organizations that want <strong>fine-grained control<\/strong> over when and how Terraform runs are executed.<\/li>\n\n\n\n<li>Ideal for teams that <strong>do not use a VCS integration<\/strong> but still want Terraform Cloud&#8217;s <strong>state management and remote execution<\/strong> features.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Choosing the Right Workflow<\/strong><\/h2>\n\n\n\n<p>The choice of <strong>workspace workflow type<\/strong> depends on <strong>team size, automation needs, and infrastructure management approach<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Workflow Type<\/strong><\/th><th><strong>Best For<\/strong><\/th><\/tr><\/thead><tbody><tr><td><strong>UI\/VCS-Driven<\/strong><\/td><td>Teams using Git-based workflows and pull request reviews for infrastructure changes.<\/td><\/tr><tr><td><strong>API-Driven<\/strong><\/td><td>Custom automation pipelines, CI\/CD systems, and non-Git-based workflows.<\/td><\/tr><tr><td><strong>CLI-Driven<\/strong><\/td><td>Teams using Terraform CLI but need remote execution and collaboration features.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Each workflow provides flexibility in managing infrastructure as code, ensuring efficient automation, collaboration, and governance in Terraform Cloud.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\">\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Terraform Cloud (HCP Terraform) provides different workspace workflow types, allowing teams to manage infrastructure efficiently based on their preferred automation and collaboration methods. Below are the primary workspace workflow types&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-48731","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48731","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=48731"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48731\/revisions"}],"predecessor-version":[{"id":58921,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/48731\/revisions\/58921"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=48731"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=48731"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=48731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}