Después de crear y probar la plantilla básica de Automation Assembler para la aplicación de ejemplo, expándala en una aplicación de varios niveles que se pueda implementar para desarrollo, pruebas y, finalmente, producción.
Para expandir la plantilla de nube, debe agregar las siguientes mejoras.
- Una opción para agrupar en clústeres servidores de aplicaciones para aumentar la capacidad
- Una red pública y un equilibrador de carga delante de los servidores de aplicaciones
- Un servidor de copia de seguridad con almacenamiento de archivos
Requisitos previos
Cree la plantilla de nube básica y pruébela. Consulte Crear una plantilla de nube básica y Probar una plantilla de nube básica.
Procedimiento
Ejemplo: Ejemplo de código de plantilla de nube expandida completada
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}'
Qué hacer a continuación
Defina su propia infraestructura y cree sus propias plantillas de nube.
Consulte Crear la infraestructura de recursos de Automation Assembler y Diseñar las implementaciones de Automation Assembler.