提供商与资源
了解 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"块会配置具体设置,例如为该提供商管理的所有资源设置 AWSregion。
什么是 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 反馈 — 无需本地设置。