通过云速搭API结合模板可以快速完成应用架构批量部署,提高运维效率。
场景介绍
本实践适合需要将相同的应用架构进行多次批量创建的场景,这里演示模拟部署10套独立的网站后台环境,每一套的基本架构为EIP+ECS。
业务流程

环境准备
为完成本实践,需要一台具有公网访问能力的ECS作为部署服务器,镜像及版本为CentOS 7.9 64位。本示例中部署服务器配置为8vCPU 16GiB,位于华北2(北京)地域,VPC网段为192.168.0.0/16。
操作步骤
创建RAM用户并授权
为保证信息安全,加强安全防控,这里演示使用RAM用户操作本场景。
按标签顺序完成配置,创建RAM用户。
说明生产环境建议开启MFA多因素认证。
在创建用户页面,设置用户登录名称,同时勾选OpenAPI调用访问和控制台访问,按页面提示完成其他配置后单击确定。
下载保存此RAM用户的AK/SK信息,后面备用。单击下载CSV文件按钮保存AccessKey信息,页面关闭后将无法再次获取。
授予RAM用户以下权限。
AliyunCADTFullAccess
AliyunECSFullAccess
AliyunEIPFullAccess
AliyunVPCFullAccess
在新增授权页面,授权范围选择整个云账号,搜索并选中以上4个权限策略,单击确定完成授权。
登录RAM用户。在RAM控制台概览页面右侧账号信息区域,单击复制登录地址获取RAM用户的登录URL。使用复制的登录地址打开RAM用户登录页面,在用户名中输入RAM用户完整登录名称(格式为username@company.onaliyun.com),单击下一步。输入用户密码后单击登录。
后续操作通过该RAM用户完成。登录成功后,页面右上角显示当前身份为RAM用户cadt-user。
创建CADT模板
创建应用架构
创建一个如下所述的应用。应用名为APP-001,架构包含EIP、VPC(172.16.0.0/12)、vSwitch(K-172.16.0.0/24)、安全组和ECS(2vCPU 4GiB),部署地域为华北2(北京)。
测试应用部署流程,确保应用配置正确。在应用编辑器页面右上角,单击部署应用。部署完成后,资源部署状态对话框显示所有资源均已部署成功。
部署成功后,为节约资源,释放该应用。单击页面底部的释放全部资源。
创建私有模板
在应用 > 我的应用页面找到刚才创建的应用,单击另存为模板。
设置模板相关信息。在保存模板对话框中,填写模板名称(如APP部署模板)和地域标签(如北京),可勾选设为默认模板,然后单击确认。
在新建 > 我的解决方案页面,找到刚才保存的模板。
单击编辑模板。
在打开的页面中记录模板ID备用。模板ID位于浏览器地址栏URL中的模板标识部分。
本模板ID为:XPQE4N36BLZMOWTB。
在部署服务器上安装CADT SDK
登录部署服务器。在CADT应用详情页面底部,单击远程登录连接到部署服务器。
执行以下命令,检查操作系统和Python版本。
cat /etc/redhat-release python3 --versionWelcome to Alibaba Cloud Elastic Compute Service ! [root@ecs-deploy ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@ecs-deploy ~]# python3 --version Python 3.6.8 [root@ecs-deploy ~]#升级pip版本。
python3 -m pip install --upgrade pip安装CADT SDK。
pip3 install alibabacloud_bpstudio20210931
下载并配置示例脚本
在部署服务器上,下载示例脚本。
yum -y install git git clone https://code.aliyun.com/best-practice/301.git cd 301 ls可以看到以下三个文件:
createAppliationFromTemplate.py
getApplication.py
deployApplication.py
分别编辑打开以上三个脚本,将“b.access_key_id”和“b.access_key_secret”配置为RAM用户的AK和SK。
if __name__ == '__main__': b = config.Config() b.access_key_id = "xxx" b.access_key_secret = "xxx" b.endpoint = "bpstudio.cn-hangzhou.aliyuncs.com" b.region_id = "cn-hangzhou" client = client.Client(b)
通过云速搭API批量部署应用
部署脚本使用说明:
通过模板批量创建应用
python3 createAppliationFromTemplate.py {template-id}说明{template-id}为CADT模板ID。批量部署应用
python3 deployApplication.py {application-id}说明{application-id}为应用ID。查询应用信息
python3 getApplication.py {application-id}
在部署服务器执行以下命令,通过模板批量创建应用。
python3 createAppliationFromTemplate.py XPQE4N36BLZMOWTB根据脚本配置,这里批量创建了10个应用:
[root@ecs-deploy 301]# python3 createAppliationFromTemplate.py XPQE4N36BLZMOWTB /.../CryptographyDeprecationWarning: Python 3.6 is no longer supported... 从模板创建应用: 单机网站经典架构-1, 应用ID: JJQN2VZI8OILKMT9 从模板创建应用: 单机网站经典架构-2, 应用ID: ... 从模板创建应用: 单机网站经典架构-3, 应用ID: ... 从模板创建应用: 单机网站经典架构-4, 应用ID: ... 从模板创建应用: 单机网站经典架构-5, 应用ID: ... 从模板创建应用: 单机网站经典架构-6, 应用ID: ... 从模板创建应用: 单机网站经典架构-7, 应用ID: ... 从模板创建应用: 单机网站经典架构-8, 应用ID: ... 从模板创建应用: 单机网站经典架构-9, 应用ID: ... 从模板创建应用: 单机网站经典架构-10, 应用ID: ...记录以上输出结果的应用ID,在后续步骤部署应用时会用到。
在CADT控制台应用 > 我的应用页面,可以看到批量创建的10个应用。
执行以下命令,部署应用。
python3 deployApplication.py {application-id}例如:
python3 deployApplication.py JJQN2VZI8OILKMT9[root@ecs-deploy 301]# python3 deployApplication.py JJQN2VZI8OILKMT9 /.../CryptographyDeprecationWarning: Python 3.6 is no longer supported... Deploying application: JJQN2VZI8OILKMT9 Creating VPC... Creating vSwitch... Creating SecurityGroup... Creating ECS... Creating EIP bindEIP bindEIP bindEIP bindEIP... 部署任务已提交,资源ID如下: vpc-xxx vsw-xxx sg-xxx i-xxx eip-xxx以相同方式,替换其他9个应用ID进行部署。
执行以下命令,查询应用信息。
python3 getApplication.py {application-id}例如,
python3 getApplication.py JJQN2VZI8OILKMT9[root@ecs-deploy 301]# python3 getApplication.py JJQN2VZI8OILKMT9 /.../CryptographyDeprecationWarning: Python 3.6 is no longer supported... {'ApplicationId': 'JJQN2VZI8OILKMT9', 'Status': 'Deployed_Success', 'CreateTime': '2023-04-21 15:13:11', 'ResourceList': [...], ...}至此,已完成应用的批量部署。