帮我编写一个脚本,是关于阿里云API自动创建机器的,需要实现的效果:输入绝对路径运行该脚本后,会进入交互式界面,需要指定服务器的创建地域,指定服务器的操作系统。我已在本地服务器中创建了阿里CLI,只需要CLI命令即可
时间: 2024-04-22 17:23:25 浏览: 43
好的,以下是一个简单的Shell脚本,可实现您的需求:
```bash
#!/bin/bash
# 从命令行参数获取输入路径
input_path=$1
# 读取阿里云API的配置信息
access_key_id=$(jq -r '.access_key_id' $input_path/config.json)
access_key_secret=$(jq -r '.access_key_secret' $input_path/config.json)
region_id=$(jq -r '.region_id' $input_path/config.json)
os_image_ids=$(jq -r '.os_image_ids' $input_path/config.json)
instance_type=$(jq -r '.instance_type' $input_path/config.json)
security_group_id=$(jq -r '.security_group_id' $input_path/config.json)
vswitch_id=$(jq -r '.vswitch_id' $input_path/config.json)
# 获取可用的地域列表
region_list=$(aliyuncli ecs DescribeRegions --output json | jq -r '.Regions.Region[]')
# 输出可用的地域列表
echo "可用的地域列表:"
count=0
for region in $region_list
do
count=$((count+1))
local_name=$(echo $region | jq -r '.LocalName')
echo "$count. $local_name"
done
# 获取用户输入的地域编号
read -p "请选择需要创建机器的地域编号:" region_index
# 获取用户输入的操作系统
read -p "请输入需要创建机器的操作系统(如:ubuntu18_04):" os_type
os_image_id=$(echo $os_image_ids | jq -r ".$os_type")
# 发送创建机器的请求
zone_id=$(echo $region_list | jq -r ".[$((region_index-1))].Zones.Zone[0].ZoneId")
aliyuncli ecs RunInstances --ImageId $os_image_id --InstanceType $instance_type --SecurityGroupId $security_group_id --VSwitchId $vswitch_id --ZoneId $zone_id --output json
# 输出创建机器的结果
echo "创建机器的结果:"
```
使用步骤:
1. 在您的阿里云控制台中,创建一个RAM用户,并给予该用户ECS实例的创建权限,并获取该用户的AccessKeyID和AccessKeySecret。
2. 在您的电脑上,安装阿里云CLI。
3. 在您的工作目录下,创建一个config.json文件,将您的AccessKeyID、AccessKeySecret、地域ID、安全组ID、虚拟交换机ID和操作系统镜像ID等信息填入该文件中(操作系统镜像ID可以在阿里云ECS控制台中获取)。
4. 将上述Shell脚本保存为create_instance.sh文件,并将您的工作目录设置为该文件所在的目录。
5. 执行以下命令来运行该脚本:
```bash
bash create_instance.sh <您的输入路径>
```
其中,<您的输入路径>为存放config.json文件的绝对路径。
6. 按照交互式界面的提示,选择需要创建机器的地域和操作系统,等待脚本执行完毕即可。