# 华为云CLI 安装

## 华为云CLI介绍

### 什么是华为云CLI

华为云CLI（Huawei Cloud CLI，简称HCloud CLI）是为发布在华为云API Explorer上的云服务API提供的命令行管理工具。您可以通过此工具调用华为云API Explorer中各云服务开放的API，管理和使用您的各类云服务资源。

HCloud CLI命令行工具灵活性高且易于扩展：

- 单一可执行文件，绿色免安装，下载解压后即可使用。
- 多操作系统支持，包括Linux、Windows、Mac。
- 扩展性强，您可基于CLI工具对华为云API进行封装，扩展出您想要的功能，实现脚本化管理云服务资源。

### CLI相关概念

在华为云CLI指导中常用到的词语，以下做出详细介绍，方便您的阅读理解。

- 命令

  华为云CLI提供的各项操作指令，用于配置CLI工具环境，或者调用华为云各服务开放的API。

  API调用命令格式如下：

  **hcloud [options] <service> <operation> [--param1=paramValue1 --param2=paramValue2 ...]**

  系统命令格式如下：

  **hcloud [options] <systemCommand> <operation> [--param1=paramValue1 --param2=paramValue2 ...]**

  在如下查询加速域名的命令中，service为“CDN”，operation为“ListDomains”，调用API所需的公共信息从名为“default”的[配置项](https://support.huaweicloud.com/productdesc-hcli/hcli_01_002.html#hcli_01_002__li5154152125314)中获取：

  ```
  hcloud CDN ListDomains --cli-profile=default
  ```

- operation

  operation是指云服务在API Explorer上发布的API的英文名称，可唯一表达某API。云服务的operation列表可从[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/overview)上查询，或在CLI工具执行“hcloud <service> --help”命令获取。

- 配置项

  配置项用于存储一组调用云服务API时所需的公共信息，由用户通过调用CLI命令完成配置。各配置项组成配置文件，存储在用户本地。用户在调用云服务API时，可通过指定配置项，代替这组公共信息的输入。

  配置项支持配置的公共信息包括：访问密钥（AK/SK）、区域（cli-region）、项目ID（cli-project-id）、账号ID（cli-domain-id）等。

- 默认配置项

  当命令中未指定配置项时，默认使用的配置项。华为云CLI默认将最后一次添加或修改的配置项作为默认配置项；若默认配置项被删除，将剩余配置项中最早被添加的配置项作为新的默认配置项。用户可以使用“hcloud configure set --cli-profile=${profileName}”命令切换默认配置项。

- 参数

  参数可分为API参数和CLI系统参数。API参数是指云服务的API中定义的参数；CLI系统参数是指CLI工具的内置参数，具有其固定的使用方式和特定含义。[点击此处](https://support.huaweicloud.com/hcli_faq/hcli_19_001.html)查看CLI系统参数列表。

- 选项

  CLI选项是指可以直接在调用API的命令中添加的CLI系统参数，并非所有的CLI系统参数都可作为选项使用。[点击此处](https://support.huaweicloud.com/usermanual-hcli/hcli_05.html)查看CLI选项列表。

### 如何使用华为云CLI

1. 下载华为云CLI。

   华为云CLI绿色免安装，下载到本地后解压即可使用。CLI支持Windows 64位、Linux AMD 64位、Linux ARM 64位、macOS AMD 64位、macOS ARM 64位，请根据您本地系统[下载](https://support.huaweicloud.com/qs-hcli/hcli_02_003.html)对应的版本。

2. 配置华为云CLI环境。

   华为云CLI环境配置请参考[快速初始化配置](https://support.huaweicloud.com/qs-hcli/hcli_02_004.html)。

3. 获取云服务API调用命令。

   获取云服务API调用命令有两种方式：

   - （推荐）API Explorer上获取

     云服务的API可在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/overview)上查看。您可以在API Explorer上先填写好各参数的值，即可从“CLI示例”页签中直接获取命令。

   - 华为云CLI帮助信息

     查询

     具体查询方法可参考[查看与执行云服务操作命令](https://support.huaweicloud.com/qs-hcli/hcli_02_005.html)，Mac和Linux系统下查询方法类似。

4. 通过CLI工具调用云服务API。

   输入完整的API调用命令后回车，即完成调用。

5. （可选）将CLI调用命令集成到您的自定义脚本中，实现云服务资源的自动化管理。

## 华为云CLI使用

### 准备工作

在使用华为云CLI前，需要完成一下的准备工作。

* 注册华为云账号
* 获取访问秘钥（Ak/SK）

### 安装华为云CLI

 本次安装环境为Linux环境，所以在版本上选择Linux AMD 64位版本。

> 不清楚安装包版本的可以使用`echo $HOSTTYPE`命令查看当前系统版本。
>
> ![2022.3.14-查看系统版本](images/2022.3.14-查看系统版本.png)

#### 一键安装

使用以下命令一键安装华为云CLI：

``` shell
curl -sSL https://hwcloudcli.obs.cn-north-1.myhuaweicloud.com/cli/latest/hcloud_install.sh -o ./hcloud_install.sh && bash ./hcloud_install.sh
```

以上命令默认将华为云CLI下载至"/usr/local/hcloud"目录下，同时在“/usr/local/bin/”目录下创建华为云CLI的符号链接，并开启CLI自动补全功能。

您可在该命令执行过程中根据交互信息修改文件下载目录等。如执行过程中提示权限不足，您可切换至root用户重新执行安装命令。

如果希望使用默认配置并且跳过交互，可在命令末尾添加`-y`。

#### 手动安装

1. 下载华为云CLI

   ```shell
   curl -LO "https://hwcloudcli.obs.cn-north-1.myhuaweicloud.com/cli/latest/huaweicloud-cli-linux-amd64.tar.gz"
   wget "https://hwcloudcli.obs.cn-north-1.myhuaweicloud.com/cli/latest/huaweicloud-cli-linux-amd64.tar.gz" -O huaweicloud-cli-linux-amd64.tar.gz
   ```

2. 解压工具包

   ```shell
   tar -zxvf huaweicloud-cli-linux-amd64.tar.gz
   ```

3. 将华为云CLI工具添加到系统PATH中

   ```shell
   export PATH=$PATH:$(pwd)/
   ```

### 初始化配置

CLI初始化命令用于将常用的**永久**AK/SK和区域信息存储在配置文件中，避免执行操作时频繁输入这些固定信息。可通过如下命令初始化配置：

`hcloud configure init`

输入命令后按回车进入交互模式，根据界面提示输入下表中的各参数值。

| 参数              | 说明                                                         |
| ----------------- | ------------------------------------------------------------ |
| Access Key ID     | 访问密钥（永久AK/SK）中的访问密钥ID，简称AK，初始化时必填。  |
| Secret Access Key | 访问密钥（永久AK/SK）中的密码访问密钥，简称SK，初始化时必填。 |
| Region Name       | 区域，如cn-north-4，初始化时选填。                           |

> 说明：
>
> - 初始化过程中，为保障您的账号安全，对您输入的“Secret Access Key”进行了匿名化处理。在您输入过程中不会显示输入的字符，在输入结束回车至下一行时，会以“*”回显您的输入内容。在配置完成后，CLI会在本地**加密保存**配置项中的认证相关的敏感信息。
> - 如果重新执行初始化命令，则会在删除原配置文件后重新生成新的配置文件，配置文件保存地址如下：
>   - Windows系统： C:\Users\*{您的Windows系统用户名}*\.hcloud\config.json
>   - Linux系统: /home/{当前用户名}/.hcloud/config.json
>   - Mac系统： /Users/{当前用户名}/.hcloud/config.json
>
> 完成初始化后，可通过如下命令查询配置信息。华为云CLI1.2.7以前的版本**密文显示**查询结果中的敏感信息；1.2.7及以后的版本**匿名化显示**查询结果中的敏感信息。
>
> `hcloud configure show --cli-profile=default`

### 查看与执行云服务操作命令

完成初始化配置后，即可查询华为云CLI支持的云服务列表，并执行相关命令。下文以文档数据库服务（DDS）查询指定API版本信息为例，说明如何查找与执行命令。

1. 查询云服务的operation列表

   `hcloud \*<service>\* --help`

2. 查询云服务具体operation的帮助信息

​		`hcloud \*<service> <operation>\* --help`

3. 执行调用API的命令，获取执行结果。

​		`hcloud \*<service> <operation>\* [--param1=paramValue1 --param2=paramValue2 ...]`

### 新增与修改配置项

华为云CLI目前支持在配置项中以如下组合方式配置认证参数：[访问密钥（永久AK/SK）](https://support.huaweicloud.com/usermanual-hcli/hcli_09_001.html)，[临时安全凭证（临时AK/SK和SecurityToken）](https://support.huaweicloud.com/usermanual-hcli/hcli_09_005.html)，[访问令牌（Token）](https://support.huaweicloud.com/usermanual-hcli/hcli_09_004.html)三种。其中，临时安全凭证（临时AK/SK和SecurityToken）与访问令牌（Token）都具有时效性。

初始化配置信息时，配置项的名称为“default”，且初始化时配置项中只允许配置永久AK/SK。如果您要使用其他认证方式，建议[新增配置项](https://support.huaweicloud.com/usermanual-hcli/hcli_03_003.html)。如果您要[修改初始化的配置项中的参数值](https://support.huaweicloud.com/usermanual-hcli/hcli_03_003.html)，可使用**“**hcloud configure set --cli-profile=default --key1=value1...**”**命令。