Après avoir créé et testé un modèle Cloud Assembly de base, vous le développez dans une application à plusieurs niveaux qui peut être déployée vers les phases de développement, de test et éventuellement de production.

Pour développer le modèle de cloud, vous ajoutez les améliorations suivantes.

  • Solution pour mettre en cluster des serveurs d'applications pour une capacité accrue
  • Un réseau public et un équilibrage de charge face aux serveurs d'applications
  • Serveur de sauvegarde avec stockage d'archives

Conditions préalables

Créez le modèle de cloud de base et testez-le. Reportez-vous aux sections Cas d'utilisation de WordPress : créer un modèle de cloud de base et Cas d'utilisation de WordPress : tester un modèle de cloud de base.

Procédure

  1. Cliquez sur Modèles de cloud, puis ouvrez le modèle de cloud WordPress-BP.
    Le modèle de base s'affiche dans le canevas de conception et l'éditeur de code.
  2. Effectuez des ajouts et des modifications, en utilisant l'exemple de code et l'illustration pour vous aider.
    Utilisez l'interface utilisateur graphique pour faire glisser de nouvelles ressources vers le canevas, comme l'équilibrage de charge, puis achevez la configuration dans l'éditeur de code.
    1. Ajoutez une invite d'entrée count pour faire du serveur d'applications WordPress le serveur d'applications WordPress dans un cluster.
    2. Ajoutez un équilibrage de charge indépendant du cloud.
    3. Connectez l'équilibrage de charge au cluster du serveur d'applications WordPress.
    4. Ajoutez une machine de sauvegarde indépendante du cloud.
    5. Connectez la machine de sauvegarde au réseau privé/interne.
    6. Ajoutez un réseau public/externe indépendant du cloud.
    7. Connectez l'équilibrage de charge au réseau public.
    8. Ajoutez un volume de stockage indépendant du cloud pour l'utiliser comme disque d'archive.
    9. Connectez le disque d'archive à la machine de sauvegarde.
    10. Ajoutez une invite d'entrée archiveusage pour la vitesse du disque de stockage.
    11. Ajoutez une invite d'entrée archiveDiskSize pour la taille du disque de stockage.
      Toutes les ressources
  3. Déployez, testez et apportez des modifications de la même manière que pour le modèle de cloud de base.
    Vous pouvez mettre à jour des déploiements existants, voire déployer de nouvelles instances, afin de pouvoir comparer des déploiements.

    L'objectif est d'obtenir un modèle renouvelable et solide pouvant être utilisé pour les déploiements de production.

Exemple : Exemple de code de modèle de cloud développé terminé

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

Que faire ensuite

Définissez votre infrastructure et créez vos propres modèles de cloud.

Reportez-vous aux sections Création d'une infrastructure des ressources Cloud Assembly et Conception de vos déploiements de Cloud Assembly.