云速搭API模板实现应用架构批量部署

更新时间:
复制 MD 格式

通过云速搭API结合模板可以快速完成应用架构批量部署,提高运维效率。

场景介绍

本实践适合需要将相同的应用架构进行多次批量创建的场景,这里演示模拟部署10套独立的网站后台环境,每一套的基本架构为EIP+ECS。

业务流程

image..png

环境准备

为完成本实践,需要一台具有公网访问能力的ECS作为部署服务器,镜像及版本为CentOS 7.9 64位。本示例中部署服务器配置为8vCPU 16GiB,位于华北2(北京)地域,VPC网段为192.168.0.0/16。

操作步骤

创建RAM用户并授权

说明

为保证信息安全,加强安全防控,这里演示使用RAM用户操作本场景。

  1. 按标签顺序完成配置,创建RAM用户。

    说明

    生产环境建议开启MFA多因素认证。

    在创建用户页面,设置用户登录名称,同时勾选OpenAPI调用访问和控制台访问,按页面提示完成其他配置后单击确定。

  2. 下载保存此RAM用户的AK/SK信息,后面备用。单击下载CSV文件按钮保存AccessKey信息,页面关闭后将无法再次获取。

  3. 授予RAM用户以下权限。

    • AliyunCADTFullAccess

    • AliyunECSFullAccess

    • AliyunEIPFullAccess

    • AliyunVPCFullAccess

    在新增授权页面,授权范围选择整个云账号,搜索并选中以上4个权限策略,单击确定完成授权。

  4. 登录RAM用户。在RAM控制台概览页面右侧账号信息区域,单击复制登录地址获取RAM用户的登录URL。使用复制的登录地址打开RAM用户登录页面,在用户名中输入RAM用户完整登录名称(格式为username@company.onaliyun.com),单击下一步。输入用户密码后单击登录。

  5. 后续操作通过该RAM用户完成。登录成功后,页面右上角显示当前身份为RAM用户cadt-user。

创建CADT模板

创建应用架构

  1. 创建一个如下所述的应用。应用名为APP-001,架构包含EIP、VPC(172.16.0.0/12)、vSwitch(K-172.16.0.0/24)、安全组和ECS(2vCPU 4GiB),部署地域为华北2(北京)。

  2. 测试应用部署流程,确保应用配置正确。在应用编辑器页面右上角,单击部署应用。部署完成后,资源部署状态对话框显示所有资源均已部署成功。

  3. 部署成功后,为节约资源,释放该应用。单击页面底部的释放全部资源。

创建私有模板

  1. 在应用 > 我的应用页面找到刚才创建的应用,单击另存为模板。

  2. 设置模板相关信息。在保存模板对话框中,填写模板名称(如APP部署模板)和地域标签(如北京),可勾选设为默认模板,然后单击确认。

  3. 在新建 > 我的解决方案页面,找到刚才保存的模板。

  4. 单击编辑模板。

  5. 在打开的页面中记录模板ID备用。模板ID位于浏览器地址栏URL中的模板标识部分。

    本模板ID为:XPQE4N36BLZMOWTB。

在部署服务器上安装CADT SDK

  1. 登录部署服务器。在CADT应用详情页面底部,单击远程登录连接到部署服务器。

  2. 执行以下命令,检查操作系统和Python版本。

    cat /etc/redhat-release
    python3 --version
    Welcome 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 ~]#
  3. 升级pip版本。

    python3 -m pip install --upgrade pip
  4. 安装CADT SDK。

    pip3 install alibabacloud_bpstudio20210931

下载并配置示例脚本

  1. 在部署服务器上,下载示例脚本。

    yum -y install git
    git clone https://code.aliyun.com/best-practice/301.git
    cd 301
    ls

    可以看到以下三个文件:

    createAppliationFromTemplate.py

    getApplication.py

    deployApplication.py

  2. 分别编辑打开以上三个脚本,将“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}
  1. 在部署服务器执行以下命令,通过模板批量创建应用。

    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: ...
  2. 记录以上输出结果的应用ID,在后续步骤部署应用时会用到。

  3. 在CADT控制台应用 > 我的应用页面,可以看到批量创建的10个应用。

  4. 执行以下命令,部署应用。

    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
  5. 以相同方式,替换其他9个应用ID进行部署。

  6. 执行以下命令,查询应用信息。

    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': [...],
     ...}

    至此,已完成应用的批量部署。