阿里云sdk通过启动模板批量创建云服务器
# 安装模块
pip install aliyun-python-sdk-core
pip install aliyun-python-sdk-ecs
# 代码
#!/usr/bin/env python
#coding=utf-8
import sys
import json
import redis
import time
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkecs.request.v20140526.RunInstancesRequest import RunInstancesRequest
from aliyunsdkecs.request.v20140526.DescribeInstancesRequest import DescribeInstancesRequest
from aliyunsdkecs.request.v20140526.DescribeInstancesFullStatusRequest import DescribeInstancesFullStatusRequest
#读取参数
accessKeyId = "your_key_id"
accessSecret = "your_secret"
templateId = sys.argv[1] #启动模板id
templateName = sys.argv[2] #启动模板名字
templateVersion = sys.argv[3] #启动模板版本
number = sys.argv[4] #需要创建的云服务器数量
redisadr = sys.argv[5] #redis 地址,把创建好的云主机ip 记录到redis
client = AcsClient(accessKeyId, accessSecret, 'cn-shanghai')
request = RunInstancesRequest()
request.set_accept_format('json')
instancesRequest = DescribeInstancesRequest()
instancesRequest.set_accept_format('json')
red = redis.Redis(host=redisadr)
request.set_Amount(number)
request.set_LaunchTemplateId(templateId)
request.set_LaunchTemplateName(templateName)
request.set_LaunchTemplateVersion(templateVersion)
request.set_Period(1)
request.set_PeriodUnit("Month")
request.set_AutoRenew(True)
request.set_AutoRenewPeriod(1)
#request.set_InstanceChargeType("PrePaid") #包年包月
request.set_InstanceChargeType("PostPaid") #按量
response = client.do_action_with_exception(request)
response = json.loads(response.decode('utf-8'))
time.sleep(5)
print(response["InstanceIdSets"]["InstanceIdSet"])
if len(response["InstanceIdSets"]["InstanceIdSet"]) != 0:
for instanceId in response["InstanceIdSets"]["InstanceIdSet"] :
continue_sel = 1
while continue_sel > 0 :
try:
#查询实例的运行壮态是否ok,超时为60s
selStatus = DescribeInstancesFullStatusRequest()
selStatus.set_accept_format('json')
selStatus.set_InstanceIds([instanceId])
selStatus_rep = client.do_action_with_exception(selStatus)
selStatus_rep = json.loads(selStatus_rep.decode('utf-8'))
#print(selStatus_rep)
healthStatus = selStatus_rep["InstanceFullStatusSet"]["InstanceFullStatusType"][0]["HealthStatus"]["Name"]
if healthStatus != "Ok":
if continue_sel < 60:
time.sleep(2)
print("正在等待实例%s 启动运行.......wait......" %instanceId)
print(instanceId,healthStatus)
continue_sel = continue_sel + 2
else:
print("实例%s time out" %instanceId)
continue_sel = 0
else:
continue_sel = 0
print(instanceId,healthStatus)
except:
time.sleep(2)
print("正在等待实例%s 启动运行.......wait......" %instanceId)
continue_sel = continue_sel + 2
#获取实例ip
instancesRequest.set_InstanceIds([instanceId])
instancesRequest_rep = client.do_action_with_exception(instancesRequest)
instancesRequest_rep = json.loads(instancesRequest_rep.decode('utf-8'))
ip = instancesRequest_rep["Instances"]["Instance"][0]["VpcAttributes"]["PrivateIpAddress"]["IpAddress"][0]
#ip写入到redis
red.lpush("wait_to_doinstance_list",ip)
print(instanceId,ip)
- ABP实践(1)-通过官方模板创建ASP.NET Core 2.x版本+vue.js单页面模板-启动运行项目
- 通过模板批量创建Properties对象
- 通过模板批量创建Properties对象
- 在Azure云平台上通过模板部署批量创建虚拟机
- 园子里游戏开发者的福利:通过认证免费领取2台高配“阿里云”云服务器
- [乐意黎原创]阿里云ECS云服务器未添加安全组规则设置导致通过公网IP地址不能访问
- 07、FastDFS的概念,使用。图片上传保存功能的实现,图片删除功能。根据模板id返回规格和规格选项。将勾选的规格和选项存入到封装对象。通过勾选的规格选项自动创建item的List
- 阿里云ECS开放批量创建实例接口,实现弹性资源的创建
- Maven2 根据项目生成模版项目,并使用该模板批量创建工程。
- 通过Shell脚本来创建批量服务器上的MySQL数据库账号
- [转]创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]
- 服务器通过vmware命令批量启动多个VMware虚拟机
- 创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]
- C#程序通过模板自动创建Word文档
- 创建tomcat的服务,删除服务,通过服务来启动项目
- C#程序通过模板自动创建Word文档
- 6.7 通过命令启动IDEA,给IDEA创建快捷方式
- 一起谈.NET技术,创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]
- 通过linux的shell脚本批量创建用户名,用户名所属目录,设置对应密码
- 创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]