aliyun-cli
阿里云命令行工具 CLI(Alibaba Cloud CLI)是基于阿里云开放 API 建立的管理工具。借助此工具,您可以通过调用阿里云开放 API 来管理阿里云产品。该命令行工具与阿里云开放 API 一一对应,灵活性高且易于扩展。您可基于该命令行工具对阿里云原生 API 进行封装,扩展出您想要的功能。
官方文档
https://github.com/aliyun/aliyun-cli
https://help.aliyun.com/knowledge_detail/139508.html
centos安装aliyun-cli
curl -LO https://github.com/aliyun/aliyun-cli/releases/download/v3.0.42/aliyun-cli-linux-3.0.42-amd64.tgz
tar -zxvf aliyun-cli-linux-3.0.42-amd64.tgz -C /usr/local/bin/
配置凭证,登录阿里云,点击头像选择accesskey管理,创建并获取key和secret即可。
aliyun configure set \
--profile akProfile \
--mode AK \
--region cn-qingdao \
--access-key-id AccessKeyId \
--access-key-secret AccessKeySecret
向ecs实例发送shell命令进行测试:
aliyun ecs RunCommand --InstanceId.1 i-m5e3gpxv4kgzm2ne37e4 --RegionId cn-qingdao --Type RunShellScript --CommandContent "echo hello"
批量操作实例
aliyun ecs RunCommand \
--InstanceId.1 i-m5e3gpxv4kgzm2ne37e4 \
--InstanceId.2 i-m5e3gpxv4kgzm2ne37e5 \
--RegionId cn-qingdao --Type RunShellScript --CommandContent "echo hello"
查询实例信息
实例规格
https://www.alibabacloud.com/help/zh/doc-detail/59977.htm
镜像规格
https://www.alibabacloud.com/help/zh/doc-detail/100410.htm
在cloudshell中查询region ID
登录cloudshell:https://shell.aliyun.com/
#列出所有region信息
aliyun ecs DescribeRegions --output cols=RegionId,RegionEndpoint,LocalName rows=Regions.Region
#列出region下的Zone信息
aliyun ecs DescribeZones --RegionId cn-hongkong --output cols=ZoneId,LocalName rows=Zones.Zone
#列出实例类型信息
aliyun ecs DescribeInstanceTypes | jq
通过CLI快速创建实例
参考:https://helpcdn.aliyun.com/document_detail/163468.html
执行以下脚本创建3台香港ecs实例,务必修改以下3个参数:
- –RegionId cn-hongkong
- –SecurityGroupId
- –VSwitchId
- –ZoneId cn-hongkong-b
脚本内容如下:
#!/bin/bash
echo "create vms"
vm_count=3
aliyun ecs RunInstances --Amount $vm_count \
--ImageId centos_7_8_x64_20G_alibase_20200519.vhd \
--InstanceType ecs.t5-lc1m2.large \
--InternetChargeType PayByTraffic \
--InternetMaxBandwidthIn 50 \
--InternetMaxBandwidthOut 50 \
--Password Aliyun#123 \
--InstanceChargeType PostPaid \
--SpotStrategy SpotAsPriceGo \
--RegionId cn-hongkong \
--SecurityGroupId sg-j6c8mr535xgiug4hlfpz \
--VSwitchId vsw-j6cwuu2i3u9nb5d20i4sz \
--ZoneId cn-hongkong-b > InstanceId.json
echo "sleep 30s waiting for instance ip ready"
sleep 30s
echo "save instance id and ip to instance.list"
rm -rf instance.list
for (( i=0; i < $vm_count; i++ ))
do
InstanceId=$(jq -r ".InstanceIdSets.InstanceIdSet[$i]" < InstanceId.json)
aliyun ecs DescribeInstanceAttribute --InstanceId $InstanceId > info.json
PrivateIpAddress=$(jq -r ".VpcAttributes.PrivateIpAddress.IpAddress[0]" < info.json)
PublicIpAddress=$(jq -r ".PublicIpAddress.IpAddress[0]" < info.json)
echo "################instance$i################" >> instance.list
echo "InstanceId=$InstanceId" >> instance.list
echo "PrivateIpAddress=$PrivateIpAddress" >> instance.list
echo "PublicIpAddress=$PublicIpAddress" >> instance.list
echo "" >> instance.list
jq -r ".InstanceIdSets.InstanceIdSet[]" < InstanceId.json >> All_InstanceId.list
done
#run some shell command
#alias remotecmd="aliyun ecs RunCommand --InstanceId.1 $ID0 --RegionId cn-hongkong --Type RunShellScript --CommandContent"
#remotecmd "yum install -y vim wget"
#release all instance
#for i in $(cat All_InstanceId.list); do aliyun ecs DeleteInstances --InstanceId.1 $i --RegionId cn-hongkong --Force true; done