climc 使用

介绍如何使用Climc命令行工具。

参数说明

# 查看climc帮助信息
$ climc --help | head
Usage: climc [--version] [--timeout TIMEOUT] [--insecure|-k] [--cert-file CERT_FILE] [--key-file KEY_FILE] [--completion {bash,zsh}] [--use-cached-token] [--os-username OS_USERNAME] [--os-password OS_PASSWORD] [--os-project-name OS_PROJECT_NAME] [--os-project-domain OS_PROJECT_DOMAIN] [--os-domain-name OS_DOMAIN_NAME] [--os-access-key OS_ACCESS_KEY] [--os-secret-key OS_SECRET_KEY] [--os-auth-token OS_AUTH_TOKEN] [--os-auth-url OS_AUTH_URL] [--os-region-name OS_REGION_NAME] [--os-zone-name OS_ZONE_NAME] [--os-endpoint-type {publicURL,internalURL,adminURL}] [--output-format {table,kv,json,flatten-table,flatten-kv}] [--parallel-run PARALLEL_RUN] [--help] [--debug] <SUBCOMMAND> ...

Command-line interface to the API server.

Positional arguments:
    <SUBCOMMAND>
        cloud-account-sync
          Sync cloudaccount
        lbbackend-list
          List lbbackends
# [--xxx] 以中括号括起来的参数都是可选参数, 可传可不传
# [--xxx|-x] 此参数后面不需要跟任何参数,--xxx和-x效果相同, 可任意使用, 例如: --debug, -k
# [--xxx XXX] 此参数后面必须跟一个参数, 例如: --timeout 300
# [--xxx {xxx,xxx,xxx}] 此参数后面必须跟一个参数, 且参数必须是在大括号之内的一个, 例如: --os-endpoint-type publicURL
# <XXXX> 此参数属于必传参数, 若存在多个尖括号参数, 则需要根据尖括号参数顺序依次传参, 例如上面的<SUBCOMMAND> 可以指定为 cloud-account-sync
# 以上参数必须跟在climc命令之后

# 组合上面的参数命令为
$ climc --debug -k --timeout --os-endpoint-type publicURL cloud-account-sync

# 查看子命令帮助信息 climc <SUBCOMMAND> --help, 例如:
$ climc cloud-account-sync --help
Usage: climc cloud-account-sync [--full-sync] [--deep-sync] [--xor] [--region REGION] [--zone ZONE] [--host HOST] [--resources {project,compute,network,eip,loadbalancer,objectstore,rds,cache,event,cloudid,dnszone,public_ip,intervpcnetwork,saml_auth,quota,nat,nas,waf,mongodb,es,kafka,app,cdn,container,ipv6_gateway,tablestore,modelarts,vpcpeer,misc}] [--help] [--force] <ID>

Sync cloudaccount

Positional arguments:
    <ID>
        ID or Name of cloud account

Optional arguments:
    [--full-sync]

# 此时显示的所有参数都需要跟在子命令之后, 注意有个<ID>参数需要必填,这里以aliyun-account举例, 例如
$ climc cloud-account-sync --full-sync aliyun-account

# <SUBCOMMAND> 子命令列表非常多, 可以通过关键字过滤查找, 例如找可用区:
$ climc --help | grep zone

运行模式

climc 有命令行运行和交互两种运行模式。

  • 命令行运行: 执行完对应的资源操作命令就退出,这种模式你知道自己在做什么,并且可以作为 bash function/script 的一部分。
# 删除 server1, server2, server3
for id in server1 server2 server3; do
	climc server-update --delete enable $id
	climc server-delete $id
done
  • 交互模式: 在 shell 输入 climc,就会进入交互模式,这种模式下有自动补全和参数提示。

子命令语法

云平台有很多资源,对应 climc 的子命令, 比如 climc server-list 中的 server-list 就是子命令,可以查询虚拟机的列表。通用格式如下:

<Resource>-<Action>: Resource 表示资源, Action 表示行为

语法举例:

  • server-delete: 删除虚拟机
    • server 是资源, delete 是行为
  • host-list: 查询宿主机列表
    • host 是资源, list 是行为

CRUD 举例:

  • C: server-create, disk-create 创建资源
  • R: server-show, disk-list 查询资源
  • U: server-update, host-update 更新资源
  • D: server-delete, image-delete 删除资源

行为举例:

Resource-Action 中的 Action 会对应资源的操作,不同的资源会根据可进行的操作进行命名。

  • server-migrate: migrate 表示迁移虚拟机
  • server-change-config: change-config 表示调整虚拟机配置
  • host-ipmi: ipmi 表示查询宿主机的 IPMI 信息

想要知道资源有哪些操作,可以进入交互模式补全查询。

高级过滤 filter

# filter 参数可参考: https://github.com/yunionio/cloudpods/blob/master/pkg/apis/list.go#L132
$ climc <Resource>-list --filter 'condition1' --filter 'condition2'

Debug 模式

如果想要知道 climc 操作资源时究竟和服务端发生了哪些请求,可以在子命令前面使用 –debug 参数,使用方式如下:

climc --debug <Resource>-<Action>

加上 –debug 参数后,终端会有彩色的输出提示,比如 climc --debug server-list 输出如下:

其中 CURL 部分是可以直接粘贴出来在命令行执行的。

颜色约定

开启climc 自动补全

climc支持bash或zsh的命令行参数自动提示补全。

bash

bash 下请事先安装bash-completion软件包。

source <(climc --completion bash)  # 开启命令行自动补全
echo "source <(climc --completion bash)" >> ~/.bashrc # 固化配置

zsh

source <(climc --completio zsh)  # 开启自动补全
echo 'source <(climc --completio zsh)' >> ~/.zshrc # 固化配置

如果出错command not found: compdef,请事先加载compinit

# 在 .zshrc 开头添加
autoload -U compinit && compinit