HashiCorp Terraform은 클라우드 인프라를 프로비저닝하고 관리할 수 있게 해주는 코드형 인프라(IaC) 도구입니다. Terraform은 클라우드 제공업체 및 기타 API와 상호작용할 수 있는 제공업체라는 플러그인을 제공합니다. Google Cloud용 Terraform 제공업체를 사용하여 Cloud Build를 비롯한 Google Cloud 리소스를 프로비저닝하고 관리할 수 있습니다.
이 페이지에서는 Terraform 작동 방식에 관한 소개와 Google Cloud에서 Terraform을 사용하기 시작하는 데 도움이 되는 몇 가지 리소스를 포함하여 Cloud Build에서 Terraform을 사용하는 방법을 소개합니다. Cloud Build용 Terraform 참조 문서, 코드 예시, Terraform을 사용하여 Cloud Build 리소스를 프로비저닝하는 방법에 관한 가이드 링크도 확인할 수 있습니다.
Terraform에는 구성 중심의 선언적인 구문이 있으며, 이 구문을 사용하여 Google Cloud 프로젝트에서 프로비저닝하려는 인프라를 설명할 수 있습니다. Terraform 구성 파일 하나 이상에서 이 구성을 작성한 후 Terraform CLI를 사용하여 이 구성을 Cloud Build 리소스에 적용할 수 있습니다.
다음 단계에서는 Terraform의 작동 방식을 설명합니다.
Terraform 구성 파일에서 프로비저닝할 인프라를 설명합니다. 인프라를 프로비저닝하는 방법을 설명하는 코드를 작성할 필요가 없습니다. Terraform이 인프라를 자동으로 프로비저닝합니다.
terraform plan 명령어를 실행합니다. 이 명령어는 구성을 평가하고 실행 계획을 생성합니다. 계획을 검토하고 필요에 따라 변경할 수 있습니다.
terraform apply 명령어를 실행하여 다음 작업을 수행합니다.
백그라운드에서 해당 Cloud Build API를 호출하여 실행 계획에 따라 인프라를 프로비저닝합니다.
구성 파일의 리소스를 실제 인프라의 리소스에 매핑하는 JSON 파일인 Terraform 상태 파일을 생성합니다. Terraform은 이 파일을 사용하여 인프라의 최신 상태를 기록하고 리소스를 생성, 업데이트, 삭제할 시기를 결정합니다.
terraform apply를 실행하면 Terraform은 상태 파일의 매핑을 사용하여 기존 인프라를 코드와 비교하고 필요에 따라 업데이트합니다.
리소스 객체가 구성 파일에 정의되어 있지만 상태 파일에 존재하지 않는 경우 Terraform이 객체를 생성합니다.
리소스 객체가 상태 파일에 있지만 구성 파일의 구성과 다른 경우 Terraform은 구성 파일과 일치하도록 리소스를 업데이트합니다.
상태 파일의 리소스 객체가 구성 파일과 일치하면 Terraform은 리소스를 변경하지 않은 상태로 둡니다.
Cloud Build용 Terraform 리소스
리소스는 Terraform 언어의 기본 요소입니다. 각 리소스 블록은 가상 네트워크 또는 컴퓨팅 인스턴스와 같은 하나 이상의 인프라 객체를 설명합니다.
다음 표에는 Cloud Build에 사용할 수 있는 Terraform 리소스가 나와 있습니다.
이 가이드에서는 Cloud Build 및 Terraform을 사용하여 Compute Engine 관리형 인스턴스 그룹(MIG)에서 제로 다운타임 블루-그린 배포를 수행하는 방법을 설명합니다.
Cloud Build용 Terraform 모듈 및 청사진
모듈과 청사진은 대규모 Google Cloud 리소스 프로비저닝 및 관리를 자동화하는 데 유용합니다. 모듈은 Terraform 리소스의 논리적 추상화를 만드는 재사용 가능한 Terraform 구성 파일 집합입니다. 청사진은 배포 및 재사용이 가능한 모듈의 패키지이며 특정 솔루션을 구현하고 문서화하는 정책입니다.
이 모듈은 Google Cloud 조직을 부트스트랩하여 Cloud Foundation Toolkit (CFT) 사용을 시작하는 데 필요한 모든 리소스와 권한을 만드는 데 도움을 줍니다. 기반 코드에 Cloud Build 및 Cloud Source Repositories를 사용하려는 사용자를 위해 이 모듈에는 필요한 모든 리소스를 부트스트랩하는 하위 모듈이 포함되어 있습니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[[["\u003cp\u003eTerraform is an infrastructure-as-code tool used to provision and manage cloud infrastructure, including Google Cloud resources like Cloud Build, through its declarative syntax and configuration files.\u003c/p\u003e\n"],["\u003cp\u003eThe process of using Terraform involves describing your desired infrastructure in a configuration file, generating an execution plan with \u003ccode\u003eterraform plan\u003c/code\u003e, and then applying the plan with \u003ccode\u003eterraform apply\u003c/code\u003e, which provisions resources and creates a state file for tracking.\u003c/p\u003e\n"],["\u003cp\u003eTerraform utilizes resources to describe infrastructure objects, and it provides specific resources for Cloud Build v1 and v2, such as \u003ccode\u003egoogle_cloudbuild_trigger\u003c/code\u003e and \u003ccode\u003egoogle_cloudbuildv2_connection\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThere are numerous guides available for connecting various repositories (like GitHub, GitLab, and Bitbucket) to Cloud Build using Terraform, allowing for automated builds from these platforms.\u003c/p\u003e\n"],["\u003cp\u003eTerraform modules and blueprints, such as the "Secure CI/CD pipeline" and \u003ccode\u003eterraform-google-bootstrap\u003c/code\u003e, offer reusable and scalable solutions for managing Google Cloud resources, including those related to Cloud Build.\u003c/p\u003e\n"]]],[],null,["# Provision Cloud Build resources with Terraform\n\nHashiCorp Terraform is an infrastructure-as-code (IaC) tool that lets you\nprovision and manage cloud infrastructure. Terraform provides plugins called\n*providers* that let you interact with cloud providers and other APIs. You can\nuse the *Terraform provider for Google Cloud* to provision and manage\nGoogle Cloud resources, including Cloud Build.\n\nThis page introduces you to using Terraform with Cloud Build, including an\nintroduction to how Terraform works and some resources to help you get started using\nTerraform with Google Cloud. You'll also find links to Terraform reference docs for\nCloud Build, code examples, and guides for using Terraform to provision\nCloud Build resources.\n\nFor instructions on how to get started with Terraform for Google Cloud, see\n[Install and configure Terraform](/docs/terraform/install-configure-terraform) or the\n[Terraform for Google Cloud quickstart](/docs/terraform/create-vm-instance).\n\nHow Terraform works\n-------------------\n\nTerraform has a declarative and configuration-oriented syntax, which you can\nuse to describe the infrastructure that you want to provision in your\nGoogle Cloud project. After you author this configuration in one or more\nTerraform configuration files, you can use the Terraform CLI to apply this\nconfiguration to your Cloud Build resources.\n\nThe following steps explain how Terraform works:\n\n1. You describe the infrastructure you want to provision in a *Terraform\n configuration file*. You don't need to write code describing how to provision the infrastructure. Terraform provisions the infrastructure for you.\n2. You run the `terraform plan` command, which evaluates your configuration and generates an execution plan. You can review the plan and make changes as needed.\n3. You run the `terraform apply` command, which performs the following\n actions:\n\n 1. It provisions your infrastructure based on your execution plan by invoking the corresponding Cloud Build APIs in the background.\n 2. It creates a *Terraform state file*, which is a JSON file that maps the resources in your configuration file to the resources in the real-world infrastructure. Terraform uses this file to keep a record of the most recent state of your infrastructure, and to determine when to create, update, and destroy resources.\n 3. When you run `terraform apply`, Terraform uses the mapping in\n the state file to compare the existing infrastructure to the code, and make\n updates as necessary:\n\n - If a resource object is defined in the configuration file, but doesn't exist in the state file, Terraform creates it.\n - If a resource object exists in the state file, but has a different configuration from your configuration file, Terraform updates the resource to match your configuration file.\n - If a resource object in the state file matches your configuration file, Terraform leaves the resource unchanged.\n\nTerraform resources for Cloud Build\n-----------------------------------\n\n*Resources* are the fundamental elements in the Terraform language. Each\nresource block describes one or more infrastructure objects, such as virtual\nnetworks or compute instances.\n\nThe following table lists the Terraform resources available for\nCloud Build:\n\n\n\u003cbr /\u003e\n\nTerraform-based guides for Cloud Build\n--------------------------------------\n\nThe following table lists Terraform-based how-to guides and tutorials for\nCloud Build:\n\n\n\u003cbr /\u003e\n\nTerraform modules and blueprints for Cloud Build\n------------------------------------------------\n\nModules and blueprints help you automate provisioning and managing of\nGoogle Cloud resources at scale. A *module* is a\nreusable set of Terraform configuration files that creates a logical abstraction\nof Terraform resources. A *blueprint* is a package of deployable and reusable\nmodules, and a policy that implements and documents a specific solution.\n\nThe following table lists modules and blueprints related to\nCloud Build:\n\n\n\u003cbr /\u003e\n\nWhat's next\n-----------\n\n- [Terraform code samples for Cloud Build](/docs/samples?language=terraform)\n- [Terraform on Google Cloud documentation](/docs/terraform)\n- [Google Cloud provider documentation in HashiCorp](https://registry.terraform.io/providers/hashicorp/google/latest/docs)\n- [Infrastructure as code for Google Cloud](/docs/terraform/iac-overview)"]]