如何用Terraform在GCP中创建一个存储桶?

328 阅读3分钟

在这篇文章中,我们将在terraform的帮助下配置一个云存储桶并维护它。

让我们先来了解一下云存储

什么是云存储(Buckets)?

云存储是谷歌云平台的一个对象存储系统。这里的对象可以是任何类型的,可以是文件,也可以是大的二进制对象。这些对象被组织到桶中,重要的是要记住,云存储不是一个文件系统。它可以被称为一种服务,接收、存储和检索文件或对象。它也可以从一个虚拟机上访问。

每个存储对象都可以通过一个URL唯一寻址,你也可以授予IAM角色,使任何应用程序能够读写桶。

创建一个Bucket?

在谷歌云中创建一个Bucket是非常简单的,你可以通过各种方式来创建一个Bucket,比如说。

  1. 通过控制台
  2. 通过Gcloud Cli
  3. IAC

在这篇博客中,我们将使用terraform,这是一个基础设施作为代码的工具,我们将学习如何用它来创建一个Bucket。

让我们先创建一个Main.tf文件

为terraform添加提供者

每当我们想使用terraform时,我们要做的第一件事就是定义一个提供者,在我们今天的例子中是谷歌。

provider "google" {

credentials = file("~/gcp/access-keys.json")

project = var.project_id


}

在提供者中,我们还定义了用于认证的凭证的路径,也提到了项目ID。

创建一个Bucket资源的变量文件

在创建Bucket资源之前,让我们先创建一些我们将要使用的变量。

variable "bucket_name" {

  type = string

  description = "Bucket name"

}

variable "bucket_location" {

  type = string

  default = "us-east1"

}

variable "project_id" {

  type = string

}

variable "storage_class" {

  type = string

}

我们已经定义了这四个变量,即:

  1. Bucket name - 这将被用来定义Bucket的名字
  2. Bucket location - GCS的位置
  3. 项目ID--它定义了我们将使用的项目ID
  4. 存储类 - 它将定义桶的存储类。

创建一个谷歌存储桶资源

resource "google_storage_bucket" "default" {

  name = var.bucket_name

  storage_class = var.storage_class

  location = var.bucket_location

}

在这里你也可以为这个桶启用版本管理或加密和生命周期 你可以在官方的terraform文档中探索这些资源。我们在这里使用的存储类别是REGIONAL,如果你没有提供一个存储类别,那么谷歌默认给出的存储类别是STANDARD。它也支持其他选项,如MULTI_REGIONAL、NEARLINE、COLD LINE和ARCHIVE。你可以根据你的用例描述选择其中任何一个。

让我们添加另一个文件terraform.tfvars,并为我们创建的变量传递值。

bucket_name = "my-bucket-tf"

storage_class = "REGIONAL"

project_id = "neon-semiotics-351410"

让我们在terraform的帮助下配置这些资源

terraform init

Terraform initTerraform init

运行terraform计划

Terraform PlanTerraform Plan

Terraform计划看起来很好,现在我们可以运行terraform应用程序了。

Terraform applyTerraform apply

terraform计划也是成功的,你可以看到它已经创建了资源,现在为了验证它,我们可以登录到控制台,检查它是否创建了这个资源。

Console outputConsole output

你可以看到它已经创建了你的GCS资源,现在你可以用它来存储。

总结

在这篇文章中,我们看到了如何在Terraform的帮助下提供一个GCS桶,你也可以用它来存储你的tfstate。