Nadat u de vRealize Automation Cloud Assembly-basissjabloon hebt gemaakt en getest voor het voorbeeld van de applicatie, kunt u deze uitbreiden naar een applicatie met meerdere lagen die voor ontwikkelings-, test- en uiteindelijk productiedoeleinden kan worden geïmplementeerd.

Om de cloudsjabloon uit te breiden, voegt u de volgende uitbreidingen toe.

  • Een optie om applicatieservers te clusteren voor een grotere capaciteit
  • Een publiekgericht netwerk en load balancer vóór de applicatieservers
  • Een back-upserver met archiefopslag

Voorwaarden

Maak de basiscloudsjabloon en test deze. Zie Een basiscloudsjabloon maken en Een basiscloudsjabloon testen.

Procedure

  1. Klik op Cloudsjablonen en open de WordPress-BP-cloudsjabloon.
    De basissjabloon wordt weergegeven in het ontwerpcanvas en de code-editor.
  2. Breng toevoegingen en wijzigingen aan met behulp van het codevoorbeeld en de afbeelding.
    Gebruik de grafische gebruikersinterface om nieuwe resources, zoals de load balancer, naar het canvas te slepen en voltooi vervolgens de configuratie in de code-editor.
    1. Voeg de invoerprompt count toe om de WordPress-applicatieserver in een cluster te brengen.
    2. Voeg een cloudonafhankelijke load balancer toe.
    3. Verbind de load balancer met het WordPress-applicatieservercluster.
    4. Voeg een cloudonafhankelijke back-upmachine toe.
    5. Verbind de back-upmachine met het privé-/interne netwerk.
    6. Voeg een cloudonafhankelijk openbaar/extern netwerk toe.
    7. Verbind de load balancer met het openbare netwerk.
    8. Voeg een cloudonafhankelijk opslagvolume toe voor gebruik als archiefschijf.
    9. Verbind de archiefschijf met de back-upmachine.
    10. Voeg de invoerprompt archiveusage toe voor de snelheid van de opslagschijf.
    11. Voeg de invoerprompt archiveDiskSize toe voor de grootte van de opslagschijf.
      Alle resources
  3. Implementeer, test en wijzig op dezelfde manier als voor de basiscloudsjabloon.
    U kunt bestaande implementaties bijwerken of zelfs nieuwe instanties implementeren zodat u implementaties kunt vergelijken.

    Het doel is om een betrouwbare, herhaalbare sjabloon te krijgen die kan worden gebruikt voor productie-implementaties.

Voorbeeld: Voorbeeld van voltooide code voor uitgebreide cloudsjabloon

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
  databaseDiskSize:
    type: number
    default: 4
    maximum: 10
    title: MySQL Data Disk Size
    description: Database Disk Size
  count: type: integer default: 2 maximum: 5 minimum: 2 title: WordPress Cluster Size description: WordPress Cluster Size (Number of Nodes) archiveDiskSize: type: number default: 4 maximum: 10 title: WordPress Archive Disk Size description: Archive Storage Disk Speed archiveusage: type: string enum: - 'usage:general' - 'usage:fast' description: Archive Storage Disk Speed title: Archive Disk Speed
resources:
  DBTier:
    type: Cloud.Machine
    properties:
      name: mysql
      image: ubuntu-16
      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 "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mysqlpassword';"
         - mysql -e "FLUSH PRIVILEGES;"
      attachedDisks: []
  WebTier:
    type: Cloud.Machine
    properties:
      name: wordpress
      flavor: '${input.size}'
      image: 'ubuntu-16'
      count: '${input.count}'
      constraints:
        - tag: '${input.env}'
      networks:
        - network: '${resource["WP-Network-Private"].id}'
          assignPublicIpAddress: true
      storage: disks: - capacityGb: '${input.archiveDiskSize}' name: ArchiveDisk
      cloudConfig: |
        #cloud-config
        repo_update: true
        repo_upgrade: all

        packages:
         - apache2
         - php
         - php-mysql
         - libapache2-mod-php
         - php-mcrypt
         - mysql-client

        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
         - 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 -e s/"define('DB_HOST', 'localhost');"/"define('DB_HOST', '${DBTier.networks[0].address}');"/ /var/www/html/mywordpresssite/wp-config.php
         - service apache2 reload
  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
      constraints:
        - tag: 'type:isolated-net'
        - tag: '${input.env}'
  WP-Network-Public: type: Cloud.Network metadata: layoutPosition: - 2 - 0 properties: name: WP-Network-Public networkType: public constraints: - tag: 'type:public-net' - tag: '${input.env}' backup: type: Cloud.Machine properties: name: backup flavor: '${input.size}' image: 'ubuntu-16' networks: - network: '${resource["WP-Network-Private"].id}' constraints: - tag: '${input.env}' attachedDisks: - source: '${ArchiveDisk.id}' ArchiveDisk: type: Cloud.Volume properties: name: ArchiveDisk capacityGb: 5 constraints: - tag: '${input.archiveusage}' - tag: '${input.env}'

Volgende stappen

Definieer uw eigen infrastructuur en maak uw eigen cloudsjablonen.

Zie Uw vRealize Automation Cloud Assembly-resource-infrastructuur maken en Uw vRealize Automation Cloud Assembly-implementaties ontwerpen.