起因
所在的公司使用的云服务器之前一直是经典网络连接的,最近收到阿里的邮件说部分购置较早的云服务器需要坐一些硬件的升级,随着升级而来的要求是把这些服务器切换至VPC网络。
为了让不同的VPC网络间的ECS和RDS通讯,需要配置阿里的高速通道服务,而建立高速通道的前提之一是网段不冲突,虽然貌似VPC网段相同交换机网段不同也可以建立高速通道进行互通,但是还是建议需要互通的VPC间规划不同的网段,所以我决定创建一些不同网段的VPC供切换过来的ECS使用。
操作
一开始我觉得直接在管理控制台上创建点击创建就可以了,但创建的时候发现管理控制台只能在预设的三个网段(192.168.0.0/16,172.16.0.0/12,10.0.0.0/8)中选择创建。
查询相关文档后发现需要使用API才能自定义网段创建VPC。我这里只需要创建VPC,所以就写一个简单的脚本调用阿里的python-SDK实现。
具体步骤
# 拉取阿里的Python-SDK
git clone https://github.com/aliyun/aliyun-openapi-python-sdk.git
# 安装 aliyun-python-sdk-vpc
cd aliyun-openapi-python-sdk/aliyun-python-sdk-vpc/
sudo python setup.py install
VPC这部分的SDK文档的内容很少,不过还好有调用的DEMO,参考DEMO和源码中的方法创建下面脚本
#!/usr/bin/env python
#coding=utf-8
import json
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkvpc.request.v20160428 import CreateVpcRequest
from aliyunsdkvpc.request.v20160428 import DescribeVpcAttributeRequest
# 创建 AcsClient 实例
client = AcsClient(
"<your-access-key-id>",
"<your-access-key-secret>",
"<your-region-id>"
);
# 创建 VPC
request = CreateVpcRequest.CreateVpcRequest()
# 为VPC网络设置一个名字
request.set_VpcName('youvpcname')
# 配置VPC的网段CIDR地址
request.set_CidrBlock('172.18.0.0/16')
response = client.do_action_with_exception(request)
vpc_id = json.loads(response)['VpcId']
print "VPC ID is", vpc_id
# 获取并打印 VPC 的属性信息
request = DescribeVpcAttributeRequest.DescribeVpcAttributeRequest()
request.set_VpcId(vpc_id)
response = client.do_action_with_exception(request)
print response
其中的 <your-access-key-id> 和 <your-access-key-secret> 替换为帐号的accessKey 信息,获取方法参考这里。<your-region-id>要替换为创建VPC的地域id,如 cn-zhangjiakou ,不清楚自己地域ID的参考这里
脚本写好后执行即可成功创建自定网段的VPC
后记
想要简单的调用 API 还有一个方法是使用API Explorer,在网页上选择接口填写参数后就能直接调用API
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。