compute-nest-best-practice/opensource/chatglm-finetune/template.yaml (373 lines of code) (raw):

ROSTemplateFormatVersion: '2015-09-01' Description: zh-cn: ChatGLM微调ROS模版,支持自定义付费模式、实例规格、VPC配置与安全设置,自动化部署JupyterLab环境于CentOS 7 ECS实例,优化网络带宽与存储,提供公网访问Notebook登录地址。 en: ChatGLM fine-tuned ROS template, facilitating custom payment models, instance specifications, VPC configurations, and security settings. It automates the deployment of a JupyterLab environment on CentOS 7 ECS instances, optimizing network bandwidth and storage. The solution provides public network access to Notebook login URLs. Conditions: CreateVpcConditions: Fn::Equals: - true - Ref: WhetherCreateVpc Parameters: PayType: Type: String Label: en: ECS Instance Charge Type zh-cn: 付费类型 AssociationProperty: ChargeType AssociationPropertyMetadata: LocaleKey: InstanceChargeType Default: PostPaid AllowedValues: - PostPaid - PrePaid PayPeriodUnit: Type: String Label: en: Pay Period Unit zh-cn: 购买资源时长周期 AssociationProperty: PayPeriodUnit AssociationPropertyMetadata: Visible: Condition: Fn::Not: Fn::Equals: - ${PayType} - PostPaid Default: Month AllowedValues: - Month - Year PayPeriod: Type: Number Label: en: Period zh-cn: 购买资源时长 AssociationProperty: PayPeriod AssociationPropertyMetadata: Visible: Condition: Fn::Not: Fn::Equals: - ${PayType} - PostPaid Default: 1 AllowedValues: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 EcsInstanceType: Type: String Label: en: Instance Type zh-cn: 实例类型 AssociationProperty: ALIYUN::ECS::Instance::InstanceType AssociationPropertyMetadata: ZoneId: ${ZoneId} InstanceChargeType: ${InstanceChargeType} AllowedValues: - ecs.gn7i-c16g1.4xlarge - ecs.gn7i-c32g1.8xlarge - ecs.gn7i-c32g1.16xlarge - ecs.gn7i-c32g1.32xlarge - ecs.gn7i-c48g1.12xlarge - ecs.gn7i-c56g1.14xlarge - ecs.gn6e-c12g1.3xlarge - ecs.gn6e-c12g1.12xlarge - ecs.gn6e-c12g1.24xlarge - ecs.gn6i-c4g1.xlarge - ecs.gn6i-c8g1.2xlarge - ecs.gn6i-c16g1.4xlarge - ecs.gn6i-c24g1.12xlarge - ecs.gn6i-c24g1.24xlarge - ecs.gn5-c8g1.2xlarge - ecs.gn5-c8g1.4xlarge ZoneId: Type: String Label: en: Availability Zone zh-cn: 可用区 AssociationProperty: ALIYUN::ECS::Instance::ZoneId WhetherCreateVpc: Type: Boolean Label: en: WhetherCreateVpc zh-cn: 是否新建VPC Default: false VpcCidrBlock: Type: String Label: en: VPC CIDR IPv4 Block zh-cn: 专有网络IPv4网段 Description: zh-cn: VPC的ip地址段范围,<br>您可以使用以下的ip地址段或其子网:<br><font color='green'>[10.0.0.0/8]</font><br><font color='green'>[172.16.0.0/12]</font><br><font color='green'>[192.168.0.0/16]</font> en: 'The ip address range of the VPC in the CidrBlock form; <br>You can use the following ip address ranges and their subnets: <br><font color=''green''>[10.0.0.0/8]</font><br><font color=''green''>[172.16.0.0/12]</font><br><font color=''green''>[192.168.0.0/16]</font>' AssociationProperty: ALIYUN::VPC::VPC::CidrBlock AssociationPropertyMetadata: Visible: Condition: Fn::Equals: - ${WhetherCreateVpc} - true Default: 192.168.0.0/16 VSwitchCidrBlock: Type: String Label: en: VSwitch CIDR Block zh-cn: 交换机子网网段 Description: zh-cn: 必须属于VPC的子网段。 en: Must belong to the subnet segment of VPC. AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock AssociationPropertyMetadata: VpcCidrBlock: VpcCidrBlock Visible: Condition: Fn::Equals: - ${WhetherCreateVpc} - true Default: 192.168.1.0/24 VpcId: Type: String Label: en: VPC ID zh-cn: 专有网络VPC实例ID AssociationProperty: ALIYUN::ECS::VPC::VPCId AssociationPropertyMetadata: Visible: Condition: Fn::Equals: - ${WhetherCreateVpc} - false Default: '' VSwitchId: Type: String Label: en: VSwitch ID zh-cn: 交换机实例ID AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId AssociationPropertyMetadata: VpcId: ${VpcId} ZoneId: ${ZoneId} Visible: Condition: Fn::Equals: - ${WhetherCreateVpc} - false Default: '' InstancePassword: Type: String Label: en: Instance Password zh-cn: 实例密码 Description: en: Server login password, Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in) zh-cn: 服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号) ConstraintDescription: en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in) zh-cn: 长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号) AssociationProperty: ALIYUN::ECS::Instance::Password AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$' MinLength: 8 MaxLength: 30 NoEcho: true SystemDiskCategory: Type: String Label: en: System Disk Category zh-cn: 系统盘类型 AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory AssociationPropertyMetadata: LocaleKey: DiskCategory InstanceType: ${EcsInstanceType} AllowedValues: - cloud_efficiency - cloud_ssd - cloud_essd Default: cloud_essd SystemDiskSize: Type: Number Label: zh-cn: 系统盘空间 (GB) en: System Disk Space (GB) Default: 1024 Resources: EcsVpc: Type: ALIYUN::ECS::VPC Condition: CreateVpcConditions Properties: CidrBlock: Ref: VpcCidrBlock VpcName: Ref: ALIYUN::StackName EcsVSwitch: Type: ALIYUN::ECS::VSwitch Condition: CreateVpcConditions Properties: ZoneId: Ref: ZoneId VpcId: Ref: EcsVpc CidrBlock: Ref: VSwitchCidrBlock EcsSecurityGroup: Type: ALIYUN::ECS::SecurityGroup Properties: # 按照软件名称设置安全组名称 VpcId: Fn::If: - CreateVpcConditions - Ref: EcsVpc - Ref: VpcId # 按照软件监听的端口,设置入方向规则(安全组默认出方向的全部端口都是放行的) SecurityGroupIngress: - PortRange: 8080/8080 Priority: 1 SourceCidrIp: 0.0.0.0/0 IpProtocol: tcp EcsInstanceGroup: Type: ALIYUN::ECS::InstanceGroup Properties: ZoneId: Ref: ZoneId VpcId: Fn::If: - CreateVpcConditions - Ref: EcsVpc - Ref: VpcId VSwitchId: Fn::If: - CreateVpcConditions - Ref: EcsVSwitch - Ref: VSwitchId SecurityGroupId: Ref: EcsSecurityGroup ImageId: centos_7 IoOptimized: optimized InstanceChargeType: Ref: PayType PeriodUnit: Ref: PayPeriodUnit Period: Ref: PayPeriod SystemDiskCategory: Ref: SystemDiskCategory # 系统盘大小可以根据需要调整 SystemDiskSize: Ref: SystemDiskSize MaxAmount: 1 InstanceType: Ref: EcsInstanceType Password: Ref: InstancePassword # 设置公网带宽 InternetMaxBandwidthOut: 5 InstanceName: Fn::Join: - '-' - - Ref: ALIYUN::StackName - '[1,4]' # 如果不需要执行命令,请删除WaitCondition、WaitConditionHandle、InstanceRunCommand WaitConditionHandle: Type: ALIYUN::ROS::WaitConditionHandle Properties: {} WaitCondition: Type: ALIYUN::ROS::WaitCondition Properties: Count: 1 Handle: Ref: WaitConditionHandle # 等待命令执行完成的超时时间 Timeout: 300 InstanceRunCommand: Type: ALIYUN::ECS::RunCommand Properties: InstanceIds: Fn::GetAtt: - EcsInstanceGroup - InstanceIds CommandContent: Fn::Sub: - | #!/bin/bash nohup /root/anaconda3/bin/jupyter lab --allow-root > jupyter.log 2>&1 & # 4. 执行成功回调WaitCondition结束waitCondition的等待 ${CurlCli} -d "{\"Data\" : \"Success\", \"status\" : \"SUCCESS\"}" # 脚本里任何地方如果发现执行失败,使用以下命令返回FAILURE和错误信息 # ${CurlCli} -d "{\"Data\" : \"error message\", \"status\" : \"FAILURE\"}" - CurlCli: Fn::GetAtt: - WaitConditionHandle - CurlCli ContentEncoding: PlainText Type: RunShellScript Timeout: 300 # outputs是根据软件需求定义 # Outputs are defined according to software requirements # 以下是以nginx为例,输出了网站公网访问地址 # The following is an example of nginx, which outputs the public network access address of the website Outputs: endpoint: Description: zh-cn: 对外暴露的公网IP地址 en: Public IP Addresses Label: zh-cn: NoteBook 登陆地址 en: Login Url Value: Fn::Sub: - http://${ServerAddress}:8080/lab - ServerAddress: Fn::Select: - 0 - Fn::GetAtt: - EcsInstanceGroup - PublicIps Metadata: ALIYUN::ROS::Interface: ParameterGroups: ## 参数组的顺序会确定用户创建服务实例页面的参数排列顺序 ## The order of the parameter groups determines the order in which the parameters are arranged on the user creation service instance page ## 此参数组配置将实例规格放在第一位;如果服务可用的实例规格只存在于部分可用区,这种方式可以保证用户先选定目标规格 ## This parameter group configuration puts the instance type first; if the instance type available for the service only exists in some availability zones, this method can ensure that the user first selects the target type - Parameters: - PayType - PayPeriodUnit - PayPeriod Label: default: en: PayType Configuration zh-cn: 付费类型配置 - Parameters: - EcsInstanceType Label: default: zh-cn: ECS实例规格配置 en: ECS Instance Type Configuration - Parameters: - ZoneId Label: default: zh-cn: 可用区配置 en: Zone Configuration - Parameters: - WhetherCreateVpc - VpcCidrBlock - VSwitchCidrBlock - VpcId - VSwitchId Label: default: zh-cn: VPC配置 en: VPC Configuration - Parameters: - InstancePassword Label: default: en: Instance password zh-cn: ECS实例密码配置 - Parameters: - SystemDiskCategory - SystemDiskSize Label: default: en: ECS detail configuration zh-cn: ECS实例详细配置 TemplateTags: - acs:example:ISV软件部署:创建单ECS实例并部署Nginx