Terraform概述
Terraform是HashiCorp推出的基础设施即代码(IaC)工具(提供开源版及企业版),通过HCL(HashiCorp Configuration Language)声明式地描述基础设施目标状态,并为多云、网络、本地数据中心及SaaS环境提供统一的资源生命周期管理能力。
基本概念
Terraform的核心工作流程包含以下三个阶段。
| 阶段 | 说明 |
|---|---|
| 编写(Write) | 编写可读的配置文件来定义所需基础设施的资源配置。Terraform采用声明式配置文件,开发者只需描述所需资源的最终状态。 |
| 计划(Plan) | Terraform会对比配置文件中所描述的目标状态与基础设施的当前实际状态,生成一个执行计划,说明如何从当前状态达到期望状态。执行计划会以基础设施清单的形式呈现。 |
| 申请(Apply) | 执行计划确认后,Terraform按照正确的顺序执行建议的操作,同时考虑资源依赖关系,并按依赖顺序创建资源。 |
Terraform的主要组件如下表所示。
| 组件 | 说明 |
|---|---|
| 配置文件 | 开发者定义基础设施资源的核心载体,用于声明所需的Provider、资源及其配置参数。 |
| 模块 | 可复用的基础设施代码单元,支持将复杂架构封装为模块化模板,避免重复编写。 |
| 状态文件 | 记录基础设施当前实际状态的文件,包括组件、配置以及资源之间的关系。 |
| 提供商(Provider) | Terraform与外部服务和平台的API交互的插件,使Terraform能够管理环境中的资源。 |
| Terraform CLI | Terraform 的命令行工具,用于初始化工作目录、生成执行计划、应用变更以及与各核心组件进行交互。 |
Terraform优势
- 多云管理
Terraform适用于多云方案,运维人员可以使用Terraform统一管理包括华为云在内等多个云上的资源。
- 自动化管理基础架构
Terraform能够创建配置文件的模板,可以无需交互自动化快速创建资源。
- 高复用性与模块化
将常用的架构配置编写成可复用的模块,实现快速、标准化复制。
- 降低开发成本
可以通过按需创建开发和部署环境来降低成本。
使用Terraform管理华为云CCE
Terraform可以通过以下资源管理CCE集群及相关资源。Terraform的资源类型:
- Resource:资源,指新创建的资源。
- Data Source:数据源,查询已有的资源信息并获取其属性。
资源列表
| 名称 | 用途 |
|---|---|
| huaweicloud_cce_access_policy | 授权CCE集群的RBAC权限 |
| huaweicloud_cce_addon | 在CCE集群内部署插件 |
| huaweicloud_cce_chart | 管理CCE集群的chart应用模板 |
| huaweicloud_cce_cluster | 创建CCE集群 |
| huaweicloud_cce_cluster_certificate_revoke | 删除授予的RBAC权限 |
| huaweicloud_cce_cluster_log_config | 管理CCE集群的日志配置 |
| huaweicloud_cce_cluster_pod_identity_association | 创建pod-identity关联 |
| huaweicloud_cce_cluster_upgrade | 升级CCE集群 |
| huaweicloud_cce_image_cache | 创建容器镜像缓存 |
| huaweicloud_cce_namespace | 在CCE集群中创建命名空间 |
| huaweicloud_cce_node | 在CCE集群中创建节点 |
| huaweicloud_cce_node_attach | 将ECS纳管到CCE集群中 |
| huaweicloud_cce_node_pool | 在CCE集群中创建节点池 |
| huaweicloud_cce_node_pool_nodes_add | 将CCE集群中的节点加入到指定节点池中 |
| huaweicloud_cce_node_pool_scale | CCE集群节点池的扩缩容 |
| huaweicloud_cce_node_sync | CCE节点同步云服务器信息 |
| huaweicloud_cce_nodes_certificate_rotatecredentials | 轮转用户的集群证书 |
| huaweicloud_cce_nodes_remove | 删除CCE节点 |
| huaweicloud_cce_partition | 创建CCE节点分区 |
| huaweicloud_cce_pvc | 在CCE集群中创建存储卷声明 |
| huaweicloud_cce_release | 在CCE集群中部署应用模板 |
数据源列表
| 名称 | 用途 |
|---|---|
| huaweicloud_cce_access_policies | 获取CCE集群已有的RBAC权限 |
| huaweicloud_cce_addon_template | 获取CCE集群插件配置模板 |
| huaweicloud_cce_addons | 获取CCE集群中的插件部署情况 |
| huaweicloud_cce_chart_values | 获取chart应用模板的values |
| huaweicloud_cce_charts | 获取CCE集群中的chart应用模板列表 |
| huaweicloud_cce_cluster | 获取CCE集群的信息 |
| huaweicloud_cce_cluster_certificate | 获取CCE集群认证凭据 |
| huaweicloud_cce_cluster_configuration_details | 获取CCE集群的配置信息 |
| huaweicloud_cce_cluster_configurations | 获取CCE集群的现有配置 |
| huaweicloud_cce_cluster_pod_identity_assume_agency | 获取CCE集群中的pod-identity关联信息 |
| huaweicloud_cce_cluster_upgrade_info | 获取CCE集群的升级信息 |
| huaweicloud_cce_clusters | 获取现有的CCE集群列表 |
| huaweicloud_cce_flavor_specifications | 获取可用的CCE集群规格 |
| huaweicloud_cce_image_caches | 获取镜像缓存列表 |
| huaweicloud_cce_node | 获取CCE集群的节点信息 |
| huaweicloud_cce_node_pool | 获取CCE集群的节点池信息 |
| huaweicloud_cce_node_pools | 获取CCE集群的节点池列表 |
| huaweicloud_cce_nodes | 获取CCE集群的节点列表 |
| huaweicloud_cce_releases | 获取CCE集群中已部署的应用模板 |