0Pricing
DevOps Bootcamp · 课时

提供商与资源

了解 Terraform 如何与各种云服务和服务提供商交互,以及如何将独立的基础设施组件定义为资源。

提供商与资源 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

Terraform 的核心构建模块

欢迎!Terraform 通过代码帮助您管理云基础设施。但它究竟如何与云提供商交互,又如何定义您想要构建的内容呢?

本课将介绍两个基本概念:提供商和资源。它们是每个 Terraform 配置的基本构建模块,也是理解基础设施即代码如何运作的关键。

什么是 Terraform 提供商?

您可以将提供商理解为一种插件,它允许 Terraform 与外部服务或 API 交互。这可以是 AWS、Azure 或 Google Cloud 等云提供商,也可以是 GitHub、Kubernetes 或 Datadog 等服务。

  • 每个提供商都了解其服务所需的具体 API 调用。
  • 它会将您期望的基础设施转换为该服务能够执行的操作。
  • 您可以配置提供商,告诉 Terraform 要使用哪个服务以及如何进行身份验证。

声明提供商块

要使用提供商,您需要在 Terraform 配置文件中使用 provider 块进行声明。此块会指定提供商的名称及其所需的配置设置,例如云提供商所在的区域。

下面是 AWS 提供商的常见示例:

terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } } provider "aws" { region = "us-east-1" }
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "us-east-1"
}

提供商来源和版本

terraform 块中的 required_providers 部分非常重要。它会告诉 Terraform 到哪里查找提供商(即其 source),以及要使用哪个version。这样可以确保一致性,避免出现意外行为。

  • 来源:指定提供商在注册表中的路径(例如 hashicorp/aws)。
  • 版本:锁定提供商版本,避免新版本带来不兼容的更改。
  • 接着,provider "aws" 块会配置具体设置,例如为该提供商管理的所有资源设置 AWS region。

什么是 Terraform 资源?

资源是描述基础设施中单个组件的块。它可以是虚拟机(VM)、网络、数据库、存储桶,甚至是用户账户。

  • 每种资源类型都由特定的提供商管理(例如,aws_s3_bucket 由 AWS 提供商管理)。
  • 您声明资源的期望状态,Terraform 会努力使其达到该状态。
  • 资源具有用于定义其属性的参数(例如大小、名称和位置)。

声明资源块

您可以使用 resource 块定义资源。此块需要两个字符串:

  • 资源类型(例如 aws_s3_bucket)。
  • 配置中的本地名称(例如 my_first_bucket),该名称必须唯一。

类型告诉 Terraform 这是哪种基础设施组件,名称则为其提供唯一标识符,供 Terraform 进行跟踪。

resource "aws_s3_bucket" "my_first_bucket" { # Arguments go here to define its properties }
resource "aws_s3_bucket" "my_first_bucket" {
  # Arguments go here to define its properties
}

资源参数和属性

在 resource 块中,您需要指定参数。这些参数是用于定义基础设施组件属性和配置的键值对。可用参数取决于资源类型及其管理提供商。

  • 对于 AWS S3 存储桶,参数可能包括 bucket(唯一名称)、acl(访问控制列表)或用于添加标签的 tags。
  • Terraform 使用这些参数在云中创建或更新资源,使其符合您期望的状态。

组合使用:提供商和资源

下面是一个简单而完整的 Terraform 配置。它声明 AWS 提供商,然后使用该提供商创建一个基本的 S3 存储桶。开始定义基础设施只需要这一个文件!

terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } } provider "aws" { region = "us-east-1" } resource "aws_s3_bucket" "my_unique_bucket" { bucket = "my-coddykit-demo-bucket-12345" # Must be globally unique! acl = "private" tags = { Environment = "Development" Project = "CoddyKit" } }
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "us-east-1"
}

resource "aws_s3_bucket" "my_unique_bucket" {
  bucket = "my-coddykit-demo-bucket-12345" # Must be globally unique!
  acl    = "private"

  tags = {
    Environment = "Development"
    Project     = "CoddyKit"
  }
}

Terraform 工作流程的关联

执行 Terraform 命令时,提供商和资源会发挥关键作用:

  • terraform init:下载必要的提供商插件。
  • terraform plan:使用提供商与云 API 通信,并确定要实现资源期望状态所需的更改。
  • terraform apply:指示提供商对实际云基础设施进行这些更改。

它们是管理基础设施时的核心交互点。

快速检查:提供商的作用

您已经了解了提供商和资源。现在来看看您能否正确识别它们各自的作用。

回顾:提供商和资源

做得很好!在本课中,您初步了解了 Terraform 中最重要的两个概念:

  • 提供商:这些必要的插件使 Terraform 能够与各种云服务和 API 交互。您可以配置它们,指定要使用的服务以及身份验证方式。
  • 资源:这些是您在配置中声明的各个基础设施组件。它们具有类型和参数,用于定义其期望状态。

这两个元素相互配合,让您能够高效地以代码形式定义和管理基础设施!

常见问题解答

「提供商与资源」课时是免费的吗?

是的 — 「提供商与资源」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「提供商与资源」这节课中我会学到什么?

了解 Terraform 如何与各种云服务和服务提供商交互,以及如何将独立的基础设施组件定义为资源。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「提供商与资源」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 提供商与资源
  2. 变量与输出
  3. 状态管理基础
  4. 模块与代码复用
← 返回 DevOps Bootcamp