通过京东云CLI(Command Line Interface)工具可以高效地批量管理多台云主机(如创建、启动、停止、删除、查询等操作)。以下是详细的使用步骤和示例,帮助你实现批量管理。
一、准备工作
-
安装京东云CLI工具
- 下载地址:京东云CLI官方文档
- 支持平台:Windows、Linux、macOS
- 安装方式(以Linux/macOS为例):
curl -O https://dl.jdc.com/cli/jdcloud-cli-linux-amd64.tar.gz tar -xzf jdcloud-cli-linux-amd64.tar.gz sudo mv jdcloud /usr/local/bin/ - 验证安装:
jdcloud --version
-
配置访问凭证
- 登录京东云控制台,进入“访问控制(IAM)” → “访问密钥” → 创建Access Key(包含 AccessKeyId 和 SecretAccessKey)
- 配置CLI:
jdcloud configure按提示输入:
- Access Key ID
- Secret Access Key
- 默认地域(如 cn-north-1)
- 输出格式(json 或 text)
二、常用云主机管理命令(vm 模块)
京东云CLI中管理云主机的命令前缀为 jdcloud vm。
常用命令示例:
| 操作 | 命令 |
|---|---|
| 查询云主机列表 | jdcloud vm describe-instances |
| 启动云主机 | jdcloud vm start-instance --instance-id i-xxx |
| 停止云主机 | jdcloud vm stop-instance --instance-id i-xxx |
| 重启云主机 | jdcloud vm reboot-instance --instance-id i-xxx |
| 创建云主机 | jdcloud vm create-instances ... |
| 删除云主机 | jdcloud vm delete-instance --instance-id i-xxx |
三、批量管理多台云主机的方法
方法1:通过脚本批量操作(推荐)
使用Shell脚本读取实例ID列表并循环执行操作。
示例:批量停止云主机
#!/bin/bash
# 文件:batch_stop.sh
# 实例ID列表,每行一个
INSTANCE_IDS=(
"i-abc123"
"i-def456"
"i-ghi789"
)
for instance_id in "${INSTANCE_IDS[@]}"; do
echo "正在停止实例: $instance_id"
jdcloud vm stop-instance --instance-id "$instance_id"
sleep 1 # 避免API调用过快
done
运行脚本:
chmod +x batch_stop.sh
./batch_stop.sh
方法2:从文件读取实例ID
创建一个 instance_ids.txt 文件,内容如下:
i-abc123
i-def456
i-ghi789
批量启动脚本示例:
while read instance_id; do
echo "启动实例: $instance_id"
jdcloud vm start-instance --instance-id "$instance_id"
done < instance_ids.txt
方法3:结合查询结果进行批量操作
先查询所有运行中的实例,再批量停止:
# 查询所有实例并提取运行中的实例ID
jdcloud vm describe-instances --output json |
jq -r '.result.instances[] | select(.status == "running") | .instanceId' |
while read instance_id; do
echo "停止运行中的实例: $instance_id"
jdcloud vm stop-instance --instance-id "$instance_id"
done
注意:需要安装
jq工具解析JSON。
四、批量创建云主机
京东云支持批量创建云主机,使用 create-instances 命令并设置 count 参数。
jdcloud vm create-instances
--instance-name "batch-vm"
--instance-type "g.n2.small"
--image-id "img-xxx"
--az "cn-north-1a"
--subnet-id "subnet-xxx"
--key-names "key-xxx"
--count 3
--hostname-prefix "web"
--hostname-format "%s%03d" # 生成 web001, web002, web003
五、最佳实践建议
-
使用标签(Tag)管理
- 给云主机打标签(如
env=prod,role=web),便于筛选。 - 查询带标签的实例:
jdcloud vm describe-instances --filters "name=tag:env,values=prod"
- 给云主机打标签(如
-
错误处理与日志
- 在脚本中加入错误判断:
if ! jdcloud vm stop-instance --instance-id "$instance_id"; then echo "失败: $instance_id" >> error.log fi
- 在脚本中加入错误判断:
-
使用Region参数
- 如果资源跨地域,使用
--region指定区域:jdcloud vm describe-instances --region cn-east-1
- 如果资源跨地域,使用
六、参考文档
- 京东云CLI官方文档:https://docs.jdcloud.com/cn/cli/
- VM API文档:https://docs.jdcloud.com/cn/virtual-machines/api/
通过以上方法,你可以轻松实现对京东云多台云主机的批量自动化管理。建议结合Shell脚本 + 标签 + JSON解析工具(如jq)实现高效运维。
云计算导航