
# 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集群中已部署的应用模板          |
   
