
# 安装Terraform并配置华为云Provider
Terraform是一个开源的基础设施即代码（IaC）工具，通过HCL（HashiCorp Configuration Language）声明式地描述云上资源的目标状态。执行后，Terraform会自动生成执行计划，确认后完成资源的创建与编排，实现标准化的自动化资源管理。
本文档介绍如何安装Terraform并配置华为云Provider，为后续通过Terraform管理CCE资源做好环境准备。
#### 前提条件
- 已准备一台可以连接公网的机器。
- 已获取华为云账号AK/SK，且账号具有创建并修改CCE集群的权限，详情请参见[访问密钥](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)。
 
#### 操作步骤
#### 步骤一：安装Terraform
从[Terraform官方网站](https://developer.hashicorp.com/terraform/install)获取安装方式。Terraform支持Linux、macOS、Windows等多个操作系统，您可以根据操作系统下载对应的安装包。本文以amd64架构Linux操作系统下安装Terraform二进制文件为例，版本号仅为示例，请根据实际需要选择对应版本。
1. 访问[Terraform](https://developer.hashicorp.com/terraform/install)，下载Terraform二进制包。
   
   ```
   wget https://releases.hashicorp.com/terraform/1.15.7/terraform_1.15.7_linux_amd64.zip
   ```
   
   
2. 解压并将二进制文件添加到PATH目录下。 
   ```
   unzip terraform_1.15.7_linux_amd64.zip -d ./terraform
   cp -a ./terraform/terraform /usr/local/bin/
   ```
   
   
3. 验证安装结果。 
   ```
   terraform version
   ```
   返回Terraform版本号则表示安装成功。
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002651669298.png)
   
   
 
#### 步骤二：创建项目目录
执行以下命令，目录名可自定义。
```
mkdir terraform_hw_demo
cd ./terraform_hw_demo
```
#### 步骤三：导入华为云认证信息并初始化Provider
1. 在操作系统中配置环境变量。
   ```
   # 必选配置
   export HW_ACCESS_KEY="ak"                 # AK
   export HW_SECRET_KEY="sk"                 # SK
   export HW_REGION_NAME="cn-north-4"        # 局点名称，如北京四为：cn-north-4
   # 可选配置
   export HW_ENTERPRISE_PROJECT_ID="eps_id"  # 企业项目ID，开通企业管理功能后默认值为"0"
   export HW_DOMAIN_NAME="domain_name"       # 账号名（跨账号操作时配置）
   ```
   涉及参数说明如下表所示。
   
   | 参数                       | 是否必填 | 说明                                                                                                                                                                                            |
   |:---|:---|:---|
   | HW_ACCESS_KEY            | 是    | 访问密钥ID（AK）。 用于标识调用者身份。获取方法请参见[访问密钥](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)。                                                   |
   | HW_SECRET_KEY            | 是    | 访问密钥（SK）。 与AK成对使用，用于请求签名与身份鉴权。获取方法请参见[访问密钥](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)。                                          |
   | HW_REGION_NAME           | 是    | 区域（Region）。 指定Terraform将要管理的资源所属区域。区域需与待创建资源的物理数据中心保持一致，否则将导致资源创建失败。您可以[单击此处](https://console.huaweicloud.com/apiexplorer/#/endpoint/)查看华为云支持的区域。 |
   | HW_ENTERPRISE_PROJECT_ID | 否    | 企业项目ID。 用于资源的企业项目管理。若账号已开通企业管理功能但未指定该参数，默认值为"0"（default企业项目）。若未开通该功能，可忽略此参数。                                                                        |
   | HW_DOMAIN_NAME           | 否    | 账号名（IAM Domain Name）。 适用于多账号或企业联邦认证场景，用于指定IAM所属账号。普通单账号场景下通常无需配置。                                                                                   |
      
   
2. 在项目目录下，创建init.tf文件，指定华为云Provider的registry源和版本。
   ```
   terraform {
     required_providers {
       huaweicloud = {
         source  = "huaweicloud/huaweicloud"
         version = ">= 1.94.0"  # 加载不低于1.94.0版本的最新Provider，该配置对本地Provider仍有效
       }
     }
   }
   ```
   ![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/note_3.0-zh-cn.png)
   - 华为云Provider的完整配置参数，以[Terraform Registry](https://registry.terraform.io/providers/huaweicloud/huaweicloud/latest/docs)官方文档为准。
   
   - 华为云Provider的版本信息请参见[terraform-provider-huaweicloud](https://github.com/huaweicloud/terraform-provider-huaweicloud/releases)。
     
 
#### 步骤四：初始化Terraform模块
```
terraform init
```
首次执行时会下载HuaweiCloud Provider并安装，回显如下表示初始化成功。
![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002651575094.png)
#### 常见问题
#### 如何提升Terraform Provider下载速度？
执行terraform init拉取terraform-provider-huaweicloud时，可能因跨境链路问题导致下载缓慢甚至失败。推荐通过本地Registry预置Provider的方式解决。
1. 下载华为云Provider至本地目录，选择对应的版本号和操作系统。
2. 将下载的Provider解压至本地如下目录：
   - Linux：
     ```
     ~/.terraform.d/plugins/<local-registry>/<organization>/huaweicloud/<version>/<os_arch>
     ```
     
   
   - Windows：
     ```
     %APPDATA%\terraform.d\plugins\<local-registry>\<organization>\huaweicloud\<version>\<os_arch>
     ```
     
   
   
   示例目录结构：
   ```
   # Linux
   ~/.terraform.d/plugins/local-registry/huaweicloud/huaweicloud/1.94.0/linux_amd64
   # Windows
   C:\Users\Administrator\AppData\Roaming\terraform.d\plugins\local-registry\huaweicloud\huaweicloud\1.94.0\windows_amd64
   ```
   
3. 修改配置文件（init.tf），将source修改为本地Registry地址。
   ```
   terraform {
     required_providers {
       huaweicloud = {
         source  = "local-registry/huaweicloud/huaweicloud"
         version = ">= 1.94.0"
       }
     }
   }
   ```
   
4. 在Terraform工作目录下执行初始化命令。
   ```
   terraform init
   ```
   此时Terraform将优先使用本地预置的Provider，不再访问公网Registry。
   
 
