扩展云模板

创建和测试示例应用程序的基本
Automation Assembler
模板后,可将其扩展到多层应用程序,之后该应用程序可部署到开发、测试环境,最终部署到生产环境。
创建基本云模板并对其进行测试。请参见创建基本云模板测试基本云模板
要扩展云模板,请添加以下增强功能。
  • 用于集群应用程序服务器以增加容量的选项
  • 应用程序服务器前面的公用网络和负载均衡器
  • 具有存档存储的备份服务器
  1. 单击
    云模板
    ,然后打开 WordPress-BP 云模板。
    基本模板将显示在设计画布和代码编辑器中。
  2. 使用代码示例和图作为指导进行添加和更改。
    您可以使用 GUI 将新资源拖到画布(如负载均衡器),然后在代码编辑器中完成配置。
    1. 添加
      count
      输入提示,以使 WordPress 应用程序服务器加入集群。
    2. 添加云不可知负载均衡器。
    3. 将负载均衡器连接到 WordPress 应用程序服务器集群。
    4. 添加云不可知的备份计算机。
    5. 将备份计算机连接到专用/内部网络。
    6. 添加云不可知的公用/外部网络。
    7. 将负载均衡器连接到公共网络。
    8. 添加一个云不可知的存储卷,用作存档磁盘。
    9. 将存档磁盘连接到备份计算机。
    10. 为存档磁盘速度添加输入提示。
  3. 使用与基本云模板相同的方式进行部署、测试和更改。
    您可以更新现有部署,甚至部署新实例,以便可以比较部署。
    目标是实现可用于生产部署的可靠、可重用模板。
    所有资源
    空白
完成的扩展云模板代码示例
formatVersion: 1 inputs: env: type: string enum: - env:dev - env:prod - env:test default: env:dev title: Environment description: Target Environment size: type: string enum: - small - medium - large description: Size of Nodes title: Tier Machine Size username: type: string minLength: 4 maxLength: 20 pattern: '[a-z]+' title: Database Username description: Database Username userpassword: type: string pattern: '[a-z0-9A-Z@#$]+' encrypted: true title: Database Password description: Database Password
count: type: integer default: 2 maximum: 5 minimum: 2 title: WordPress Cluster Size description: WordPress Cluster Size (Number of Nodes) storagetype: type: string enum: - storage:general - storage:fast description: Archive Storage Disk Type title: Archive Disk Type
resources: WebTier: type: Cloud.Machine properties: name: wordpress image: ubuntu flavor: '${input.size}'
count: '${input.count}'
constraints: - tag: '${input.env}' networks: - network: '${resource["WP-Network-Private"].id}' assignPublicIpAddress: true cloudConfig: | #cloud-config repo_update: true repo_upgrade: all packages: - apache2 - php - php-mysql - libapache2-mod-php - mysql-client - gcc - make - autoconf - libc-dev - pkg-config - libmcrypt-dev - php-pear - php-dev runcmd: - mkdir -p /var/www/html/mywordpresssite && cd /var/www/html && wget https://wordpress.org/latest.tar.gz && tar -xzf /var/www/html/latest.tar.gz -C /var/www/html/mywordpresssite --strip-components 1 - i=0; while [ $i -le 10 ]; do mysql --connect-timeout=3 -h ${DBTier.networks[0].address} -u root -pmysqlpassword -e "SHOW STATUS;" && break || sleep 15; i=$((i+1)); done - mysql -u root -pmysqlpassword -h ${DBTier.networks[0].address} -e "create database wordpress_blog;" - mv /var/www/html/mywordpresssite/wp-config-sample.php /var/www/html/mywordpresssite/wp-config.php - pecl channel-update pecl.php.net - pecl update-channels - pecl install mcrypt - sed -i -e s/"define( 'DB_NAME', 'database_name_here' );"/"define( 'DB_NAME', 'wordpress_blog' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_USER', 'username_here' );"/"define( 'DB_USER', 'root' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_PASSWORD', 'password_here' );"/"define( 'DB_PASSWORD', 'mysqlpassword' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_HOST', 'localhost' );"/"define( 'DB_HOST', '${DBTier.networks[0].address}' );"/ /var/www/html/mywordpresssite/wp-config.php - sed -i '950i extension=mcrypt.so' /etc/php/7.4/apache2/php.ini - service apache2 reload DBTier: type: Cloud.Machine properties: name: mysql image: ubuntu flavor: '${input.size}' constraints: - tag: '${input.env}' networks: - network: '${resource["WP-Network-Private"].id}' assignPublicIpAddress: true remoteAccess: authentication: usernamePassword username: '${input.username}' password: '${input.userpassword}' cloudConfig: | #cloud-config repo_update: true repo_upgrade: all packages: - mysql-server runcmd: - sed -e '/bind-address/ s/^#*/#/' -i /etc/mysql/mysql.conf.d/mysqld.cnf - service mysql restart - mysql -e "CREATE USER 'root'@'%' IDENTIFIED BY 'mysqlpassword';" - mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';" - mysql -e "FLUSH PRIVILEGES;" attachedDisks: []
LoadBalancer: type: Cloud.LoadBalancer properties: name: myapp-lb network: '${resource["WP-Network-Public"].id}' instances: - '${WebTier.id}' routes: - protocol: HTTP port: '80' instanceProtocol: HTTP instancePort: '80' healthCheckConfiguration: protocol: HTTP port: '80' urlPath: /mywordpresssite/wp-admin/install.php intervalSeconds: 6 timeoutSeconds: 5 unhealthyThreshold: 2 healthyThreshold: 2 internetFacing: true
WP-Network-Private: type: Cloud.Network properties: name: WP-Network-Private networkType: existing
WP-Network-Public: type: Cloud.Network properties: name: WP-Network-Public networkType: public backup: type: Cloud.Machine properties: name: backup flavor: '${input.size}' image: ubuntu networks: - network: '${resource["WP-Network-Private"].id}' attachedDisks: - source: '${resource.ArchiveDisk.id}' ArchiveDisk: type: Cloud.Volume properties: name: ArchiveDisk capacityGb: 5 constraints: - tag: '${input.storagetype}'
定义您自己的基础架构并创建自己的云模板。