Dopo aver creato e testato un modello di vRealize Automation Cloud Assembly di base per l'applicazione di esempio, è possibile espanderlo in un'applicazione a più livelli distribuibile allo sviluppo, al test e infine alla produzione.

Per espandere il modello cloud, aggiungere i seguenti miglioramenti.

  • Un'opzione per i server applicazioni cluster per una maggiore capacità
  • Una rete e un bilanciamento del carico rivolti al pubblico davanti ai server applicazioni
  • Un server di backup con storage

Prerequisiti

Creare il modello cloud di base e testarlo. Vedere Creazione un modello cloud di base e Test di un modello cloud di base.

Procedura

  1. Fare clic su Modelli cloud e aprire il modello cloud WordPress-BP.
    Viene visualizzato il modello di base, nella tela di progettazione e nell'editor di codice.
  2. Apportare aggiunte e modifiche, utilizzando l'esempio di codice e la figura come guida.
    È possibile utilizzare la GUI per trascinare nuove risorsa nella tela, ad esempio il bilanciamento del carico, quindi terminare la configurazione nell'editor di codice.
    1. Aggiungere una richiesta di input count per inserire il server applicazioni WordPress in un cluster.
    2. Aggiungere un bilanciamento del carico indipendente dal cloud.
    3. connettere il bilanciamento del carico al cluster del server applicazioni WordPress.
    4. Aggiungere una macchina di backup indipendente dal cloud.
    5. Connettere la macchina di backup alla rete privata/interna.
    6. Aggiungere una rete pubblica/esterna indipendente dal cloud.
    7. Connettere il bilanciamento del carico alla rete pubblica.
    8. Aggiungere un volume di storage indipendente dal cloud da utilizzare come disco di archivio.
    9. Connettere il disco di archivio alla macchina di backup.
    10. Aggiungere una richiesta di input archiveusage per la velocità del disco di storage.
    11. Aggiungere una richiesta di input archiveDiskSize per le dimensioni del disco di storage.
      Tutte le risorse
  3. Distribuire, testare e apportare modifiche nello stesso modo del modello cloud di base.
    È possibile aggiornare le distribuzioni esistenti o anche distribuire nuove istanze in modo da poter confrontare le distribuzioni.

    L'obiettivo è ottenere un modello coerente e ripetibile che possa essere utilizzato per le distribuzioni di produzione.

Esempio: Esempio di codice del modello cloud di base espanso

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 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}'

Operazioni successive

Definire la propria infrastruttura e creare i propri modelli cloud.

Vedere Creazione dell'infrastruttura delle risorse di vRealize Automation Cloud Assembly e Progettazione delle distribuzioni di vRealize Automation Cloud Assembly.